拦截器可以对指定的方法进行拦截,不仅可以去除某些不想拦截的方法,也可以包含某些希望拦截的方法。
比如对方法一拦截,对方法二不拦截
struts.xml
<interceptors>
<interceptor name="myinterceptor" class="com.wanhao.MethodInterceptor"></interceptor>
</interceptors>
<action name="method1" class="com.wanhao.MethodAction" method="method1">
<result>index.jsp</result>
<interceptor-ref name="myinterceptor"><param name="ExcludeMethods">method1</param> //Exclude表示排除在外,不需要拦截的方法
</interceptor-ref>
</action>
<action name="method2" class="com.wanhao.MethodAction" method="method2">
<result>index.jsp</result>
<interceptor-ref name="myinterceptor"><param name="IncludeMethods">method2</param> //表需要拦截的方法
</interceptor-ref>
</action>
MethodAction.java
public class MethodAction extends ActionSupport{
public String execute()
{
return SUCCESS;
}
public void method1()
{
System.out.println("method1");
}
public void method2()
{
System.out.println("method2");
}
public void method3()
{
System.out.println("method3");
}
public void method4()
{
System.out.println("method4");
}
}
MethodInterceptor.java
public class MethodInterceptor extends MethodFilterInterceptor {
@Override
protected String doIntercept(ActionInvocation arg0) throws Exception {
System.out.println("拦截器执行");
return arg0.invoke();
}
}
拦截结果监听器,需要实现PreResultListener接口。
然后在拦截器中加入此监听器中,invocation.addPreResultListener(new myListener());