zoukankan      html  css  js  c++  java
  • Struts2拦截器

    服务器启动时实例化 StrutsPrepareAndExecuteFilter,读取struts所有配置文件,把每一个Action实例化,当一个请求访问的时候,StrutsPrepareAndExecuteFilter会把请求拦截下来,匹配一个ActionMapper,然后ActionMapper创建ActionProxy,然后执行默认拦截器栈,再执行Action,返回结果,然后默认拦截器再反向执行(做一些运行期监控和清理工作,不是每一拦截器都执行后置拦截),最后响应结果返回给页面

    一、自定义拦截器,创建拦截器类,继承ActionInterceptor

      在struts.xml文件中配置拦截器和拦截器栈,将自定义的拦截器添加到创建的拦截器栈中,并在拦截器栈中引入默认的拦截器栈defaultStack,最后设置默认拦截器引用设置为创建的拦截器栈。

     1 <package name="myStruts-Default" extends="struts-default" abstract="true">
     2         <interceptors>
     3             <!--  配置我们自己的拦截器 -->
     6             <interceptor name="myInterceptor" class="com.rl.interceptor.MyInterceptor"></interceptor>
     7             <!--  拦截器栈:是把多个拦截器集中到一起统一被引用 -->
    10             <interceptor-stack name="rlStack">
    11                 <!--  拦截器栈中要引用已经配置好的拦截器或者拦截器栈-->
    14                 <interceptor-ref name="defaultStack"></interceptor-ref>
    15                 <interceptor-ref name="myInterceptor"></interceptor-ref>
    16             </interceptor-stack>
    17         </interceptors>
    18         <!--  把rlStack作为默认拦截器,只要继承了myStruts-Default,执行Action时就会自动先执行rlStack中的所有拦截器 -->
    21         <default-interceptor-ref name="rlStack"/>
    22     </package>

    二、排除Action的拦截

      创建拦截器继承 MethodFilterInterceptor 

    1 <!-- 当前Action需要主动管理默认拦截器栈 -->
    2             <interceptor-ref name="rlStack">
    3                 <!-- 指定要排除的拦截器  name:要排除的拦截器的名字.exludeMethods 元素:要排除的方法-->
    4                 <param name="myInterceptor1.excludeMethods">delete</param>
    5             </interceptor-ref>
  • 相关阅读:
    怎么强制限制div宽度
    KeyWordHelper关键字提取类(注:使用第三方组件DictSeg.dll)
    XmlToJsonxml对象转换为Json对象类
    Excel模板导出(针对复杂报表的一种解决方式)
    SQL查询xml内容
    ASP.NET中使用jQGrid
    RandomHelper随机数辅助类
    Translater语言翻译类
    Int32.Parse, Convert.ToInt32,Int32.TryParse三者的区别
    CollectionHelper网页采集辅助类
  • 原文地址:https://www.cnblogs.com/cat-fish6/p/8646184.html
Copyright © 2011-2022 走看看