Struts2.1的异常处理

来源:互联网 发布:刷票软件 微信安卓 编辑:程序博客网 时间:2024/05/17 22:19

     提起异常处理,不由想起铺天盖地的try{}catch{}语句 ,在方法中使用catch块处理异常已经成了java程序员的习惯。在Struts2.1看来,是该改变一下的时候了,于是Struts2.1凭借自己的强大拦截器功能,隆重推出声明式异常处理机制,使Struts2.1程序员体验到一种前所未有的快感。

     Struts2.1的声明式异常处理机制是在struts.xml文件中配置exception-mapping元素实现 的,根据exception-mapping放置的地方不同,可分为全局异常映射与局部异常映射两种。将exception-mapping放置在global-exception-mapping元素中时,表示配置全局异常映射,全局异常映射将对所有Action有效;将exception-mapping放置在Action元素中时,表示配置当前Action的局部异常映射,局部异常映射将只对当前Action有效。

      在配置exception-mapping元素时,需要指定exception与result两个属性值,其中exception属性指定具体的异常类型(如jva.sql.SQLException),result属性则用来指定当Action出现该异常时需要跳转的命名视图。

     Exception是所有异常的父类,因此,通过如下配置可捕捉到Action中的所有异常:

<!-- 定义一个全局result -->
<global-results>
<!-- 定义名为login的全局result -->
<result name="tologin">/login.jsp</result>
<!-- 定义名为error的全局result -->
<result name="error">/error.jsp</result>
<!-- 定义名为exception的全局result,该视图用于显示具体的异常信息 -->
<result name="exception">/exception.jsp</result>
</global-results>

<!-- 定义全局异常映射 -->
<global-exception-mappings>
<!-- 捕捉到exception异常(所有异常)时跳转到exception所命名的视图上 -->
<exception-mapping result="exception" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>


现在我们终于明白Struts2.1框架Action接口execute()就去采用如下方式定义 的良苦用心,就是这毫不显眼的"throws Exception"把Action中的异常如实抛给了Struts2.1负责拦截异常的拦截器,为Struts2.1程序 员减少了不少烦恼。

/**Action接口的Excecute方法,该 方法抛出所有异常*/

public String execute() throws Exception;

    在负责 显示异常信息的JSP页面中,使用<s:property value="exception.message"/>标签输出 异常信息的内容,使用<s:property value="exceptionStack"/>标签输出异常的堆栈信息。例如 ,负责 显示 异常信息的exception.jsp页面如下所示:


exception.jsp

<%@ page language="java"  contentType="text/html; charset=utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>

<html>

 <head>    
    <title><s:text name="exception_title"/></title>

  </head>

<body style="padding: 10px;background-color: #D6D3CE">
    Brother!您已进入--"异常"--页面! <br><br><br>
         <center><h2><s:text name="exception_title"/></h2></center> 
      <font color="#FF000"><b><s:text name="exception_prompt"/></b></font><br/><br/>
      <textarea rows="22" cols="150">
      异常信息内容:
      <!-- 输出异常信息内容 -->
      <s:property value="exception.message"/>
      异常的堆栈信息:
       <!-- 输出异常的堆栈信息 -->
      <s:property value="exceptionStack"/>
      </textarea><br><br/>
     <input type="button" value="返回" onclick="history.go(-1)"/>
  </body>

</html>







原创粉丝点击