码迷,mamicode.com
首页 > 其他好文 > 详细

Struts2拦截器

时间:2018-03-25 19:54:20      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:请求   tst   主动管理   读取   action   exclude   col   int   匹配   

服务器启动时实例化 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>

 

Struts2拦截器

标签:请求   tst   主动管理   读取   action   exclude   col   int   匹配   

原文地址:https://www.cnblogs.com/cat-fish6/p/8646184.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!