Struts2中异常的处理
在开发Java web应用程序时,由于程序的开发不太完善,导致用户在使用过程中会出现程崩溃的情况,结果就是在浏览器上看见一大堆怎么都看不懂的东西。对于一些商业级的应用可能损失上千万。Struts2 框架异常处理机制对于这种情况提供了有效的支持。
一般情况下,开发中往往希望是这样的:当用户请求发生了异常时,就会转入指定的错误视图资源,不同的异常转入不同的指定的视图资源,用户的体验度就提高了。处理方式有:
1. 在Action中使用try catch解决,但是这中解决方法不怎实用,它只适用一些简单、较小、种类少的异常,此类异常比较简单不在举例子了。
2. 直接在struts.xml配置文件中配置异常,通常有两种方式:全局和局部异常配置,如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="demo" namespace="/demo" extends="struts-default">
<!-- 全局异常配置 -->
--------------------------------------------------------------
<global-results>
<result name="myexception">/myexception.jsp</result>
<result name="sqlexception">/sqlexception.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="myexception"
exception="edu.nwsuaf.xc.MyException"/> //自定义异常
<exception-mapping result="sqlexception"
exception="java.sql.SQLException"/>
</global-exception-mappings>
---------------------------------------------------------------
<!-- 局部异常配置 -->
<action name="demo" class="edu.nwsuaf.xc.Demo">
<exception-mapping result="error"
exception="edu.nwsuaf.xc.Myexception"/>
<result name="success">/success.jsp</result>
</action>
--------------------------------------------------------------
</package>
</struts>
<global-exception-mappings>标签下是对所有的action起作用,
而<exception-mapping>只是对当前Action起作用。
在出现异常后,一般我们开发人员会在JSP页面中输出异信息:
<s:property value=”exception.message” /> // 输出异常对象信息;
<s:property value=”exceptionStack” /> // 输出异常堆栈信息;