关于form表单,刷新页面会自动提交的问题. 5C

我有一个form表单,提交到一个java的controller,然后返回一个jsp页面。
表单是这样提交的

 <a href="javascript:void (0)" onclick="document.getElementById('subform').submit();return true">

当我提交后,返回页面过后,我刷新(F5)页面,为什么表单又会重新提交,怎么防止它重新提交?

19个回答

可以使用token机制

搞一个隐藏字段啊,在SUBMIT这里做个CLICK事件,如果手动提交的改变这个隐藏字段的值,服务器可以判断这个值来判断是不是刷新还是提交

不要用转发,用重定向

可以设置return的值为false,这样就不用担心点击提交了

1、form方法是不是get提交,改成post(这种会再次访问一次服务器)
2、阻止F5的刷新(这个F5直接不起作用)

原理:提交表单--发出请求(此时浏览器的地址是:form里的action地址,包含表单信息)--处理器默认转发到相应页面--转发地址栏不变,所以刷新会重复提交

解决:处理器重定向到页面,return "redirect:/index.jsp"; 地址栏变为:/index.jsp,此时怎么刷新都没问题

使用异步提交吧,提交完成后再跳转

String token = TokenProccessor.getInstance().makeToken();//创建令牌
System.out.println("在FormServlet中生成的token:"+token);
request.getSession().setAttribute("token", token); //在服务器使用session保存token(令牌)
request.getRequestDispatcher("/form.jsp").forward(request, response);//跳转到form.jsp页面

页面取出令牌 判断

if ($("#ID")){
$("#ID").text("hi");
}

共19条数据 首页 2
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐