产生表单重复提交的情况:
1:网络延迟,用户重复点击“提交”按钮。
2:表单提交后,点击浏览器【刷新】按钮。
3:表单提交后,点击浏览器【后退】按钮后,再提交。
解决办法:
第1种情况可以通过javascript解决:在点击“提交”后,可以将“提交”按钮设置为disable, 或通过设置变量值,来判断是否重复提交。
第2,3种情况可以通过设置session的token解决:在客户端请求表单时,服务端生成一个token存于session中,同时将这个token返回client。在页面设置一个隐藏属性,用于存放这个token。 在提交表单时,判断client和session中的token是否一致,如果一致,则表示没有重复提交,进行后续的操作(数据的增,删,改,查等)。 注意: 在这之后,服务器断要将session中的token清除。 这样,下一次重复提交时,client和session中的token就不一致了,程序就能判断出这是重复提交。
参考博客:http://www.cnblogs.com/xdp-gacl/p/3859416.html
参考书籍:《深入分析Java Web技术内幕》
转载于:https://blog.51cto.com/goodfuture/1861436