Struts2的异常处理机制

jopen 10年前

Struts2采用声明式的方法管理异常处理,因此我们无需在execute方法体内写大量的try...catch...语句来捕获异常,execute方法将产生的所有异常抛出,统一交由Struts2框架处理,我们只需在struts.xml文件中配置异常的映射机制,Struts2便能够处理并转入相应的视图资源。 

异常映射可分为全局异常映射和局部异常映射,它和<result .../>的性质是一样的。 

配置代码如下: 



Xml代码 
<struts> 
    <package name="struts2" extends="struts-default"> 
        <!-- 配置全局异常映射 --> 
        <global-exception-mappings> 
            <exception-mapping result="sql" exception="java.sql.SQLException"/> 
        </global-exception-mappings> 
        <action name="login" class="com.test.action.LoginAction"> 
            <!-- 配置局部异常映射 --> 
            <exception-mapping result="myException" exception="com.test.exception.MyException"/> 
            <result name="success">result.jsp</result> 
            <result name="sql">error.jsp</result> 
            <result name="myException">error.jsp</result> 
        </action> 
    </package> 
</struts> 

<struts> 
<package name="struts2" extends="struts-default"> 
<!-- 配置全局异常映射 --> 
<global-exception-mappings> 
<exception-mapping result="sql" exception="java.sql.SQLException"/> 
</global-exception-mappings> 
<action name="login" class="com.test.action.LoginAction"> 
<!-- 配置局部异常映射 --> 
<exception-mapping result="myException" exception="com.test.exception.MyException"/> 
<result name="success">result.jsp</result> 
<result name="sql">error.jsp</result> 
<result name="myException">error.jsp</result> 
</action> 
</package> 
</struts> 

为了在异常处理页面中显示异常信息,我们可以使用<s:property/>标签来输出异常信息: 



<s:property value="exception"/>:输出异常信息本身 

<s:property value="exceptionStack"/>:输出异常堆栈信息