如果避免重复提交呢?
请知道的详细说下,或者把文章的链接地址写下也好。
应用环境是tomcat,struts1.2,jsp,hibernate
下面是问题,请看到后能给一个解决方案。
1。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交
。然后服务器处理完毕返回到一个新的列表页面。此时刷新页面,则服务器当作重复提交对待。
2。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交
。然后服务器处理时发生一个异常,于是返回一个错误页面,告诉用户哪个字段有错误,然后用户点击返回按钮,返回上一个页面,再次提交页面时,用户器则把这次的提交当作了重复提交对待。
3。如果点击一次提交按钮后,服务器开始处理,在后台的代码中使用struts的token机制控制重复提交
,服务器还没有处理完毕时,用户等不及了,再次单击提交按钮,则struts的token机制不会把此当作重复提交,而是会两样处理这次的提交。
jsp 中插入代码 <s:taken/>
<form name="form" id="creditChangeform" method="post">
<s:token></s:token>
</form>
struts.xml中配置
<action name="addcashpoint" class="com.action.member.MemberCashPointAction" method="addCashPoint">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="token"/>
<result name="invalid.token">/WEB-INF/error.jsp</result>
</action>
Web应用的无限制特性会给你的应用带来很多问题。这里的问题是客户端控制
着访问Web应用的请求,你可能得到非预期的不同顺序的Web应用请求,或者多次得到相同的请求。当用户不止一次单击Web表单的提交按钮时就会发生这个
问题。因为在每次单击时浏览器都会发送表单的请求信息,或者表单提交成功并显示新页面以后,你单击重新加载按钮也会发生问题。这种情况相当危险,因为表单
提交是要求服务器完成某种操作的信号,并且许多action(比如,在两个银行账户之间转账)不应该执行多次。
WebWork的一个高级特性是默认提供检查重复提交的机制,WebWork可以为每个表单提供一个独一无二
的标记(token)。WebWork通过以下方式支持这个特性。首先WebWork为视图端提供一个<ww:token>JSP标签,然后
在action运行之前使用interceptor检验表单标记(token)是否正确。如图15-4所示,这两个部分
(<ww:token>和interceptor)通过保存在session中的状态一起工作,然后在允许action运行之前检查标记
(token)的名称和值是否正确。请注意,表单标记(token)只是解决问题的一个部分。为了最大可能地减少用户偶尔重新提交表单的机会,你在处理完
提交的表单以后应该使用redirect重新转发结果。
图15-4 标记(token)标签和标记(token)interceptor在一起工作,
用于在action每次执行前验证token
分享到:
相关推荐
用struts的token解决重复提交问题
利用Token机制解决重复重复提交
在struts 中可以通过token 来解决重复提交的问题。
struts token机制解决表单重复提交
主要讲解了在structs怎样通过Token令牌解决表单重复提交的问题。附带了擦参考项目。
详细介绍struts+token机制解决表单重复提交问题。附带相关代码
视频部分 下载前请阅读博客文章详细 博文链接:https://dlivan.iteye.com/blog/69717
自定义封装注解类,(生成token存放到redis中)通过注解的方式解决API接口幂等设计防止表单重复提交
struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...
本实例主要是用<s:token/>标签来实现重复提交的。 使用方法: 部署项目,浏览器中输入访问地址: http://localhost:8080/chongfutijiao/login.jsp 随便在输入框中输入文字,点击提交。 然后就会跳到提交成功页面,...
利用struts1的令牌来解决页面的重复提交问题
NULL 博文链接:https://eleopard.iteye.com/blog/1766851
很好的大家试试吧 看看怎么样
简单的struts2令牌token实例 方便应用 不懂token也可以参考学习 主要用于解决重复提交的问题
struts 技巧运用 1:利用Token解决重复提交 2:copyProperties 3:文件上传 4:等
使用sessionID和时间戳作为标识,关键代码如下: 代码如下:public class SswpdjAction extends BaseAction{ public String execute(){ /**业务代码*... } public String reSave(){ if(this.token != null && thi
用户提交表单以后,点击浏览器后退按钮返回表单页面,这个时候浏览器会直接从缓存中取出页面,因此token验证一定是通不过的。 网上有许多种办法可以绕过这个问题,比如用location.replace()方法来替换当前历史记录,...
3,token机制:由于重复点击或者网络重发,或者nginx重发等情况会导致数据被重复提交。前端 在数据提交前要向后端服务的申请token,token放到 Redis 或 JVM 内存,token有效时间。提交后 后台校验token,同时删除...