美文网首页
使用预定义的token拦截器

使用预定义的token拦截器

作者: 黎涛note | 来源:发表于2017-12-21 16:19 被阅读0次
• 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

相关文章

网友评论

      本文标题:使用预定义的token拦截器

      本文链接:https://www.haomeiwen.com/subject/zhpwwxtx.html