Struts2的token标签防止表单重复提交的思路是这样的:
1、当请求到标有<s:token/>标签的JSP的时候,Struts2会建立一个GUID(全局唯一的字符串)放在session中,并且会成为一个hidden放在form中,这个GUID就是这个hidden的值。
2、在struts.xml文件里配置好的token拦截器会判断客户端form提交的token和session中保存的session是否相等。如果equals=true则执行Action。否则拦截器给值栈中压入actionError对象并设置其属性invaid.token的值,最后返回invaid.token结果,Action对应的方法也不会执行,这个时候在action的result里面配置该类型的结果跳转视图,并在值栈中的ActionError里找到invaid.token在国际化资源对应的值并输出,默认是一串英文(The form has already been processed or no token was supplied, please try again),也可以自行设置。
<s:form name="tag-form" action="tag-form" method="post">
<s:token />
<s:elseif test="getActionErrors()">
<s:actionerror/>
</s:elseif>
<s:textfield name="userName" label="用户名"></s:textfield><br/>
<s:password name="password" label="密码"></s:password><br/>
<s:submit />
</s:form>
struts.messages.invalid.token=请不要重复提交表单
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.custom.i18n.resources" value="messages"/>
<package name="main" extends="struts-default">
<action name="tag-form" class="com.chou.web.TagAction" method="submit">
<interceptor-ref name="token">
<param name="includeMethods">submit</param>
</interceptor-ref>
<interceptor-ref name="paramsPrepareParamsStack"/>
<result>tag.jsp</result>
<result name="invalid.token">tag.jsp</result>
</action>
</package>
</struts>
分享到:
相关推荐
struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...
主要讲解了在structs怎样通过Token令牌解决表单重复提交的问题。附带了擦参考项目。
struts token机制解决表单重复提交
这里是Struts2 中放置表单重复提交的例子。
详解struts2的token机制和cookie来防止表单重复提交 今天在做一个投票系统时要实现防止表单重复提交! 当时就想到了用struts2提供的token机制 struts2的token机制防止表单重复提交: 首先需要在提交的jsp页面(要...
struts2中token限制表单多次提交
详细介绍struts+token机制解决表单重复提交问题。附带相关代码
防止表单重复提交 token eclipse项目
这个示例简单易懂,就是利用token过滤器
NULL 博文链接:https://eleopard.iteye.com/blog/1766851
很好的大家试试吧 看看怎么样
token标签:防用户多次提交表单。 textarea标签:文本域。 updownselct标签:支持选项内容的上下移动。 password表单:密码表单域。 textfield标签:单行文本输入框。 非表单标签: actionerror标签:输出...
简单使用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 性能...
token标签:防用户多次提交表单。 textarea标签:文本域。 updownselct标签:支持选项内容的上下移动。 password表单:密码表单域。 textfield标签:单行文本输入框。 非表单标签: actionerror标签:输出...
本书内容非常全面,涵盖了众多书籍所有知识要点,并结合作者自己经验总结而编写,内容相当丰富,是查找技术的好帮手及学习Struts2的不二选择 众所周知,一般书籍为了销售需要,往往很少的知识点,却需要添加大量的...