1.表单提交到一个servlet、然后servlet 转发到一个页面,浏览器看到了成功页面,因为是转发 在,服务器端处理,所以,浏览器的路径还是请求servlet的路径,此时如果刷新,就等于重新发了一次请求。重复提交了
2.第二种情况是,由于网络慢或者是后台处理需要时间,没有 返回之前,又再次点击提交按钮。
3.第三种,我先点返回,再点击提交。也算是重复提交。其实第三种就和第二种一样。
第一种情况的解决:将转发换成重定向。
第二种怎么处理呢,
用session ,在表单页面我们就把session 中想存储现在的毫秒数 用attribute存 token
然后在表单页面放一个隐藏域,在提交的时候把和session中存的值一样。传过来。
我们拿到隐藏域的值,和session中的值作比较。如果一样我们就把session中的remove 这样,前端和后端就无法对应。就是重复提交了
trusts1 的组件和这个实现大致相同。
如果是前后端分离的项目。我们怎么处理。也就是在提交的时候要校验一下唯一的标识,如果这个标识出现过了。我们就说是重复提交了。可以用用用户的唯一标识先区分用户,然后再对比页面的唯一标志。这个只是自己的想法没有验证