Struts2的token的使用,用到了自定义拦截器
?Struts2表单
?
?
?
<s:debug/><s:form action="customerAction_save" method="post" namespace="/model"> 用户名:<s:fextfield name="username" /><br> <s:token/> 密码: <s:password name="psw" /><br> 电话:<s:textfield name="tel"/><br> <s:submit value="保存" /><br></s:form>
?
<s:token/>
<input type="hidden" name="struts.token.name" value="struts.token"/>
<input type="hidden" name="struts.token value="1KDSLJLDJLSDJLDSDSLDSL" />
?
?------------------------------------------
<package name="model" namespace="/model" extends="struts-default">
?<!--将token拦截器加到默认栈中-->
?<interceptors>
???????????? <interceptor-stack name="tokenStack">
??????????????????????????? <interceptor-ref name="defaultStack"></interceptor-ref>
?
????????????????????? ??? <!--将token拦截器放到默认栈后面-->
??????????????????????? ?<interceptor-ref name="token">
???????????????????????????????? ?<!--说明只对定义的save方法拦截,如果对多个方法进行拦截,可以用逗号分开-->
??????????????????????????????? <param name="includeMethods">save</param>
??????????????????????? </interceptor-ref>
???????????? </interceptor-stack>
?</interceptors>
??? 注意:上边是说 我定义了一个拦截器 tokenStack, 包含defaultStack,和token
虽然进行定义了,但是行不能用
下一步是让我在加载的时候,使用这个拦截器栈
??? <default-interceptor-ref name="tokenStack"></default-interceptor-ref>
?<action name="customerAction_*" model="{1}">
??<result name="add">/model/add.jsp</result>
??<result name="success">/model/success.jsp</result>
??<result name="edit">/model/edit.jsp</result>
??
??<!--表单重复提交 定义的错误页面-->
??<result name="invalid.token">/model/message.jsp</result>
?</action>
</package>
---------------------
message.jsp
<body>
<!--当使用struts的token实现表单重复提交的时候,在出错的jsp中,可以使用<s:actionerror/>用来显示重复提交的信息-->
<s:actionerror/><br>
重复提交
</body>
在struts-message.properties中定义的错误信息