javascript
SpringMVC处理自定义异常,通过读取配置文件把错误信息显示在前台页面
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
首先引入jar包,用于讀取配置資源文件:
<!-- commons組件讀取配置文件相關(guān)依賴 -->
??? <dependency>
??????? <groupId>commons-configuration</groupId>
??????? <artifactId>commons-configuration</artifactId>
??????? <version>1.8</version>
??? </dependency>
自定義異常:
public class DuplicateException extends RuntimeException{
?? ?private static final long serialVersionUID = 1L;
?? ?public DuplicateException() {
?? ?}
?? ?public DuplicateException(String message){
?? ??? ?super(message);
?? ?}
}
利用控制器通知注解@ControllerAdvice將自定義異常集中在同一個(gè)地方處理:
/**
?* 帶有@ControllerAdvice的類中,所有帶有@ExceptionHandler的方法會(huì)應(yīng)用到
?* 整個(gè)應(yīng)用程序所有控制器中帶有@RequestMapping注解的方法上
?* 注解@ControllerAdvice本身已經(jīng)使用了@Component注解
?* @author dai
?*
?*/
@ControllerAdvice
public class AppWideExceptionHandler {
?? ?@ExceptionHandler(DuplicateException.class)
?? ?public String duplicateHandler(HttpServletRequest request,DuplicateException ex){
?? ??? ?request.setAttribute("error", ex.getMessage());
?? ??? ?return "error/duplicate";
?? ?}
}
控制器方法拋出自定義異常:
@RequestMapping(value="/register",method=POST)
?? ?public String processRegistration(Spitter spitter) throws IOException{
?? ??? ?if("test".equals(spitter.getUsername())){
?? ??? ??? ?throw new DuplicateException(getProperty("username.duplicate"));
?? ??? ?}
?? ??? ?return "redirect:/spitter/"+spitter.getUsername();
?? ?}
此處用到的自定義錯(cuò)誤提示,是通過讀取property配置文件來獲得。
getProperty()方法是自己封裝好的,如下:
public class PropertiesUtil {
?? ?private static PropertiesConfiguration configuration = null;
?? ?public static String getProperty(String key){
?? ??? ?try {
?? ??? ??? ?configuration = new PropertiesConfiguration("/spittr/props/errors.properties");
?? ??? ?} catch (ConfigurationException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?return configuration.getString(key);
?? ??? ?
?? ?}
?? ?
}
該工具類利用了Commons組件包,/spittr/props/errors.properties為資源文件的項(xiàng)目類加載路徑,注意:
commons-configuration組件拋出的ConfigurationException異常引用了commons-lang-2.6.jar包,所以commons-lang jar包的版本不能太高,這里用的是2.6版本,測(cè)試可以通過。
errors.properties定義如下:
username.duplicate=用戶名重復(fù)!
前臺(tái)JSP相關(guān)代碼:
This is an error page! <br />
error:<c:out value="${error}"></c:out>
項(xiàng)目運(yùn)行后,在前臺(tái)表單輸入用戶名"test",提交后跳轉(zhuǎn)到錯(cuò)誤提示頁(yè)面,并顯示用戶名重復(fù)!
參考資料:《Spring實(shí)戰(zhàn)(第4版)》
轉(zhuǎn)載于:https://my.oschina.net/daigd/blog/759126
總結(jié)
以上是生活随笔為你收集整理的SpringMVC处理自定义异常,通过读取配置文件把错误信息显示在前台页面的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北航算法作业一 约瑟夫环问题
- 下一篇: memcache的windows下的安装