Struts2标签之token防止表单重复提交
2015-11-25 00:00
645 查看
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),也可以自行设置。
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>
相关文章推荐
- 表格标签table深入了解
- WEB标准网页布局中尽量不要使用的HTML标签
- 如何使用jquery easyui创建标签组件
- web标准知识――用途相似的标签
- h1标签的使用技巧
- HTML代码中标签的全部属性 中文注释说明
- jQuery EasyUI 布局之动态添加tabs标签页
- jquery 实现两Select 标签项互调示例代码
- jQuery获取标签文本内容和html内容的方法
- JavaScript获取并更改input标签name属性的方法
- css样式标签和js语法属性区别
- struts2 jquery 打造无限层次的树
- struts2入门Demo示例
- JSP中param标签用法实例分析
- 通过Ajax两种方式讲解Struts2接收数组表单的方法
- jsp之c标签用法实例分析
- ajax交互Struts2的action(客户端/服务器端)
- struts2 spring整合fieldError问题
- Struts2的s:radio标签使用及用jquery添加change事件
- PHP令牌 Token改进版