如何配置自定义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

主要内容:本文详细介绍了一种QRBiLSTM(分位数回归双向长短期记忆网络)的时间序列区间预测方法。首先介绍了项目背景以及模型的优势,比如能够有效利用双向的信息,并对未来的趋势上限和下限做出估计。接着从数据生成出发讲述了具体的代码操作过程:数据预处理,搭建模型,进行训练,并最终可视化预测结果与计算分位数回归的边界线。提供的示例代码可以完全运行并且包含了数据生成环节,便于新手快速上手,深入学习。此外还指出了模型未来发展的方向,例如加入额外的输入特性和改善超参数配置等途径提高模型的表现。文中强调了时间序列的标准化和平稳检验,在样本划分阶段需要按时间序列顺序进行划分,并在训练阶段采取合适的手段预防过度拟合发生。 适合人群:对于希望学习和应用双向长短时记忆网络解决时序数据预测的初学者和具有一定基础的研究人员。尤其适用于有金融数据分析需求、需要做多一步或多步预测任务的从业者。 使用场景及目标:应用于金融市场波动预报、天气状况变化预测或是物流管理等多个领域内的决策支持。主要目的在于不仅能够提供精确的数值预计还能描绘出相应的区间概率图以增强结论置信程度。 补充说明:本教程通过一个由正弦信号加白噪构造而成的简单实例来指导大家理解和执行QRBiLSTM流程的所有关键步骤,这既方便于初学者跟踪学习,又有利于专业人士作为现有系统的补充参考工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值