| 本页主题: 利用struts2 session防止数据重复提交 |
|
| |
|
扬戈

积分:60
发表主题:56
|
| 发表于 2009-06-23 12:50 资料 |
楼主 |
目的是防止数据重复提交到库表 struts2本身有 <s:token/>拦截器来做到这点的,但项目里面别的问题,在提交表单时只能去掉这个拦截器。 所以想在action中提交表单的方法里面利用session来判断是否是重复提交 在调用后台service执行操作时,先判断session中是否有你放进去的那个值,没有才执行后台操作 成执行操作,往session里put一个值 但是这样session里的值会一直在,再一次填写并提交表单时会因为session没有清空而无法再保存数据 不知道session里什么时候放值,什么时候把值清掉呢? 我试了好多次都不成 回复1: 该回复于2009-06-22 09:30:22被管理员删除 回复2: 问题得到解答的机会是越来越小了 再也不是以前朋友所鼓吹的"在CSDN提问,就能解决问题"
回复3: 还可以 让提交一次后按钮不可用, 验证码等 回复4: 那就自己模仿一下 <s:token>拦截器的实现原理啊,每次提及表单时在session中存放一个随机的字符串,下次提交时对比一下如果两次的字符串一样的便是重复提交了啊,session中如果key值一样的话,多次存入的value值会覆盖的 回复5: 防止重复提交不是用的这个session吧, 你在你的action里面写个- Java code
saveToken(request);
就可以了啊 回复6: 这个问题每个人用的方法不一样。这又篇文章你看看 http://peixun.96963.com/resourse/tutorial-43.html 回复7: 采用JS控制不可靠 别的方法在struts2里不行 如果struts2还采用struts1的token令牌,就没有任何意义了。整的那么繁琐。那是技术的倒退。。。 回复8: struts2的令牌很简单 页面加个标签 配置一个拦截器 就ok了 回复9: 你可以使用同步令牌机制来防止表单的重复的提交,我上次也遇到这个问题了,后来就是用的这个办法! 回复10: 访问页面的时候往session中放入一个值,对应的在表单中加入一个hidden(与session的值一致), 提交到action中,如果session中对应的key有值并与提交的数据一致的话执行操作, 执行完成后清除session中的值。否则提示重复提交
|
|
|
|
|