问题描述
各位高手,请指教:我现在项目用到springmvccontroller是用注解方式实现的对表单验证也是用注解方式如何验证失败需要表单回写的以上功能都没什么问题,现在问题是如何防止表单重复提交?controllerdemo:@RequestMapping("/adAddsubmit.html")publicModelAndViewaddsubmit(HttpServletRequestrequest,@ModelAttribute("adInfoForm")@ValidfinalAdInfoFormadInfoForm,finalBindingResultresult){请指教,谢谢!
解决方案
解决方案二:
可以写一个令牌放到session里面在服务器处理请求的时候会话中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生。
解决方案三:
如果web项目分布式发布在多个tomcat中,用session来存储令牌,会不会有不能命中的情况??如果web项目只布署在一个tomcat中,当然不会有这个问题引用1楼miaomiao_j的回复:
可以写一个令牌放到session里面在服务器处理请求的时候会话中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发……
解决方案四:
引用2楼huqing2010的回复:
如果web项目分布式发布在多个tomcat中,用session来存储令牌,会不会有不能命中的情况??如果web项目只布署在一个tomcat中,当然不会有这个问题引用1楼miaomiao_j的回复:可以写一个令牌放到session里面在服务器处理请求的时候会话中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端……
换cookie?
解决方案五:
引用2楼huqing2010的回复:
如果web项目分布式发布在多个tomcat中,用session来存储令牌,会不会有不能命中的情况??如果web项目只布署在一个tomcat中,当然不会有这个问题引用1楼miaomiao_j的回复:可以写一个令牌放到session里面在服务器处理请求的时候会话中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客……
那你用uuid编码吧这样就绝对不会有重复的令牌了
解决方案六:
该回复于2011-06-03 08:41:55被版主删除
时间: 2024-08-24 11:59:44