Struts2框架的大部分功能都是通过拦截器来完成的。默认情况下所以的package都会继承默认的struts-default包,这样就可以使用Struts的大量默认拦截器。
1、自定义全局拦截器
在Struts.xml里增加 <interceptor name="拦截器别名" class="拦截器实现类" >
为其他包引用的方便可以把多个拦截器放在一起,组成拦截器栈:
<interceptor-stack name="拦截器栈别名">
<interceptor name="拦截器别名1" class="拦截器实现类" >
<interceptor name="拦截器别名2" class="拦截器实现类" >
</interceptor-stack>
2、在action中使用拦截器
<action name="" class="" extends="struts-default">
<interceptor-ref="拦截器栈别名">
</action>
3、配置默认的拦截器(每个包只能定义一个默认拦截器)
当配置一个包后,可以为其指定特定的拦截器。这样如果该包中的ACTION没有配置拦截器,那么默认的拦截器将起作用
<default-interceptor-ref name="拦截器栈别名">
4、实现拦截器需继承AbstractInterceptor类
5、在默认情况下,如何某个Action定义了拦截器,这个拦截器会拦截Action的所以方法,如果不想拦截所以方法,可以使用Struts2的方法过滤特性。
<action name="" class="" extends="struts-default">
<interceptor-ref="拦截器栈别名">
<param name="excludeMethods">拦截器别名1,拦截器别名2</param> < ————屏蔽的拦截
<param name="includeMethods">拦截器别名2</param> <————开启拦截
</action>
6、Struts2拦截器的执行顺序
并不是先配置的先拦截,在execute方法执行前的动作按顺序拦截,在execute方法执行之后的动作逆序执行,也就是说配置在后面的先执行。