在实际应用当中我们经常会遇到在客户端表单会重复提交问题,发生重复提交表单的原因有以下几点:
1、多次点击submit按钮
2、在提交后多次刷新页面
3、URL回车
struts2在使用的过程中会出现表单重复提交的问题,这一问题在某些场合将会造成非常严重的后果。如何避免这一问题的发生,以下有三种方法可以解决。
-
改变result的type类型为redirect
struts2 的默认result类型为dispatcher,当用户将信息提交到服务器,服务器响应采用forward方式调转到下一个页面后,此时地址栏中显示的是 上个页面的URL,若刷新当前页面,浏览器会将再次提交用户先前输入的数据,就会再次出现表单重复提交的问题。如果选择redirect方式跳转页面,这 样就不会出现重复提交的问题;
缺点:redirect跳转无法满足开发过程中的一些需求。
-
采用令牌方式 <s:token />
- <form id="login_form" method="post" action="userAction!login">
- <s:token></s:token>
- 用 户<input type="text" name="username" placeholder="输入教工号或学号" />
- 密 码<input type="password" name="password" placeholder="输入密码" />
- <div id="btn">
- <a id="loginbutton" href="javascript:void(0)" onclick="login_submit()">登录</a>
- <a href="javascript:void(0)" onclick="login_reset()">清空</a>
- </div>
- </form>
- <action name="userAction" class="com.yingjun.sharing.action.UserAction" >
- <interceptor-ref name="myStack" />
- <interceptor-ref name="token" />
- <result name="invalid.token">/WEB-INF/jsp/login.jsp</result>
- <result name="input">/WEB-INF/jsp/register.jsp</result>
- <result name="regsuccess">/WEB-INF/jsp/login.jsp</result>
- </action>
-
采用令牌方式2 <s:token />
- <action name="userAction" class="com.yingjun.sharing.action.UserAction" >
- <interceptor-ref name="tokenSession" >
- <param name="includeMethods">register</param>
- </interceptor-ref>
- <interceptor-ref name="myStack"/>
- <result name="input">/WEB-INF/jsp/register.jsp</result>
- <result name="regsuccess">/WEB-INF/jsp/login.jsp</result>
- </action>
相关推荐
struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...
struts token机制解决表单重复提交
这里是Struts2 中放置表单重复提交的例子。
详细介绍struts+token机制解决表单重复提交问题。附带相关代码
主要讲解了在structs怎样通过Token令牌解决表单重复提交的问题。附带了擦参考项目。
struts2中token限制表单多次提交
详解struts2的token机制和cookie来防止表单重复提交 今天在做一个投票系统时要实现防止表单重复提交! 当时就想到了用struts2提供的token机制 struts2的token机制防止表单重复提交: 首先需要在提交的jsp页面(要...
这个示例简单易懂,就是利用token过滤器
防止表单重复提交 token eclipse项目
很好的大家试试吧 看看怎么样
NULL 博文链接:https://eleopard.iteye.com/blog/1766851
简单使用struts2,Hibernate 3实现注册模块 另外使用token方式防止表单重复提交 使用hbm2ddl.auto,透过pojo产生数据库表
15.3 使用令牌防止表单重复提交 313 15.3.1 使用s:token/表单标签 313 15.3.2 令牌拦截器规则的例外 314 15.4 自动显示等待页面 316 15.5 完成CRUD操作的一个动作 317 15.5.1 CRUD 317 15.5.2 拦截器和接口 318 ...
第15章防止重复提交 252 15.1 标记管理 252 15.2 使用Token拦截器 253 15.3 使用Token Session拦截器 256 15.4 小结 257 第16章调试与性能分析 258 16.1 debug标签 258 16.2 Debugging拦截器 259 16.3 性能...
本书内容非常全面,涵盖了众多书籍所有知识要点,并结合作者自己经验总结而编写,内容相当丰富,是查找技术的好帮手及学习Struts2的不二选择 众所周知,一般书籍为了销售需要,往往很少的知识点,却需要添加大量的...
token标签:防用户多次提交表单。 textarea标签:文本域。 updownselct标签:支持选项内容的上下移动。 password表单:密码表单域。 textfield标签:单行文本输入框。 非表单标签: actionerror标签:输出...
第15章 防止重复提交 252 15.1 标记管理 252 15.2 使用Token拦截器 253 15.3 使用Token Session拦截器 256 15.4 小结 257 第16章 调试与性能分析 258 16.1 debug标签 258 16.2 Debugging拦截器 259 16.3 性能分析 ...