struts2异常处理配置

struts2中的异常处理有两种方式:

1,在Action中捕捉异常,并转入相应的result,这种方式以硬编码的方式处理异常,非常不灵活,并且不利于工程的管理。不推荐使用。其它的一些web框架也不推荐采用这种方式处理异常。

2,通过在配置文件中配置异常的转向来处理异常,struts2中的配置如下:

<package name=”mdms” extends=”struts-default”>

<!– 全局性的通用跳转页面 –>
<global-results>
<result name=”login”>/login.jsp</result>
<result name=”error”>/common/error.jsp</result>
</global-results>

<!– 全局性的异常映射 –>
<global-exception-mappings>
<!– Action抛出Exception异常时,转入名为error的结果,这一项要放在最后 –>
<exception-mapping exception=”java.lang.Exception” result=”error” />
</global-exception-mappings>

</package>

捕捉所有异常并转入到名为error的result处理结果。

这里我发现了一个问题,就是如果此段配置代码写在struts.xml文件中,那么在它的子配置文件中是调用不了这个异常处理配置的。也就是说,每一个子配置xml文件都要加上以上异常处理配置才行,这个可能是struts的bug,我用的版本是struts2.0.11.2

http://hi.baidu.com/annleecn/blog/item/7c40b8df699cd55eccbf1a0b.html

可将异常完全抛给struts2框架进行处理。
为实现异常处理,strust2配置了拦截器进行处理:

Xml代码 复制代码

  1. <interceptors>
  2.     <interceptor name=”exception” class=”com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor”/>
  3. </interceptors>
  4. <interceptor-stack name=”defaultStack”>
  5.         <interceptor-ref name=”exception”/>
  6. </interceptor-stack>

<interceptors> <interceptor name=”exception” class=”com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor”/></interceptors> <interceptor-stack name=”defaultStack”> <interceptor-ref name=”exception”/></interceptor-stack>

异常捕捉的处理:
[list=1]

  • 局部异常映射:在<action…/>中
  • 全局异常映射,在<global-exception-mappings…/>中Xml代码 复制代码
    1. <exception-mapping result=”" exception=”package.异常类”></exception-mapping>
    2. 属性详解:
    3.      exception:指定该异常映射所设置的异常类型
    4.      result:指定Action出现异常时,系统转入此属性所指向的结果
    5.          全局映射指向global-result下的result
    6.          局部映射指向本Action下的result

    <exception-mapping result=”" exception=”package.异常类”></exception-mapping>属性详解: exception:指定该异常映射所设置的异常类型 result:指定Action出现异常时,系统转入此属性所指向的结果 全局映射指向global-result下的result 局部映射指向本Action下的result
    [/list]

    页面输出异常信息:
    Xml代码 复制代码

    1. <s:property value=”exception”/>输出异常对象本身

    <s:property value=”exception”/>输出异常对象本身
    Xml代码 复制代码

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

 

http://miracle9i.javaeye.com/blog/232146

加入本人的意见,,如果通过拦截器应该可以做到每个文件都要输入重复的代码..

没通过试验,有时间验证.

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>