關於 Struts 1.1 Exception Handler 的應用補充 (轉)
通常,我們在應用1.0進行開發的過程中,對於異常的處理,主要是採用手動處理的方式。
如透過 try/catch 等捕獲異常,然後透過 FormBean.returnString ()或De.println ("");的方式 ,把這些錯誤資訊反饋給或開發人員。
在 Struts 1.1 中,引入了新的異常處理機制,讓我們可以透過(主要是struts-config.)來定製異常處理,就象定義formbean一樣。
下面,我們就來看看如何具體地運用這個新特性。
一、定製異常(在 struts-config.xml檔案中定義)
定製異常也有兩種方法,姑且把它分為:“全域性異常(Global Exceptions)”和“區域性異常 (Local Exception)”。
“全域性異常”定義方法如下:
pe="request" Handler="org..struts.action.ExceptionHandler"microsoft-com::office" /> path="error."/> 上述程式碼在struts-config.xml中定義了一個全域性異常,它的作用是丟擲InvalidiUserNameException(在這裡的意思是當在新增使用者的時候,發現該使用者已經存在)異常的時候返回到error.jsp中,並且攜帶自定的比較規範的異常資訊struts.test.InvalidUserName,struts.test.InvalidUserName可以在應用的資源配置檔案中找到,如: struts.test.InvalidUserName =重複註冊使用者! 區域性異常,定義方法如下: type="struts.test.UserLogonAction" name="userLogonForm"> type="struts.test.InvalidiUserNameException" Handler="org.apache.struts.action.ExceptionHandler" path="/error.jsp"/> 關於異常在 Struts 1.1 中 Struts-config.xml 的定義就這麼簡單。 二、實現我們的異常類(struts.test.InvalidiUserNameException) 為了實現 struts.test.InvalidiUserNameException 這個異常,我們必須自己編寫一個繼承於 Exception 的異常:InvalidiUserNameException。 File name : InvalidiUserNameException. package struts.test; public class InvalidiUserNameException extends Exception { public InvalidiUserNameException () { super(); } } 三、一個丟擲異常的Action
public class UserLogonAction extends BaseAction { public ActionForward execute(ActionMapping mapping, ActionFoform, HttpRequest request, HttpServletResponse response)throws Exception { throw new struts.test.InvalidiUserNameException (); } } 四、顯示我們的異常資訊 為了顯示我們的友好錯誤提示資訊,我們可以編寫一個error.jsp 檔案,內容如下: error.jsp -INF/struts-bean.tld" prefix="bean" %> 請將下面的提示資訊反饋給你的員: 出現一個意外
五、出現我們的異常
好了,我們可以看到我們的異常了。當到上面的 Action 的時候,程式將會丟擲InvalidiUserNameException ,而 struts1.1的 Exception Handler 將會捕捉這個異常,並在 struts-config.xml尋找匹配的異常定義資訊,最終轉到error.jsp並且顯示了我們定義的錯誤資訊:
重複註冊使用者!
以上的程式碼只是從整體上介紹瞭如何使用 Struts 1.1 的異常處理機制,在我們具體的實現中,我們可以在 DAO/Oper 層丟擲異常,並不需要在 Action 層丟擲。
所以,我們定製的異常在程式中並不需要用try/catch來捕獲,一旦出現了我們已經定義的異常那麼就會轉到相應的頁面,並且顯示相應定製的資訊。
我們上面是使用 Struts 預設的異常處理 Handler org.apache.struts.action. ExceptionHandler 來處理的。
我們也可以定義自己的處理方式,只要繼承它並實現其中的execute方法,這個方法在 ExceptionHandler 的定義如下:
public ActionForward execute(Exception ex,
ExceptionConfig ae,
ActionMapping mapping,
ActionForm fonstance,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
補充說明:
FormBean.returnString ():是我們自己定義的一個用於顯示在使用者頁面的友好提示資訊
Debug 是我們自己定義的一個顯示控制檯錯誤資訊的類
DAO/Oper :具體實現操作或其他的類
感謝:
">
-8-8
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-981973/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於switchover的流程和補充
- Struts 1.1的Indexed Properties 值得關注Index
- 第三章 CSS的應用補充(轉)
- 關於liferay和struts應用整合請教?
- 關於oracle補充日誌作用的理解Oracle
- 關於"在Linux下訪問Windows分割槽"的補充(轉)LinuxWindows
- Git——關於Git的一些補充(1)Git
- 擴充套件你的STRUTS (轉)套件
- 關於openssl應用的對話 (轉)
- 有關元件的補充~~~~~~~元件
- 【BUG】關於手動打包、ANT實現的 補充
- 關於http包中的handlerHTTP
- 關於Quick.logger的一點點補充UI
- 關於一些nginx的高階擴充套件應用Nginx套件
- 關於 Exception:Xml中的非法字元ExceptionXML字元
- 關於第五章圖處理的補充說明
- 關於struts開發的疑惑
- 關於一些nginx的高階擴充套件應用薦Nginx套件
- 關於包(Package)應用規範的說明 (轉)Package
- 請問下struts1.1和struts1.2的區別?
- 關於積木式開發的HANDLER
- [Jenkins]關於slave連結不上master的補充說明JenkinsAST
- 關於:ERP做成EXCEL,是成功還是失敗 的補充Excel
- 關於struts,webwork,jetspeed,turbine等的適用性問題Web
- 關於Handler.removemessages方法REM
- 基於報警處理的補充
- 關於Struts的學習和使用
- 你知道PHP中Exception, Error Handler的這些細PHPExceptionError
- 關於Oracle LOGMNR找不到dml操作及補充日誌相關Oracle
- 關於webgl的大型應用Web
- 關於值物件的應用物件
- 關於rowid的應用
- Struts1.1執行錯誤!
- 關於Struts框架簡介框架
- 關於WEB應用程式的列印元件開發初探 (轉)Web元件
- 網路播放器的補充 (轉)播放器
- 哪裡有關於Struts標籤庫的詳細介紹和應用例項呢?
- 1.1. 電阻篇----硬體設計指南(持續補充更新)