• token拦截器用于解决表单的重复提交。
• 使用步骤:
1、在表单所在的JSP页面中使用<s:token/>标签; 该标签可生成token值;
注意:当你在表单所在的JSP页面中使用<s:token/>标签进行配置之后,会出现两个隐藏的<input>标签:
<input type="hidden" name="struts.token.name" value="token">
<input type="hidden" name="token" value="CLH6JFX8DFWHLLSKUDRZ1A8M1X3AL5X9">
value="CLH6JFX8DFWHLLSKUDRZ1A8M1X3AL5X9"就是token拦截器生成的令牌
2、在struts.xml中配置token拦截器;该拦截器自动检查token值是否一致,通常将其配置在defaultStack之后;
<!-- 自定义拦截器栈 -->
<interceptor-stack name="myStack2">
<interceptor-ref name="time"></interceptor-ref>
<interceptor-ref name="auth"></interceptor-ref>
<interceptor-ref name="auth2"></interceptor-ref>
<!--
token拦截器用于检查处理客户端多次提交重复数据
<interceptor-ref name="token"></interceptor-ref>
如果 token 拦截器在默认拦截器之前定义,则struts默认的输入校验就不会执行了
由于页面的请求已经被token拦截器拦截了
-->
<interceptor-ref name="defaultStack"></interceptor-ref>
<!--
token拦截器用于检查处理客户端多次提交重复数据
token拦截器要在defaultStack 拦截器栈之后进行,否者validate方法不能执行
-->
<interceptor-ref name="token"></interceptor-ref>
</interceptor-stack>
3、在struts.xml文件中配置<result name=“invalid.token”>;指明表单重复提交时跳转的页面路径;
<result name="invalid.token">/prd/prd_add.jsp</result>
4、在JSP页面中使用<s:actionerror/>显示错误信息。
注意:
在form表单添加token拦截器时,需要将<token></token>标签添加到form表单里面,如果定义在form表单之外,页面会在执行时,就会检测重复提交的问题,表单一次也不能提交成功
【示例】
注:消息内容来自于struts-message.properties文件,key为struts.messages.invalid.toke
网友评论