Struts2中利用token标签实现防止表单重复提交
我们需要做的步骤如下:
1.在所需要实现此功能的表单中添加token标签;
2.在Struts.xml文件中配置拦截器;
两种方式:
token :需要制定跳转页面 如: <result name="invalid.token">/error.jsp</result> (error.jsp是可以变的,其他的都是固定的)
tokenSession:不需要制定跳转页面,重复提交的时候停留在本页面,但也不会出现重复的数据!
3.在拦截器里面添加要拦截的对应的action
4.有的时候需要配置全局默认拦截器,下面有例子:
配置默认全局默认拦截器(采用的是tokenSession)
<interceptors>
<interceptor-stack name="mystack">///声明全局拦截器
<interceptor-ref name="defaultStack"></interceptor-ref>///只要自己改了或者声明了拦截器,都要写这部,如果什么都没有改,可以不用写!
<interceptor-ref name="tokenSession">
<param name="includeMethods">update</param>///对名为update的action进行拦截
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mystack">///默认了mystack为全局拦截器
</default-interceptor-ref>
下面采用token方法:(唯一不同点就是要指定跳转页面)
<interceptors>
<interceptor-stack name="mystack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="tokenSession">
<param name="includeMethods">update</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mystack">
</default-interceptor-ref>
<global-results>
<result name="main">/main.jsp</result>
<result name="invalid.token">/error.jsp</result> ///这里是指跳转到error.jsp中去
</global-results>