struts2 token拦截器防止表单重复提交
2012-03-02 21:34
387 查看
>======================================================< 0.struts2的token是什么? struts2的token是用来防止表达的重复提交而定制的拦截器,token只是这个拦截器的别名而已 token有很多种意思如记号,符号等都可称为token。 防止表单重复提交的实现是通过在表单中添加一个隐藏域然后在这个隐藏域中保存一个记号,这个记号是自动生成的 并且是唯一的,在第一次提交后使用httpsession验证这个记号是否在httpsession中存在,如果我们重复提交之后就能 阻止重复提交。 ->这两个是拦截器是都是仿制表单重复提交的实现 >org.apache.struts2.interceptor.TokenInterceptor >org.apache.struts2.interceptor.TokenSessionStoreInterceptor. <interceptor name="token" class="org.apache.struts2.interceptor.TokenInterceptor"/> <interceptor name="tokenSession" class="org.apache.struts2.interceptor.TokenSessionStoreInterceptor"/> >======================================================< //>>必须使用struts标签才能够做到表单的重复提交验证 //<font size="10">login</font> // <s:form method="post" action="token/userLoginAction!login"> // <s:textfield name="username" value="zhangsan"></s:textfield> // <s:textfield name="password" value="pwd"></s:textfield> // // <!--****************************************--> // <!--//这个tag很重要他会在当前请求对应的session中为这个表单创建一个唯一的标示符一旦 // 提交这个值将会改变如果用没有刷新的页面去提交就会导致重复提交然后跳转到重复提交页面 --> // <s:token></s:token> // <!--****************************************--> // // <s:submit value="login"></s:submit> // </s:form> >======================================================< >生成的html代码 >======================================================< <font size="10">login</font> <form id="userLoginAction!login" name="userLoginAction!login" action="token/userLoginAction!login" method="post"> <input type="text" name="username" value="zhangsan" id="userLoginAction!login_username"/> <input type="text" name="password" value="pwd" id="userLoginAction!login_password"/> <input type="hidden" name="struts.token.name" value="struts.token" /> <input type="hidden" name="struts.token" value="7Y4I0POETFZPLK4BVK45RZ7GALAL6MHR" /><!-- 对应到这次回话生成的唯一标示符--> <input type="submit" id="userLoginAction!login_0" value="login"/> >======================================================< >action配置 >======================================================< <package name="preventDoublePost" extends="struts-default" namespace="/token"> <action name="userLoginAction" class="com.zyb.web.user.UserLoginAction"> <interceptor-ref name="defaultStack"/><!-- 需要注意拦截器栈的配置顺序--> <interceptor-ref name="token"/><!-- 这就是用来防止表单重复提交的拦截器--> <result name="invalid.token">../doublePost.jsp</result><!-- 需要注意的是名字必须为invalid.token--> <result name="success">../fileupload_success.jsp</result> </action> </package> >======================================================< >action代码和普通的action没什么区别还是正常使用 >======================================================< public class UserLoginAction extends ActionSupport { public String login(){ System.out.println("login successs"); return this.SUCCESS; } } >======================================================<
相关文章推荐
- Struts2——"token"拦截器(防止表单重复提交)
- Struts2中防止表单重复提交的两种方式及token拦截器的原理及作用
- 使用struts2的token机制和cookie来防止表单重复提交
- 防止表单重复提交(拦截器)一些struts2标签的使用
- Struts2 <s:token>防止表单重复提交 %{}
- 基于struts2的令牌拦截器,防止表单重复提交
- struts2防止表单重复提交(s:token)
- 不用struts2的token机制,手动防止表单数据重复提交
- struts2利用token和tokenSession实现防止表单重复提交的具体代码
- struts2中采用拦截器防止表单重复提交
- 不用struts2的token机制,手动防止表单数据重复提交
- 使用Struts2的token机制和Cookie来防止表单重复提交
- struts2-令牌拦截器防止表单重复提交
- Struts2学习10--防止表单的重复提交token标签和tokenSession
- struts2中token防止重复提交表单
- Struts2标签之token防止表单重复提交
- Struts2用token防止表单数据重复提交
- 不用struts2的token机制,手动防止表单数据重复提交
- 详解struts2的token机制和cookie来防止表单重复提交
- struts2_大纲09_token防止表单重复提交