struts2框架提供了一种声明式的异常处理机制,struts2通过配置的拦截器来实现异常处理机制。
一、配置
1、Struts2的异常处理机制是:通过在struts.xml文件中配置﹤exception-mapping …﹥元素完成的,配置该元素时,需要指定两个属性:
1) exception:此属性指定该异常映射所设置的异常类型。
2) result:此属性指定Action出现该异常时,系统转入result属性所指向的结果。
2、异常映射分类:
1)局部异常映射:将<exception-mapping… />元素作为<action…/>元素的子元素配置
<action name="emp_*" class="com.chinasoft.struts2.demo.action.EmpAction" method="{1}"> <result name="toIndex">/index.jsp</result> <!-- 异常处理,这个是针对单个Action的,非全局 --> <exception-mapping result="toIndex" exception="java.lang.Exception" /> </action>
2)全局异常映射:
a)作用范围是package中的所有Action。这种映射使用元素进行配置,在该元素中嵌套作为子元素。
b)将<exception-mapping… />元素作为<global-exception-mappings… />元素的子元素配置;
<package name="error-handler" extends="struts-default"> <global-results> <result name="input">/page/common/inputError.jsp</result> <result name="success">/page/common/resData.jsp</result> <!-- error handler page --> <result name="errAjax">/page/common/appError.jsp</result> <result name="errPage">/page/common/exceptionPage.jsp</result> </global-results> <global-exception-mappings> <exception-mapping result="exception" exception="java.lang.Exception"/> </global-exception-mappings> </package>
3、如果局部异常映射和全局异常映射配置了同一个异常类型,在<action…./>元素内的局部异常映射将覆盖全局异常映射。
二、输出异常信息
可以使用struts2标签来进行输出异常处理:
<s:property value="exception.message"/>:输出异常对象本身。
<s:property value="exceptionStack"/>: 输出异常堆栈信息。
利用struts2的异常处理机制和拦截器机制,可以很方便的实现异常处理功能,你不再需要在Action中捕获异常,并抛出相关的异常了,这些都交给拦截器来帮你做了。