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

拦截器

时间:2015-08-04 00:26:18      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

1.拦截器的用途

  拦截器适合封装一些通用的处理,便于重复利用。例如请求参数传递给Action属性,日志的记录,权限检查,事物处理等。拦截器通过配置方式调用,因此使用方法比较灵活,便于维护和扩展。

2.创建拦截器组件

  创建一个类,实现Interceptor接口,并实现intercept方法。

  public String intercept(ActionInvocation invocation){

    //拦截器--前部分处理

    invocation.invoke();//执行action和result

    //拦截器--后续处理

  }

3.注册拦截器

  在struts.xml中,注册拦截器

  <package>

    <interceptors>

      <interceptor name="别名" class="实现类"/>

      //...其他interceptor

    </interceptors>

  </package>

4.引用拦截器

  如果那个Action希望被拦截器扩展,需要在此action配置下,引用拦截器

  <action>

    <interceptor-ref name="拦截器"/>

    //...可以写多个

  </action>

5.拦截器栈

  往往一个Action需要引用很多个拦截器,那么可以将这些拦截器打包成栈,直接引用这个栈即可,这样可以简化对拦截器的引用

  拦截器栈仅仅是对拦截器的打包,方便引用,它在使用上完全等同于拦截器

  <interceptor-stack name="mySatck">

    <interceptor-ref name="firstInterceptor"/>

    <interceptor-ref name="secondInterceptor"/>

  </interceptor-stack>

6.预制拦截器

  Struts2预制了大量的拦截器,见struts-default.xml第122行。

  有一部分拦截器是Struts2框架自身要用到的,必须应用

    这些拦截器被打包在basicStack中

    我们项目中应用的拦截器,不能少于basicStack中注册的拦截器

7.默认引用拦截器

  有一部分拦截器是最常用的,他们被打包在defaultStack中

    <interceptor-stack name="defaultStack">

     ....

    </interceptor-satck>

  该拦截器栈是Struts2框架默认引用的,即我们不需要在Action中做任何处理,就相当于是引用了这个拦截器栈

  注意,一旦我们在action配置下引用了任何拦截器,那么上述默认引用的拦截器就失效了,因此在引用拦截器时,不要丢弃默认拦截器的引用。

8.拦截器调用顺序

  拦截器在调用的时候,按照被引用的先后顺序,

  调用顺序遵循先进后出原则

 

拦截器

标签:

原文地址:http://www.cnblogs.com/Crow00/p/4700660.html

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