<!-- 配置拦截器栈 -->
<interceptor-stack name="myStack">
<interceptor-ref name="myInterceptor2" >
<param name="excludeMethods">login</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
Struts2 中的拦截器 是AOP的一直体现。(AOP是面向切面编程)。它与过滤器是有些不同,这里面的拦截器是针对action的,而过滤器,看你配置是拦截什么它就过滤什么,一般过滤器都配置为 "/*"。
我们自定义一个拦截器有三种方式,一是:实现Interceptor接口,实现里面的三个方法。二是,继承一个AbstractInterceptor这个抽象类,我觉得它就像是个适配器类。我们只要实现它里面的intercept() 这个方法就好了。三是,继承一个MethodFilterInterceptor这个抽象类,实现其中的doIntercept() 方法,这中方式可以实现拦截某个action中的某些方法,不拦截某些方法。做法就是在配置的时候呢,传递两个参数:1 : excludeMethod 这个是排除某些方法,而拦截其他的方法。2. includeMethod ,这个是拦截指定的方法。
注:需要注意的是,当我们自定义拦截器后,struts2中的默认拦截器不再执行,需要我们手动加入默认拦截器。