拦截器代码:
- public class InterCeptorOrder extends AbstractInterceptor
- {
-
-
-
- private static final long serialVersionUID = 1L;
-
- private String name;
-
- public void setName(String name)
- {
- this.name = name;
- }
-
- @Override
- public String intercept(ActionInvocation arg0) throws Exception
- {
- System.out.println("拦截器: " + name + " 开始执行...");
- String result = arg0.invoke();
- System.out.println("拦截器: " + name + " 执行结束...");
- return result;
- }
-
- }
action代码:
- public class ForOrder extends ActionSupport
- {
-
-
-
- private static final long serialVersionUID = 1946267712173673489L;
-
- public String hello() throws Exception
- {
- System.out.println("-----------------------");
- return SUCCESS;
- }
-
- }
Struts配置:
- <interceptors>
- <interceptor name="orderTest" class="com.kewen.InterCeptorOrder"/>
- </interceptors>
- <action name="hello" class="com.kewen.ForOrder" method="hello">
- <result name="success">/index.jsp</result>
- <interceptor-ref name="defaultStack"/>
- <interceptor-ref name="orderTest">
- <param name="name"> 拦截器1号 </param>
- </interceptor-ref>
- <interceptor-ref name="orderTest">
- <param name="name"> 拦截器2号 </param>
- </interceptor-ref>
- <interceptor-ref name="orderTest">
- <param name="name"> 拦截器3号 </param>
- </interceptor-ref>
- </action>
运行结果如下:
拦截器: 拦截器1号 开始执行...
拦截器: 拦截器2号 开始执行...
拦截器: 拦截器3号 开始执行...
-----------------------
拦截器: 拦截器3号 执行结束...
拦截器: 拦截器2号 执行结束...
拦截器: 拦截器1号 执行结束...
也就是说拦截器是按照配置顺序执行的,这也是为什么配置自定义拦截器后希望执行默认拦截器的话,Struts2默认拦截器需要配置在自定义拦截器之前