天天看點

Exception異常在頁面顯示

Struts可以以兩種不同方式來處理Action類中execute()方法産生的異常:

1、配置方式:通過設定Struts配置檔案(struts-config.xml)中的exception元素來處理異常。

2、程式設計方式:在Action中捕獲異常,并把異常重新包裝成ActionMessage對象,然後把ActionMessage對象儲存在ActionMessages對象中,接着把請求轉發給錯誤處理頁面即可。

以配置方式處理異常可以提高應用的靈活性、可重用性和可維護性,下面介紹如何以配置方式來處理異常:

1、首先在<global-exception>(全局異常)或<action>(局部異常)元素中嵌套<exception>元素,一個<exception>元素代表一種類别的異常,其格式如下:

<exception type="type" handler="handler" path="path" key="key" bundle="bundle" scope="scope"/>

type:指定待處理的異常類。

handler:指定異常處理類,預設值為org.apache.struts.action.ExceptionHandler。如果設定為使用者自定義的異常處理類,則該類必須繼承ExceptionHandler。

path:指定轉發路徑。

key:指定錯誤消息的key,Struts架構将根據這個key到Resource Bundle中尋找比對的消息文本。

bundle:指定Resource Bundle,如果沒有設定此項,将使用預設的Resource Bundle。

scope:指定ActionMessages的存放範圍,可選值包括request和session。預設值為request。

在指定了所有的異常後,可以加一個<exception type="java.lang.Exception" .../>來捕獲尚未指定的其它異常,并可以指定該key的值為"系統錯誤......"。

例如:

struts-config.xml 檔案

...

<exception type="com.cjcoder.MyException" key="action.errors.myexception" path="/error.jsp"/>

<exception type="java.lang.Exception"     key="action.errors.exception"   path="/error.jsp"/>

...

error.jsp 檔案

...

<html:errors property="action.errors.myexception"/>

<html:errors property="action.errors.exception"/>

...

2、在path指定的頁面中,通過<html:errors/>來顯示所有異常資訊或通過<html:errors property="key"/>來顯示指定異常資訊(property屬性的值和<exception>元素中指定的key相對應)。         

推薦方式

直接在背景try{

....處理邏輯

}catch(Exception e){

//通過請求抛回前端頁面用EL表達式取值,Key值保持一緻

request.setAttribute("message","聯機處理異常,"+e.getMessage());

}

<html>

<body>

<c:if test="${!empty message}">

  <font color='red'>錯誤資訊:${message}</font>

  </c:if>

</body>

</html>