Struts2异常映射的配置
2011-07-11 17:34
399 查看
异常映射是处理Action类异常的一个有力工具,通过异常映射我们可以提供更加友好的用户界面,而不是一堆错误代码信息。Action方法抛出的异常能够被自动捕捉然后经过映射指向一个预定义好了的Result。声明式的策略对于抛出运行时异常的框架尤其有用。
和框架的很多其它部分一样,我们需要使用一个拦截器来启动异常映射功能。在struts-default.xml文件中已经为我们把这个拦截器准备好了,因此我们可以直接使用:
1.根据所抛出的异常类型在局部异常映射与全局异常映射中寻找与之匹配的异常,注意,这要包括所抛出异常的所有祖先类。在这些能够匹配上的异常中找出与它遗传关系上最近的异常(自己跟自己是最接近的),然后根据这个异常映射的result属性去和action mapping中配置的Result进行匹配。
2.如果在局部异常映射和全局异常映射中同时出现了满足需求的异常映射,那么以局部异常映射为准。
下面以例子进行说明:
<global-exception-mappings> <exception-mapping result="global" exception="java.sql.SQLException"></exception-mapping> <exception-mapping result="test" exception="java.lang.Exception"></exception-mapping></global-exception-mappings>
<action name="exception" class="tutorial.ExceptionAction"> <exception-mapping result="sql" exception="java.sql.SQLException"></exception-mapping> <exception-mapping result="all" exception="java.lang.Exception"></exception-mapping> <result name="sql">/exception.jsp</result> <result name="global">/global.jsp</result> <result name="test">/test.jsp</result> <result name="all">/all.jsp</result></action>
上面是一个struts配置文件的片段,定义了两个全局异常映射和两个局部异常映射,我做了如下几个测试:
1.当Action类抛出SQLException时,局部映射起作用,页面转向exception.jsp
2.注释局部映射中的java.sql.SQLException,当Action类抛出SQLExceptiop时,全局映射起作用,页面转向global.jsp
这就说明异常拦截器首先会寻找与所抛出异常在遗传关系上最接近的异常,如果局部映射与全局映射同时有,那么使用局部映射。
和框架的很多其它部分一样,我们需要使用一个拦截器来启动异常映射功能。在struts-default.xml文件中已经为我们把这个拦截器准备好了,因此我们可以直接使用:
<interceptors>
<interceptor name="exception"
class="com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor"/>
</interceptors>为了使用异常映射,我们还需要为每个异常分配指定的Result。同Result一样框架为我们提供了两种方式来声明异常映射:全局异常映射和局部异常映射(仅仅只针对某一个action mapping)。当Action类抛出异常时异常拦截器会按照如下的规则对异常进行匹配:
1.根据所抛出的异常类型在局部异常映射与全局异常映射中寻找与之匹配的异常,注意,这要包括所抛出异常的所有祖先类。在这些能够匹配上的异常中找出与它遗传关系上最近的异常(自己跟自己是最接近的),然后根据这个异常映射的result属性去和action mapping中配置的Result进行匹配。
2.如果在局部异常映射和全局异常映射中同时出现了满足需求的异常映射,那么以局部异常映射为准。
下面以例子进行说明:
<global-exception-mappings> <exception-mapping result="global" exception="java.sql.SQLException"></exception-mapping> <exception-mapping result="test" exception="java.lang.Exception"></exception-mapping></global-exception-mappings>
<action name="exception" class="tutorial.ExceptionAction"> <exception-mapping result="sql" exception="java.sql.SQLException"></exception-mapping> <exception-mapping result="all" exception="java.lang.Exception"></exception-mapping> <result name="sql">/exception.jsp</result> <result name="global">/global.jsp</result> <result name="test">/test.jsp</result> <result name="all">/all.jsp</result></action>
上面是一个struts配置文件的片段,定义了两个全局异常映射和两个局部异常映射,我做了如下几个测试:
1.当Action类抛出SQLException时,局部映射起作用,页面转向exception.jsp
2.注释局部映射中的java.sql.SQLException,当Action类抛出SQLExceptiop时,全局映射起作用,页面转向global.jsp
这就说明异常拦截器首先会寻找与所抛出异常在遗传关系上最接近的异常,如果局部映射与全局映射同时有,那么使用局部映射。
相关文章推荐
- Struts2学习:配置篇之异常映射
- Struts2的异常映射
- Struts2.x配置细节导致的异常
- 关于MyEclipse对Struts2配置文件较检异常 Invalid result location value/parameter
- struts2中的异常映射处理机制
- 配置Struts2 遇到的两个异常 java.lang.ClassNotFoundException / org.apache.catalina.LifecycleException
- struts2 (二)单元测试/通过耦合和非耦合的方式获取和设置值/返回值类型/异常映射
- Java Struts2: 没有 Action 映射的原因可能是 web.xml 中缺乏 welcom-file-list 所配置的页面
- 关于MyEclipse对Struts2配置文件较检异常 Invalid result location value/parameter
- struts2配置常见异常
- Struts2的异常配置
- struts2配置常见异常
- struts2的异常配置
- Struts2中配置全局异常处理时报错 org.xml.sax.SAXParseException
- Struts2中action映射的四种配置方式
- Struts2配置详解_配置Action之通配符映射
- MyEclipse对Struts2配置文件较检异常 Invalid result location value/parameter
- struts2配置导致jsp使用标签库异常的处理
- Struts2配置时报struts-default.xml:65:72异常的解决方法
- struts2学习笔记(6)------配置struts2中的异常处理