Struts2的拦截器其实是AOP思想的一种实现,可以实现Interceptor接口也同时可以继承abStractInterceptor类,该类对init和distory进行了空实现
public String intercept(ActionInvocation invocation) throws Exception ;主要显示intercept方法
此方法将action和result之间分为了四层:即拦截器、action、preResultListener(到达action后在返回结果之前进行的操作)、和Result
invocation.invoke之前为拦截器到达action之前的操作,位于拦截器栈底,即将执行action,当执行了invoke方法后已经执行了acion等待result返回 找到具体视图,从栈底依次出栈
具体配置
<interceptors>
<interceptor name="testInterceptor" class="com.test.struts2.testInterceptor"></interceptor>
<interceptor-stack name="testInterceptorStack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="testInterceptor" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="testInterceptorStack"></default-interceptor-ref>
invocation提供了getProxy().getMethod()可以返回代理拦截的方法,同时也可以继承MethodFilterInterceptor 已经实现好得方法拦截器
需要配置如下
<interceptors> <! - -在这里定义拦截器- ->
<interceptor name=“around” class=“AroundInterceptor”/>
</interceptors>
< action name =“test” class =“cn.com.AroundAction” >
< result > /Timer.jsp </ result >
< interceptor-ref name =“around”>
<param name=“includeMethods”>select,update</param>
<param name=“excludeMethods”>delete,insert</param>
</interceptor-ref>