關於 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Git——關於Git的一些補充(1)Git
- 關於Quick.logger的一點點補充UI
- 有關元件的補充~~~~~~~元件
- 關於http包中的handlerHTTP
- [20190312]關於增量檢查點的疑問(補充).txt
- 你知道PHP中Exception, Error Handler的這些細PHPExceptionError
- 關於webgl的大型應用Web
- 1.1. 電阻篇----硬體設計指南(持續補充更新)
- 關於 Web 應用的 Prerender 策略Web
- 關於flex佈局的應用Flex
- Spring Cloud Gateway自定義異常處理Exception HandlerSpringCloudGatewayException
- Struts - NotUtf8Exception: Not valid UTF8! byte Bf in state 0Exception
- 關於 Angular 應用的 Bootstrap 過程Angularboot
- 關於AutoML應用於網路威脅的思考TOML
- Windows原理深入學習系列-訪問控制列表-關於安全描述符的補充Windows
- 關於 Service Worker 和 Web 應用對應關係的討論Web
- MySQL:Innodb 關於Handler_commit每次DML增加2的原因MySqlMIT
- 關於Clean Architecture在android中的應用Android
- 關於 SAP Fiori 應用的離線使用
- 關於Electron框架應用的安全測試框架
- python之執行緒相關操作(補充)Python執行緒
- BOOST應用 無法解析的外部符號 "void __cdecl boost::throw_exception(class std::exception const &)"符號Exception
- Ray:用於擴充套件和分發Python和ML應用的框架套件Python框架
- [應用案例]基於onethink1.1+bootstrap+aceadmin = 睿珂OA管理系統boot
- [20210813]關於測試sql語句子游標的效能的一些補充說明.txtSQL
- Electron + Vue + Vscode構建跨平臺應用(一)知識點補充VueVSCode
- 關於《Java併發程式設計之執行緒池十八問》的補充內容Java程式設計執行緒
- 關於Handler同步屏障你可能不知道的問題
- 1.1. 關於多租戶體系結構
- 原始碼深度解析 Handler 機制及應用原始碼
- RxJS進階——關於流的理解和應用JS
- 談談關於 iOS 的架構以及應用iOS架構
- 關於 Angular 應用 Module 的 forRoot 方法的討論Angular
- Tungsten Fabric知識庫丨關於OpenStack、K8s、CentOS安裝問題的補充K8SCentOS
- 關於SAP的故事(轉)
- EXCEPTION裡捕捉行號(轉)Exception
- 關於 IntelliJ IDEA 2024 安裝使用 (附加啟用碼、補丁)IntelliJIdea
- Struts2所有依賴關係(struts-2.5.14.1)
- JVM補充篇JVM