如何配置自定义struts2拦截器

2 篇文章 0 订阅
1 篇文章 0 订阅

自定义特定action不被拦截的拦截器

1.在页面请求一个不被拦截的action

 </head>
 <%
 long t=new Date().getTime();
 %> 
 <body>
 <img id="verifyCodeImg" src="<%=path%>/common/action/CommonAction/generateRandomCode.action?t=<%=t%>"/>
 
2.在spring配置中定义拦截处理的bean:
 <bean id="role2VerifyInterceptor" class="interceptor.Role2VerifyInterceptor"></bean>

3.在struts2配置中,自定义不被拦截的action拦截器:
 <package name="selfDefine-default" extends="struts-default">
  <interceptors>
   <interceptor name="role2VerifyInterceptor" class="role2VerifyInterceptor">
    <!-- 拦截器不拦截的action后缀 -->
    <param name="passActionSuffix">
     /common/action/CommonAction/generateRandomCode.action
    </param>
   </interceptor>
   <interceptor-stack name="WenxStack">
    <interceptor-ref name="role2VerifyInterceptor"/>
   </interceptor-stack> 
  </interceptors> 
  <default-interceptor-ref name="WenxStack"/>
 </package>

4.在struts2配置不被拦截action的业务逻辑分发时,引用上面的自定义的拦截器; 
 <package name="common" namespace="/common" extends="selfDefine-default">
  <action name="generateRandomCode" class="commonAction" method="generateRandomCode">
  </action>
 </package>

5.在Role2VerifyInterceptor实现struts2拦截器中AbstractInterceptor的intercept方法
  public class Role2VerifyInterceptor  extends AbstractInterceptor{
 
  @Override
  public String intercept(ActionInvocation actionInvocation) throws Exception {
   HttpServletRequest request = ServletActionContext.getRequest();
   String url = request.getRequestURI();
   
   //不拦截的
   if(!checkNeedInterceptor(url)){
    return actionInvocation.invoke();
   }else{
    return "";
   }
  }
     
  /**
   * 判断当前url和配置url是否不匹配
   * @param url
   * @return  不匹配true 匹配 false
   */
  private boolean checkNeedInterceptor(String url){
   if(null==passActionSuffix||"".equals(passActionSuffix)){
    return true;
   }else{
    if(passActionSuffixes.length==0){
     passActionSuffixes = passActionSuffix.replaceAll("\\s","").split(",");
    }
    for(String passAction:passActionSuffixes){
     if(url.endsWith(passAction)){
      return false;
     }
    }
   }
   return true;
  }   
   private String passActionSuffix;
  public String getPassActionSuffix() {
   return passActionSuffix;
  }
  public void setPassActionSuffix(String passActionSuffix) {
   this.passActionSuffix = passActionSuffix;
  } 
   
  }
 
  小结:
 1.页面请求不被拦截的action;
 2.在struts2的自定义拦截器,即不被拦截action的拦截器;
 3.在struts2配置不被拦截action的业务逻辑分发时,引用上面的自定义的拦截器
 4.在spring中定义bean,即处理过滤不被拦截action的bean;
 5.在java bean中处理过滤不被拦截的action

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值