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>
  • 相关阅读:
    URAL 2046 A
    URAL 2056 Scholarship 水题
    Codeforces Gym 100286I iSharp 水题
    Codeforces Gym H. Hell on the Markets 贪心
    Codeforces Gym 100286G Giant Screen 水题
    Codeforces Gym 100286B Blind Walk DFS
    Codeforces Gym 100286F Problem F. Fibonacci System 数位DP
    Codeforces Gym 100286A. Aerodynamics 计算几何 求二维凸包面积
    Codeforces Gym 100418K Cards 暴力打表
    Codeforces Gym 100418J Lucky tickets 数位DP
  • 原文地址:https://www.cnblogs.com/cat-fish6/p/8646184.html
Copyright © 2011-2022 走看看