1.排除Action的拦截
要想排除被拦截Action的执行方法,拦截器需要继承MethodFilterInterceptor
package action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
public class HelloWorld11 extends MethodFilterInterceptor {
@Override
protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
System.out.println("前置拦截执行xxx");
String invoke = actionInvocation.invoke();
System.out.println("hou置拦截执行xxx");
return invoke;
}
}
配置Action的排除:
<package name="mydefault" extends="struts-default" abstract="true">
<!--拦截器配置-->
<interceptors>
<!--自定义拦截器-->
<interceptor name="myInterceptor" class="interceptor.MyInterceptor"></interceptor>
<!--拦截器栈:是把多个拦截器集中到一起统一被继承引用-->
<interceptor-stack name="myStack">
<!--拦截器栈中要引用已经配置好的拦截器或者拦截器栈-->
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="myInterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!--把myStack作为默认拦截器,只要继承了mydefault,执行Action时就会自动先执行myStack中的所有拦截器-->
<default-interceptor-ref name="myStack"></default-interceptor-ref>
</package>
<package name="person11" extends="struts-default" namespace="/person11">
<action name="zhouxu" class="action.HelloWorld10" method="Save">
<!-- 当前Action需要主动关联默认拦截器栈-->
<interceptor-ref name="mydefault">
<!-- 指定要排除的拦截器
name:要排除拦截器的名字[.excludeMethods]
元素:要排除的方法
-->
<param name="myInterceptor.excludeMethods">Save</param>
</interceptor-ref>
<result name="success">/index.jsp</result>
</action>
</package>