关于struts2的token拦截器的说明

原理:struts2的token interceptor是关于重复提交的拦截器,其实现是:在form表单中加入token标签,如下:

 

1     <form action="user" method="post">
2         name:<input name="name">
3         age:<input name="age">
4         <input type="submit" value="add">
5         <s:token></s:token>
6     </form>

 

会在服务器传回来的静态页面中找到一个hidden 标签,在此标签中生成了一个随机码,会加入到session中去,当提交完整个页面之后会在session中把它删掉,当在此想提交的时候,在session中找不到这个对象,从而避免重复提交。

其中struts.xml中的配置如下:

    <package name="test" namespace="/" extends="struts-default">    
    <action name="input" class="com.wbs.InputAction">
            <result>/input.jsp</result>                        
        </action>
        <action name="user" class="com.wbs.UserAction">
            <result>/addOK.jsp</result>            
            <interceptor-ref name="defaultStack"></interceptor-ref>
            <interceptor-ref name="token"></interceptor-ref>
            <result name="invalid.token">/error.jsp</result>
        </action>
    </package>
访问的时候先访问input这个页面,在这个页面中输入要提交的数据,则会找到相应的action去处理。但是需要注意的是在<intercptor-ref name="defaultStack"/>这个一定要在<interceptor-ref name="token"/>这个之前,因为token是在默认的加载完了之后去继续处理,在<interceptor-ref name="token"/>这个之后,要加上<result name="invalid.token">/xxx.jsp</result>。因为当token拦截器拦截住一个页面的时候,会默认的找invalid.token这个action,吧处理的结果交给这个aciton去处理。

猜你喜欢

转载自blog.csdn.net/itxiaobaibai/article/details/79939530