Struts2学习笔记(五)之异常处理机制
? ? ? ?
? ? ? ? ? ? ? ?我們在知道在軟件開發(fā)中的異常處理是很重要的,作為成熟的MVC框架的Struts2也提供了異常處理處理機制,對于一場處理:用戶發(fā)送請求-->Action控制器-->發(fā)現(xiàn)相應(yīng)的異常-->轉(zhuǎn)到相應(yīng)的試圖進行顯示錯誤信息..
? ? (一)平時我們對于出現(xiàn)異常,可以直接使用try{}catch(){}進行攔截處理,或者使用throw new XXXException()進行拋出異常,看下下execute()方法:
? ? ?
? ? ? ?
? ? ? (二)這個方法直接往外把異常拋給框架了,說明我們不必使用try{}catch(){},進行處理;轉(zhuǎn)而直接使用throw new XXXException()進行異常處理,即聲明式的異常處理;?
? ? ? ??
? ? ? ?下面直接看下聲明式的異常處理,這需要在struts.xml框架中進行配置,設(shè)置設(shè)計到一下一些元素和屬性:
- result:這個屬性指定了之后,當(dāng)Action中出現(xiàn)異常的時候,系統(tǒng)就會轉(zhuǎn)到result素指定的頁面
- exception:在<exception-mapping.../>中,是異常處理類的異常類型,需要寫全名,包括包名;
? ? ? ? ?局部和全局異常映射配置
- 局部異常配置:把<exception-mapping>當(dāng)做為Action的子元素進行配置
- 全部異常配置:使用<global-exception-mappings>然后配置<exception-mapping>這個子元素
? ? ?下面看個例子
? ?①:首先自定義一個MyCustomException類:
package com.jiangqq.exception; /* * 自定義異常類 */ public class MyCustomException extends Exception { private String M_message; public MyCustomException(String p_MeString) { super(p_MeString); this.M_message = p_MeString; } public String getM_message() { return M_message; } public void setM_message(String mMessage) { M_message = mMessage; } } ? ? ? ②:看下Action當(dāng)中的關(guān)鍵代碼:
@Override public String execute() throws Exception { if (!"Hello".equals(username)) { throw new MyCustomException("用戶名錯誤....."); } if (!"World".equals(password)) { throw new MyCustomException("密碼錯誤....."); } return SUCCESS; }? ? ? ?③:struts.xml文件中的配置(先使用局部配置方法)
? ? ? ? 下面是頁面顯示異常信息:
? ? ? ?
? ? ? ? ? ? ? ? ? ??
? ? 可以看出上面是使用局部的異常的配置來進行異常處理的,下面來舉例一下使用全部異常配置
? ? ①:先看下:使用全部的異常類型定義,但是定義result屬性值對應(yīng)的邏輯視圖名使用局部配置
? ??
??①:使全部的異常類型定義與result屬性值對應(yīng)的邏輯視圖名都使用全部配置
? ? ? 【注意】對于局部和全局的映射配置,如果我們配置了全局映射,那就會對所有的Action都有效,但是局部配置的異常只會對當(dāng)前所在的Action有效。如果局部的異常映射和全局異常配置了同一個類型的異常,在本Action內(nèi)部的局部異常映射會直接覆蓋掉全局的配置
? ? ? ?(三)進行在異常的頁面異常信息輸出顯示
? ? 當(dāng)我們拋出異常,在異常處理頁面上面顯示異常信息,可以使用Struts2的標(biāo)簽進行輸出:(Struts2標(biāo)簽配置)
<%@ taglib prefix="s" uri="/struts-tags"%>? ? ?然后使用下面的標(biāo)簽:
? ? ? <s:property value="exception.message">: 輸出自定義的異常的message的信息
? ? ? ? ?
? ? ? 好了今天就學(xué)習(xí)到這里,上面有很多講的不到位之處,還望大家提出來共同交流,共同提高
? ? ??
? ? ? ?代碼下載鏈接:http://download.csdn.net/detail/jiangqq781931404/4194357
? ? ? ? ??
? ? ?
? ? ?
轉(zhuǎn)載于:https://blog.51cto.com/2939716/1376464
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的Struts2学习笔记(五)之异常处理机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php执行系统外部命令的四种方法
- 下一篇: Ext JS 4.1 RC2 Relea