成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

SpringBoot @ControllerAdvice 攔截異常并統一處理

瀏覽:109日期:2023-04-25 10:38:02

在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定義@ExceptionHandler、@InitBinder、@ModelAttribute,并應用到所有@RequestMapping中。參考:@ControllerAdvice 文檔

一、介紹

創建 MyControllerAdvice,并添加 @ControllerAdvice注解。

package com.sam.demo.controller;import org.springframework.ui.Model;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.annotation.*;import java.util.HashMap;import java.util.Map;/** * controller 增強器 * @author sam * @since 2017/7/17 */@ControllerAdvicepublic class MyControllerAdvice { /** * 應用到所有@RequestMapping注解方法,在其執行之前初始化數據綁定器 * @param binder */ @InitBinder public void initBinder(WebDataBinder binder) {} /** * 把值綁定到Model中,使全局@RequestMapping可以獲取到該值 * @param model */ @ModelAttribute public void addAttributes(Model model) { model.addAttribute('author', 'Magical Sam'); } /** * 全局異常捕捉處理 * @param ex * @return */ @ResponseBody @ExceptionHandler(value = Exception.class) public Map errorHandler(Exception ex) { Map map = new HashMap(); map.put('code', 100); map.put('msg', ex.getMessage()); return map; }}

啟動應用后,被 @ExceptionHandler、@InitBinder、@ModelAttribute 注解的方法,都會作用在 被 @RequestMapping 注解的方法上。

@ModelAttribute:在Model上設置的值,對于所有被 @RequestMapping 注解的方法中,都可以通過 ModelMap 獲取,如下:

@RequestMapping('/home')public String home(ModelMap modelMap) { System.out.println(modelMap.get('author'));}//或者 通過@ModelAttribute獲取@RequestMapping('/home')public String home(@ModelAttribute('author') String author) { System.out.println(author);}

@ExceptionHandler 攔截了異常,我們可以通過該注解實現自定義異常處理。其中,@ExceptionHandler 配置的 value 指定需要攔截的異常類型,上面攔截了 Exception.class 這種異常。

二、自定義異常處理(全局異常處理)

spring boot 默認情況下會映射到 /error 進行異常處理,但是提示并不十分友好,下面自定義異常處理,提供友好展示。

1、編寫自定義異常類:

package com.sam.demo.custom;/** * @author sam * @since 2017/7/17 */public class MyException extends RuntimeException { public MyException(String code, String msg) { this.code = code; this.msg = msg; } private String code; private String msg; // getter & setter}

注:spring 對于 RuntimeException 異常才會進行事務回滾。

2、編寫全局異常處理類

創建 MyControllerAdvice.java,如下:

package com.sam.demo.controller;import org.springframework.ui.Model;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.annotation.*;import java.util.HashMap;import java.util.Map;/** * controller 增強器 * * @author sam * @since 2017/7/17 */@ControllerAdvicepublic class MyControllerAdvice { /** * 全局異常捕捉處理 * @param ex * @return */ @ResponseBody @ExceptionHandler(value = Exception.class) public Map errorHandler(Exception ex) { Map map = new HashMap(); map.put('code', 100); map.put('msg', ex.getMessage()); return map; } /** * 攔截捕捉自定義異常 MyException.class * @param ex * @return */ @ResponseBody @ExceptionHandler(value = MyException.class) public Map myErrorHandler(MyException ex) { Map map = new HashMap(); map.put('code', ex.getCode()); map.put('msg', ex.getMsg()); return map; }}

3、controller中拋出異常進行測試。

@RequestMapping('/home')public String home() throws Exception {// throw new Exception('Sam 錯誤'); throw new MyException('101', 'Sam 錯誤');}

啟動應用,訪問:http://localhost:8080/home ,正常顯示以下json內容,證明自定義異常已經成功被攔截。

{'msg':'Sam 錯誤','code':'101'}

* 如果不需要返回json數據,而要渲染某個頁面模板返回給瀏覽器,那么MyControllerAdvice中可以這么實現:

@ExceptionHandler(value = MyException.class)public ModelAndView myErrorHandler(MyException ex) { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName('error'); modelAndView.addObject('code', ex.getCode()); modelAndView.addObject('msg', ex.getMsg()); return modelAndView;}

在 templates 目錄下,添加 error.ftl(這里使用freemarker) 進行渲染:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>錯誤頁面</title></head><body> <h1>$[code]</h1> <h1>${msg}</h1></body></html>

重啟應用,http://localhost:8080/home 顯示自定的錯誤頁面內容。

補充:如果全部異常處理返回json,那么可以使用 @RestControllerAdvice 代替 @ControllerAdvice ,這樣在方法上就可以不需要添加 @ResponseBody。

到此這篇關于SpringBoot @ControllerAdvice 攔截異常并統一處理的文章就介紹到這了,更多相關SpringBoot @ControllerAdvice 攔截異常內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产福利一区在线| 久久久久久九九九九| 国产成人a级片| 91免费看片在线观看| 亚洲福利专区| 欧美专区日韩专区| 欧美成人性福生活免费看| 国产精品免费久久久久| 亚洲午夜在线视频| 国产精品一区二区三区99| 午夜亚洲福利| 色综合久久88色综合天天6| 精品国产网站在线观看| 亚洲免费观看视频| 日韩av在线播放中文字幕| 国产精品三级久久久久三级| 日韩中文欧美在线| jiyouzz国产精品久久| 国产精品乱子乱xxxx| 日韩色视频在线观看| 亚洲一区二区黄色| 成人一区二区视频| 亚洲欧美日产图| 精品久久久久久最新网址| 亚洲影视在线播放| 北岛玲一区二区三区四区| 国产亚洲一级| 久久精品欧美日韩精品 | 亚洲视频一区在线| 久久草av在线| 激情五月***国产精品| 国产**成人网毛片九色 | 久久精品五月婷婷| 日本不卡一二三区黄网| 91黄视频在线| 麻豆91免费看| 欧美一区二区久久久| 久久精品国产亚洲5555| 欧美日韩国产大片| 国产一区二区导航在线播放| 91精品国产一区二区人妖| 粉嫩一区二区三区性色av| 久久色中文字幕| 欧美日韩亚洲一区三区| 亚洲人快播电影网| 人人精品人人爱| 国产激情一区二区三区桃花岛亚洲| 99亚洲一区二区| 久久久99精品免费观看| 久久久国产一区二区三区四区小说| 精品一区二区av| 精品国产一区二区精华| 欧美久久久久| 亚洲国内在线| 在线观看亚洲精品视频| 亚洲美女屁股眼交| 91片在线免费观看| 欧美日韩一区不卡| 亚洲国产精品自拍| 亚洲午夜一级| 国产欧美精品一区二区三区四区| 国产福利一区二区三区视频 | a91a精品视频在线观看| 欧美韩国日本综合| 成人国产精品免费| 蜜桃伊人久久| 亚洲九九爱视频| 欧美福利电影在线观看| 欧美一区二区播放| 久久成人免费电影| 美女爽到呻吟久久久久| 亚洲欧美电影院| 国产精品v欧美精品v日韩| 久久精品视频免费| 成人av一区二区三区| 日韩一区二区三区免费看 | 国产综合精品| 久久婷婷成人综合色| 国产精品一区二区在线看| 欧美日本在线视频| 久久精品国产久精国产爱| 久久久综合网| 五月天欧美精品| 久久av一区二区| 亚洲一区二区精品视频| 亚洲一区精品视频| 亚洲女厕所小便bbb| 亚洲国产欧美国产综合一区 | 国产一区二区三区四区hd| 国产三级精品三级| 99久久国产综合色|国产精品| 日韩欧美一区二区免费| 国精品**一区二区三区在线蜜桃| 欧美视频一区二| 日本aⅴ亚洲精品中文乱码| 老司机午夜精品视频在线观看| 午夜精品在线视频一区| 久久久xxx| 蜜臀国产一区二区三区在线播放| 在线日韩一区二区| 蜜臀av一区二区三区| 欧美伊人久久久久久久久影院| 奇米影视在线99精品| 欧美亚洲一区二区在线观看| 久久精品99国产国产精| 欧美精品视频www在线观看| 国产精品小仙女| 日韩美女天天操| 亚洲色图制服诱惑| 91精品中文字幕一区二区三区| 亚洲高清资源| 粉嫩一区二区三区在线看| 性欧美大战久久久久久久久| 久久久久一区二区三区四区| 在线精品国精品国产尤物884a| 欧美福利电影在线观看| 日本欧美在线观看| 一区二区中文视频| 欧美一级欧美一级在线播放| 免费毛片一区二区三区久久久| 97久久精品人人澡人人爽| 免费看欧美美女黄的网站| 国产精品二三区| 日韩一级黄色大片| 一本一本大道香蕉久在线精品| 国产一区视频在线观看免费| 国产999精品久久久久久| 日日夜夜免费精品| 99视频+国产日韩欧美| 亚洲国产精品成人久久综合一区| 亚洲精选91| 性久久久久久久| 欧美精品v日韩精品v韩国精品v| av在线不卡免费看| 中文字幕日本乱码精品影院| 翔田千里一区二区| 国产呦萝稀缺另类资源| 久久久不卡网国产精品一区| 久久99久久99精品免视看婷婷| 26uuu亚洲| 欧美精品久久99| 色吊一区二区三区| 国产精品推荐精品| 在线观看成人一级片| 99久久99久久精品免费观看| 国产精品一二| 日韩中文欧美在线| 久久综合丝袜日本网| 一本久道综合久久精品| 老司机午夜精品| 国产欧美一区二区三区在线看蜜臀| 国产欧美91| 国产精品正在播放| 中文字幕人成不卡一区| 欧美日韩激情在线| 国产精品大片免费观看| 日本系列欧美系列| 久久久久久久久久电影| 亚洲综合国产激情另类一区| 高清不卡在线观看av| 亚洲日韩欧美一区二区在线| 91精彩视频在线| 午夜天堂精品久久久久| 三级在线观看一区二区| 亚洲精品一区二区三区99| 国产精品入口| av高清不卡在线| 香蕉av福利精品导航| 精品成人在线观看| 久久www成人_看片免费不卡| 丁香婷婷综合色啪| 亚洲视频1区2区| 日韩欧美国产三级电影视频| 一本一本久久| 福利一区福利二区| 亚洲国产综合在线| 日韩一级在线观看| 国产精品社区| 99re6这里只有精品视频在线观看| 日韩中文字幕麻豆| 亚洲国产成人私人影院tom| 在线视频一区二区三区| 欧美日韩大片一区二区三区| 日韩主播视频在线| 精品久久久久久久久久久久久久久久久| 91久久在线| 成人sese在线| 午夜久久电影网| 国产精品毛片a∨一区二区三区| 精品污污网站免费看| 尤物在线精品| 国产成人a级片| 亚洲成人一区在线| 国产女人水真多18毛片18精品视频 | 日韩一区二区高清| 久久精品麻豆| 国产精品porn| 懂色av中文字幕一区二区三区 | 久久国产一区| 亚洲小说欧美另类社区|