Struts中的異常處理機制

Struts中的異常處理機制

 

Struts中的異常處理,必須利用Struts內置的機制(只針對actionexecute)和標準的servlet機制相結合,才能完美的實現。

 

1.         首先通過在配置文件中定義全局異常處理或者特定於action的異常處理句柄

 

2.         然後在process執行actionexcute遇到異常就讀取其異常處理配置,並生成相應的ExceptionConfig對象。若ExceptionConfignull(即此action沒有配置異常處理),則直接拋出IoException或者ServletException到總控的dopostdoget,由容器負責處理(此時將會用到在web.xml中定義的異常處理對象)。

 

3.         根據ExceptionConfig生成ExceptionHandler,然後執行其execute方法。在execute中將產生actionerrors(包含由配置生成的actionerror列表)對象,並放到相應的scope(默認爲request)(Globals.EXCEPTION_KEY爲健),然後轉到錯誤處理葉面,以<html:error>顯示。

 

4.         form bean 的驗證方法中產生的action errors也是以Globals.EXCEPTION_KEY爲健,但是存在request中。

 

5.         struts的異常處理利用了其內置的資源文件和國際化機制。由於生成的actionerror是配置exception時的keyexception.getMessage()鍵值對,所以必須在message中放入足夠的信息,我們無法在發生異常時,得到異常本身的引用,這或許是struts 的不足之處!

 

6.        在擴展struts總控時發現process()方法拋出的是IOException, ServletException,這不是明擺着不讓我們擴展此方法嗎?擴展時有新的異常難道都得包裝成IOException, ServletException嗎?不明白作者的深意?

 
發佈了37 篇原創文章 · 獲贊 8 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章