在通常的情況下,我們得到異常以后,需要將頁面導航到一個錯誤提示的頁面,提示錯誤信息。
利用Stuts我們可以采用兩種方式處理異常
一、編程式異常處理
*即我們在Action中調用業(yè)務邏輯層對象的方法時,用try{ }catch的方式來截獲異常之后,手工對異常進行處理
*我們以前的開發(fā)過程中,都是使用編程式的異常處理
*在編程式異常處理的時候,我們可以使用struts的消息處理機制來對這些異常信息進行處理。
二、自動異常處理機制
*即在Action中不捕捉異常,而是將異常拋出給struts框架處理
*我們需要在配置文件中指示struts如何處理這些被拋出的異常
*使用<exception/>元素來定義自動異常處理
方式一在上一篇有關國際化的文章中,我們已經(jīng)涉及過了,這里我們主要說一下方式二。
主要步驟:
1、配置Excepiton標簽
<action path="/login" type="com.jialin.LoginAction" name="userForm" scope="request" validate="true" attribute="uf" input="/index.jsp"> <exception key="login.user.not.found" type="com.jialin.UserNotFoundException" /> <exception key="login.password.error" type="com.jialin.PasswordErrorException" path="/LoginFail.jsp" /> </action>
該Exception只對當前action起作用,也可以配置全局exception
<global-exceptions> <exception key="login.user.not.found" type="com.jialin.UserNotFoundException" /> <exception key="login.password.error" type="com.jialin.PasswordErrorException" path="/LoginFail.jsp" /> </global-exceptions>
哪個優(yōu)先?就近原則。
<exception/>
元素配置的關鍵屬性是:
*key – 即這個異常所對應的錯誤提示消息文本的key,這個key的值,
需要在資源屬性文件中進行定義
*type – 即定義需要處理哪種類型的Exception
*path – 定義一旦出現(xiàn)異常,需要轉向哪個頁面來進行提示,如果不定義path屬性,默認情況下,將使用Action配置中的input屬性的值來作為轉向的頁面
2、
在
JSP
頁面中,使用
<
html:errors
/>
標簽,即可將其異常對應的錯誤消息文本進行顯示
示例:
還是以登錄為例——
LoginAction
**
* 登錄action
*
* @author jialin 作用:取得表單數(shù)據(jù),調用model層業(yè)務邏輯,返回轉向信息
*/
public class LoginAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
UserActionForm userForm = (UserActionForm) form;
String userName = userForm.getName();
int password = userForm.getPassword();
UserManage userManage = new UserManage();
User user = new User();
user.setName(userName);
user.setPassword(password);
//這里不再有trycatch語句
userManage.ValidateUser(user);
return mapping.findForward("success");
}
}
配置文件采用上面列舉出的。
顯示界面使用使用
<
html:errors
/>
標簽,即可將其異常對應的錯誤消息文本進行顯示
效果:
下篇繼續(xù)
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
