论坛首页 Java企业应用论坛

如何避免重复提交呢? struts 重复提交 刷新也重复提交,多次单击提交按钮也重复提交

浏览 29268 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-11-16  
如果避免重复提交呢?
请知道的详细说下,或者把文章的链接地址写下也好。
应用环境是tomcat,struts1.2,jsp,hibernate
下面是问题,请看到后能给一个解决方案。
1。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交。然后服务器处理完毕返回到一个新的列表页面。此时刷新页面,则服务器当作重复提交对待。

2。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交。然后服务器处理时发生一个异常,于是返回一个错误页面,告诉用户哪个字段有错误,然后用户点击返回按钮,返回上一个页面,再次提交页面时,用户器则把这次的提交当作了重复提交对待。

3。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交,服务器还没有处理完毕时,用户等不及了,再次单击提交按钮,则struts的token机制不会把此当作重复提交,而是会两样处理这次的提交。

   发表时间:2007-11-16  
rusult类型更改一下就好了
0 请登录后投票
   发表时间:2007-11-16  
lz用的是Struts1.2而不是2.0哦,所以没有Result只有forward。

1。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交。然后服务器处理完毕返回到一个新的列表页面。此时刷新页面,则服务器当作重复提交对待。

token机制就能处理呀?


2。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交。然后服务器处理时发生一个异常,于是返回一个错误页面,告诉用户哪个字段有错误,然后用户点击返回按钮,返回上一个页面,再次提交页面时,用户器则把这次的提交当作了重复提交对待。
重置token标记


3。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交,服务器还没有处理完毕时,用户等不及了,再次单击提交按钮,则struts的token机制不会把此当作重复提交,而是会两样处理这次的提交。
用户点击后把按钮设定为disable
0 请登录后投票
   发表时间:2007-11-16  
引用
2。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交。然后服务器处理时发生一个异常,于是返回一个错误页面,告诉用户哪个字段有错误,然后用户点击返回按钮,返回上一个页面,再次提交页面时,用户器则把这次的提交当作了重复提交对待。
重置token标记


可是点击返回按钮的时候,只是浏览器在起作用,没有到action中去,如何重置token?

0 请登录后投票
   发表时间:2007-11-16  
绝大多数情况是不需要使用token的.

我不知道token适用于什么情况,反正我也没用过.不过我想它既然存在,应该有道理的吧.

重复提交是个经典的老问题了,但是似乎于struts无关吧?你自己直接写jsp,或是servlet,不是照样存在这个问题吗?
这是个对MVC的理解的问题.

做完一个事情,比如处理表单提交,插入了一条记录.之后页面要流转到显示列表的页的时候,应该是一个 redirect,而不是forward.

struts1 的forward 是可以设置的, 好象是  redirect=true,或着是 type=redirect ,具体我忘了.好久没用了.

设置了就自动是redirect了..
0 请登录后投票
   发表时间:2007-11-16  
yyjn12 写道
绝大多数情况是不需要使用token的.

我不知道token适用于什么情况,反正我也没用过.不过我想它既然存在,应该有道理的吧.

重复提交是个经典的老问题了,但是似乎于struts无关吧?你自己直接写jsp,或是servlet,不是照样存在这个问题吗?
这是个对MVC的理解的问题.

做完一个事情,比如处理表单提交,插入了一条记录.之后页面要流转到显示列表的页的时候,应该是一个 redirect,而不是forward.

struts1 的forward 是可以设置的, 好象是  redirect=true,或着是 type=redirect ,具体我忘了.好久没用了.

设置了就自动是redirect了..
楼上,你没有看具体的应用环境,我的应用程序就是使用了struts1.2框架的。而struts又提供了解决这个重复提交的问题的机制。
0 请登录后投票
   发表时间:2007-11-17  
我们是用了最笨的方法.是针对refresh页面时重复提交的问题.当进入一张表单时往session写个值设为true,提交后在action处理的时候往session里设这个值为false,在方法里判段它为true时才执行数据库等操作.就杜绝了重复提交.
0 请登录后投票
   发表时间:2007-11-28  
两种方法都是可行的
1.使用token
2.forward设置redirect=true
0 请登录后投票
   发表时间:2007-11-28  
forward设置redirect=true有时刷新过快好像还能发生重复提交
token使用起来老是觉着不是十分顺手,但一般处理重复提交还是使用token,心里觉着踏实些
0 请登录后投票
   发表时间:2007-11-28  
post 。。。action名。。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics