Struts2学习:配置篇之异常映射

原创 2007年09月14日 13:53:00

异常映射是处理Action类异常的一个有力工具,通过异常映射我们可以提供更加友好的用户界面,而不是一堆错误代码信息。Action方法抛出的异常能够被自动捕捉然后经过映射指向一个预定义好了的Result。声明式的策略对于抛出运行时异常的框架尤其有用。

和框架的很多其它部分一样,我们需要使用一个拦截器来启动异常映射功能。在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.SQLExceptionAction类抛出SQLExceptiop时,全局映射起作用,页面转向global.jsp

这就说明异常拦截器首先会寻找与所抛出异常在遗传关系上最接近的异常,如果局部映射与全局映射同时有,那么使用局部映射。

 

相关文章推荐

struts2自主学习之配置国际化资源文件,传统异常处理方式, 拦截器,实现action 控制类,访问servletAPI,使用拦截器注解

struts2自主学习之配置国际化资源文件,传统异常处理方式, 拦截器,实现action 控制类,访问servletAPI,使用拦截器注解...

框架学习之struts2-02其他配置、异常框架和国际化

关于struts2的更多配置 xml配置 配置默认的命名空间 1.在自定义配置文件中没有找到相应的命名空间包处理请求时,就会到默认的命名空间下去匹配 ...

struts2中的异常映射处理机制

struts2中的全局异常映射和局部异常映射
  • VipMao
  • VipMao
  • 2016年04月14日 18:17
  • 886

struts2 常用的结果类型,动态结果,异常处理,如何传递参数与常用的通配符映射

struts2常用的结果类型有dispatcher(默认),chain,redirect,redirectAction。在很多时候也用到struts2的异常处理。所谓的动态结果是指在程序执行期间才能确...

Struts2之通配符映射(降低配置量)

通过在配置文件中使用*取代具体的字符下面举例说明 1 StudentAction和TeacherAction package org.action; public class StudentActi...

配置Struts2的异常处理

Struts2的异常处理机制①Action接口里的execute方法签名://处理用户请求的execute方法,该方法抛出所有异常 public String execute() throws Exc...

struts2配置session超时,权限访问,异常日志等拦截器

1、代码 1.1action代码 [java] view plaincopy package com.god.action;      imp...

SSH框架中配置log4j日志以及Struts2配置异常处理方法

1. log4j.properties文件配置示例 # default properties to initialise log4j log4j.rootLogger=ERROR,file,...
  • CXC0716
  • CXC0716
  • 2014年03月05日 19:04
  • 3925

struts2的请求扩展名的需求配置和动态调用某个方法配置以及异常处理机制

strut2.0 中一些常用的配置:异常处理配置方法、通配符的使用、动态方法的调用、请求扩展名的配置...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts2学习:配置篇之异常映射
举报原因:
原因补充:

(最多只允许输入30个字)