Struts 2的異常處理

jopen 10年前發布 | 7K 次閱讀 Struts2 Web框架

            對于MVC框架而言。我們希望:當Action處理用戶請求時。如果出現了異常1,則系統就會轉入視圖資源1,在該視圖資源上輸入服務器提示;如果出現了異常2,則系統會轉入子圖資源2,在該視圖資源上輸入服務器提示;。。。。。</span>

         為了滿足上述要求,我們可以采用以下的處理方法:

Public class XxxxAction{
    Public String execute(){
        try{
            …….
        }
        catch(異常1  e1){
            return 結果1;
        }
        Catch(異常2  e2){
            return 結果2;
        }
    }
}

            我們在Actionexecute方法中使用try…..catch快來捕捉異常,當捕捉到指定的異常時,系統會返回對應的邏輯視圖名----這種處理方式完全是手動處理異常,可維護性不好。

            從上面我們可以看到,上面代碼段的實質是完成異常類型和邏輯視圖名之間的對應關系。既然如此,我們為什么不可以把這種對應關系推遲到struts.xml中進行管理呢??

            由于struts2支持聲明式異常處理,所以我們只需要將所有的異常全部拋出,交給struts2來處理。然后根據struts.xml文件中配置的異常映射,轉入到制定的視圖資源。

聲明式異常捕捉

            Struts 2 的異常機制是通過在struts.xml文件中配置<exception-mapping..../>元素來實現的。配置該元素時需要指定兩個屬性:

            exception:指定該異常映射所設置的異常類型

            result:指定Actin出現異常時,返回的邏輯視圖名

 

            異常映射一般可以分為全局異常映射和局部異常映射

            全局異常映射對所有的Action都有效,而局部異常映射僅僅只對該異常映射所在的Action內有效。

            全局異常映射是將<exception-mapping...>元素作為<action .../>元素的子元素配置

            全局異常映射是將<exception-mapping...>元素作為<global-exception-mapping.../>元素的子元素配置

 

            輸出異常信息

             當Struts 2系統進入異常處理頁面后,我們必須在對應的頁面中輸出指定異常信息

             可以通過以下標簽來輸出異常信息

             <.s:property value="exception"/>:輸出異常對象本身

             <s:propertu value="exceptionStack"/>:輸出異常堆棧信息

            對于第一種我們可以使用表達式輸出異常對象本身。對于第二種,由于exception提供了getMessage()方法,所以我們可以采用<s:propertu value="exception.messagge"/>來輸出異常的message信息

 

     讀李剛《輕量級Java EE企業應用實戰》

 

來自: http://blog.csdn.net/chenssy/article/details/7300603

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!