J2EE社区

苟有恒,何必三更起五更眠;
最无益,只怕一日曝十日寒.
posts - 241, comments - 318, trackbacks - 0, articles - 16

Struts2声明式异常处理的方法

Posted on 2010-05-19 10:16 xcp 阅读(1321) 评论(0)  编辑  收藏
 本文介绍Struts2声明式异常处理的方法。

  全局异常映射:


<global-exception-mappings>
    <exception-mapping result="error" exception="java.lang.Exception"/>
</global-exception-mappings>

 

  局部异常映射:


<exception-mappings>
     <exception-mapping result="error" exception="java.lang.Exception"/>     
</exception-mappings>

 

  exception: 异常类型

  result:指定Action出现该异常时,系统转入result属性所指向的结果。

  异常信息的输出:

  输出异常对象本身。

  输出异常对象的信息。

  输出异常对象本身。

  1.业务异常类

  1.所以业务异常类派生于BusinessException基类。

  2.原则上,要进行相同处理的异常分为一类,用ERROR_CODE标识不同。

  3.出错信息统一写在errors.properties,以ERROR_CODE为主键,支持i18N,由基类提供默认的getMessage()函数。

  参考BussinessException.java和OrderException.java。

  2.Servlet规范里的异常控制

  2.1按error-code统一定义错误页面

   404 /404.jsp 500 /error.jsp2.2按异常类型定义单独错误页面

   org.sprngside.bookstore.UserNotFound /userNotFound.jsp2.3 在JSP里单独定义错误页面

  <@ errorPage="error.jsp">3.Spring MVC里的异常控制

  spring-mvc可在xxx-serverlet.xml里定义default和 按Excepiton类型影射的错误页面, 和Servlet规范比,主要作了Spring特色的JSP路径转向和日志记录.参见bookstore-servlet.xml

   /businessError.jsp 4. error.jsp的处理

  error.jsp会同时处理jsp,servlet,和spring抛过来的异常

  其中jsp的异常在exception 变量中.

  servlet的异常在(Exception)request.getAttribute("javax.servlet.error.exception")

  spring的异常在(Exception) request.getAttribute("exception")

  使用 (String) request.getAttribute("javax.servlet.error.request_uri")获得 request_uri

  使用 logger.error(exception.getMessage(), exception); 记录整个异常栈




名称: ♪4C.ESL | .↗Evon
口号: 遇到新问题♪先要寻找一个方案乄而不是创造一个方案こ
mail: 联系我