拦截器的执行顺序

来源:互联网 发布:网络行业都有哪些工作 编辑:程序博客网 时间:2024/06/05 00:48

拦截器定义如下:

public class OrderInterceptor extends AbstractInterceptor{private String name;public String intercept(ActionInvocation ai) throws Exception{String result="";System.out.println("拦截器"+name+":开始执行");result = ai.invoke();System.out.println("拦截器"+name+":执行完毕");return result;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
配置如下:

 <action name="loginAction" class="com.demo1.action.LoginAction" method="checkLogin"> <result name="success">/index.jsp</result> <result name="login">/login.jsp</result> <interceptor-ref name="defaultStack"/>         <interceptor-ref name="orderInterceptor"> <param name="name">1</param> </interceptor-ref> <interceptor-ref name="orderInterceptor"> <param name="name">2</param> </interceptor-ref> <interceptor-ref name="orderInterceptor"> <param name="name">3</param> </interceptor-ref> </action>
程序运行结果如下:

拦截器1:开始执行

拦截器2:开始执行

拦截器3:开始执行

Action执行

拦截器3:执行完毕

拦截器2:执行完毕

拦截器1:执行完毕

从上述结果看出,在Action执行之前,拦截器1先执行,然后拦截器2,拦截器3.  Action执行完毕之后拦截器3先执行,然后拦截器2,然后拦截器3.
所以如果在一个Action中配置多个拦截器,拦截器的执行顺序为先进后出。
0 0
原创粉丝点击