我自定义了一个拦截器,实现了Interceptor接口,然后在action中使用,老师说它默认的应该是拦截execute方法,我action执行的是自定义的方法myExecute,但是我拦截器还是起作用了。求解释!!!!!!我的struts.xml配置文件
<package name="interceptor" namespace="/interceptor" extends="struts-default">
<interceptors>
<interceptor name="theInterceptor1" class="com.zhangle.struts.interceptor.FirstInterceptor"></interceptor>
<interceptor name="theInterceptor2" class="com.zhangle.struts.interceptor.SecondInterceptor"></interceptor>
<interceptor name="theInterceptor3" class="com.zhangle.struts.interceptor.ThirdlyInterceptor"></interceptor>
</interceptors>
<action name="interceptor" class="com.zhangle.struts.InterceptorAction" method="myExecute">
<result name="success">/interceptor.jsp</result>
<result name="input">/interceptor.jsp</result>
<interceptor-ref name="theInterceptor1">
<param name="test">zhangle</param>
</interceptor-ref>
<interceptor-ref name="theInterceptor2">
<param name="includeMethods">execute</param>
</interceptor-ref>
<interceptor-ref name="theInterceptor3">
<param name="includeMethods">myExecute</param>
</interceptor-ref>
</action>
</package>我的拦截器的interceptor方法:
public String intercept(ActionInvocation invocation) throws Exception
{
System.out.println("First Interceptor before");
String result = invocation.invoke();
System.out.println("First Interceptor after");
return result;
}我的控制台打印结果:
First Interceptor before
invoke myExecute // 这是我的myExecute方法打印的结果
First Interceptor after
<package name="interceptor" namespace="/interceptor" extends="struts-default">
<interceptors>
<interceptor name="theInterceptor1" class="com.zhangle.struts.interceptor.FirstInterceptor"></interceptor>
<interceptor name="theInterceptor2" class="com.zhangle.struts.interceptor.SecondInterceptor"></interceptor>
<interceptor name="theInterceptor3" class="com.zhangle.struts.interceptor.ThirdlyInterceptor"></interceptor>
</interceptors>
<action name="interceptor" class="com.zhangle.struts.InterceptorAction" method="myExecute">
<result name="success">/interceptor.jsp</result>
<result name="input">/interceptor.jsp</result>
<interceptor-ref name="theInterceptor1">
<param name="test">zhangle</param>
</interceptor-ref>
<interceptor-ref name="theInterceptor2">
<param name="includeMethods">execute</param>
</interceptor-ref>
<interceptor-ref name="theInterceptor3">
<param name="includeMethods">myExecute</param>
</interceptor-ref>
</action>
</package>我的拦截器的interceptor方法:
public String intercept(ActionInvocation invocation) throws Exception
{
System.out.println("First Interceptor before");
String result = invocation.invoke();
System.out.println("First Interceptor after");
return result;
}我的控制台打印结果:
First Interceptor before
invoke myExecute // 这是我的myExecute方法打印的结果
First Interceptor after
准确的是说"它默认的应该是拦截action配置method属性的方法",如果action不配置method属性,则method默认值是execute