(转)Struts2的异常处理机制------自定义拦截器实现
通过自定义拦截器实现action每个方法中如果有异常发生捕捉并跳转到对应页面。
首先是action类:
public String execute(){
//这里由于是用于测试用,所以方法体中抛出异常,就不能加return语句。
当某个action访问该方法时抛出异常,此时被拦截器拦截,跳转到对应页面。
throw new NullPointerException();
}
再是Struts.xml配置:
<interceptors>
<interceptor name="MyException" class="com.xxx.xxx.MyException"></interceptor>
<!--这里可以配置多个interceptor-->
</interceptors>
<!--拦截器栈-->
<interceptor-stack name="MyInterceptorStack">
<interceptor-ref name="MyException"></interceptor-ref>
<!--这里也可以配置多个interceptor-ref-->
</interceptor-stack>
<!-- 全局默认拦截器 ,一个系统中只能一个全局默认-->
<default-interceptor-ref name="MyInterceptorStack"></default-interceptor-ref>
<!--全局跳转-->
<global-results>
<result name="error'>/error.jsp</result>
<!--也可以有多个-->
</global-results>
最后自定义拦截器:
需要继承AbstractInterceptor
public class MyException extends AbstractInterceptor{
String result=""; //这里的值要和全局跳转那里的result的name一致。
public String interceptor(ActionInvocation ac){
try{
result=ac.invoke();
}catch(Exception e){
这里可以有多个catch,但要注意顺序问题,用于捕捉不同的异常,进行不同的处理
}
}
}

浙公网安备 33010602011771号