您的位置:首页 > 编程语言 > Java开发

Struts2拦截器执行顺序

2014-02-22 16:04 393 查看
拦截器代码:

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默认拦截器需要配置在自定义拦截器之前
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: