国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

SpringMVC異常處理句柄這些細節,你知道嗎?

開發 前端
SpringMVC異常處理的基本使用,通過@ExceptionHandler注解標注方法,在上面的方法中都接受的是異常類,那這方法可以接收什么樣的參數及返回值呢?

回顧

@Controller和@ControllerAdvice類可以使用@ExceptionHandler注解標注方法來處理控制器方法的異常,如下例所示:

局部異常處理

@Controller
public class SimpleController {

// ...
// 只能處理當前SimpleController中發生的異常
@ExceptionHandler
public ResponseEntity<String> handle(Exception ex) {
// ...
}

}

全局異常處理

@RestControllerAdvice
public class TestControllerAdvice {

// 全局異常處理
@ExceptionHandler
public Object handle(Exception e) {
return "我是全局異常: " + e.getMessage() ;
}

}

指定能處理的異常類型

@ExceptionHandler({FileSystemException.class, RemoteException.class})
public ResponseEntity<String> handle(Exception ex) {
// ...
}

在@ExceptionHandler中指明能夠處理的異常類。

以上是回顧了SpringMVC異常處理的基本使用,通過@ExceptionHandler注解標注方法,在上面的方法中都接受的是異常類,那這方法可以接收什么樣的參數及返回值呢?

異常句柄參數

@ExceptionHandler方法支持以下參數:

方法參數

描述

Exception type

用于訪問引發的異常。

HandlerMethod

用于訪問引發異常的控制器方法。

WebRequest, NativeWebRequest

對請求參數、請求和會話屬性的通用訪問,而不直接使用 Servlet API。

javax.servlet.ServletRequest, javax.servlet.ServletResponse

選擇任何特定的請求或響應類型(例如,ServletRequest或HttpServletRequest或Spring的MultipartRequest或MultipartHttpServletRequest)。

javax.servlet.http.HttpSession

強制會話的存在。因此,這樣的參數永遠不會為空。注意,會話訪問不是線程安全的。如果允許多個請求并發訪問一個會話,可以考慮將RequestMappingHandlerAdapter實例的synchronizeOnSession標志設置為true。

java.security.Principal

當前已驗證的用戶-如果已知,可能是特定的Principal實現類。

HttpMethod

請求的HTTP方法。

java.util.Locale

當前請求區域設置,由可用的最特定的LocaleResolver確定——實際上是配置的LocaleResolver或LocaleContextResolver。

java.util.TimeZone, java.time.ZoneId

與當前請求關聯的時區,由LocaleContextResolver確定。

java.io.OutputStream, java.io.Writer

用于訪問由Servlet API公開的原始響應體。

java.util.Map, org.springframework.ui.Model, org.springframework.ui.ModelMap

用于訪問錯誤響應的模型。總是空的。

RedirectAttributes

指定在重定向情況下使用的屬性-(將被追加到查詢字符串中)和臨時存儲的flash屬性,直到重定向后的請求。請參見重定向屬性和Flash屬性。

@SessionAttribute

對于任何會話屬性的訪問,與作為類級@SessionAttributes聲明的結果存儲在會話中的模型屬性相反。更多細節請參見@SessionAttribute。

@RequestAttribute

用于訪問請求屬性。詳見@RequestAttribute。

異常句柄返回值

@ExceptionHandler方法支持以下返回值:

返回值

描述

@ResponseBody

返回值通過HttpMessageConverter實例轉換并寫入響應。看到@ResponseBody。

HttpEntity<B>, ResponseEntity<B>

返回值指定通過HttpMessageConverter實例轉換完整響應(包括HTTP報頭和正文)并將其寫入響應。看到ResponseEntity。

String

要用ViewResolver實現解析的視圖名稱,并與隱式模型一起使用——通過命令對象和@ModelAttribute方法確定。處理程序方法還可以通過聲明model參數(前面描述過)以編程方式豐富模型。

View

一個用于呈現隱式模型的View實例——通過命令對象和@ModelAttribute方法確定。處理程序方法還可以通過聲明model參數(前面描述過)以編程方式豐富模型。

java.util.Map, org.springframework.ui.Model

屬性被添加到隱式模型中,視圖名通過RequestToViewNameTranslator隱式確定。

@ModelAttribute

添加到模型中的屬性,通過RequestToViewNameTranslator隱式確定視圖名。

注意@ModelAttribute是可選的。請參閱該表末尾的“任何其他返回值”。

ModelAndView object

要使用的視圖和模型屬性以及(可選的)響應狀態。

void

具有void返回類型(或空返回值)的方法,如果它還具有ServletResponse、OutputStream參數或@ResponseStatus注釋,則認為它已經完全處理了響應。如果控制器已經做了一個正的ETag或lastModified時間戳檢查(詳情請參閱Controllers),同樣也是正確的。

如果以上都不為真,void返回類型也可以表示REST控制器的“無響應體”或HTML控制器的默認視圖名稱選擇。

Any other return value

如果返回值與上述任何一個都不匹配,并且不是簡單類型(由BeanUtils#isSimpleProperty決定),默認情況下,它將被視為要添加到模型中的模型屬性。如果是簡單類型,則仍未解決。

REST API異常

REST服務的一個常見需求是在響應體中包含錯誤詳細信息。Spring框架不會自動執行此操作,因為響應體中的錯誤細節表示是特定于應用程序的。但是,@RestController可以使用帶有ResponseEntity返回值的@ExceptionHandler方法來設置響應的狀態和主體。這樣的方法也可以在@ControllerAdvice類中聲明,以便全局應用它們。

在響應體中使用錯誤細節實現全局異常處理的應用程序應該考慮擴展ResponseEntityExceptionHandler,它為Spring MVC引發的異常提供處理,并提供自定義響應體的鉤子。要使用它,可以創建ResponseEntityExceptionHandler的子類,用@ControllerAdvice注釋它,重寫必要的方法,并將其聲明為Spring bean,如下:

@RestControllerAdvice
static class CustomResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {

@Override
protected ResponseEntity<Object> handleExceptionInternal(Exception ex, Object body, HttpHeaders headers,HttpStatus status, WebRequest request) {
System.out.println(">>>>>>>>>>> - body - " + body) ;
System.out.println(">>>>>>>>>>> - headers - " + headers) ;
System.out.println(">>>>>>>>>>> - status - " + status) ;
return new ResponseEntity<>(ex.getMessage(), headers, status) ;
}

}

ResponseEntityExceptionHandler類中內置了很多類型的異常處理

public abstract class ResponseEntityExceptionHandler {
@ExceptionHandler({
HttpRequestMethodNotSupportedException.class,
HttpMediaTypeNotSupportedException.class,
HttpMediaTypeNotAcceptableException.class,
MissingPathVariableException.class,
MissingServletRequestParameterException.class,
ServletRequestBindingException.class,
ConversionNotSupportedException.class,
TypeMismatchException.class,
HttpMessageNotReadableException.class,
HttpMessageNotWritableException.class,
MethodArgumentNotValidException.class,
MissingServletRequestPartException.class,
BindException.class,
NoHandlerFoundException.class,
AsyncRequestTimeoutException.class
})
@Nullable
public final ResponseEntity<Object> handleException(Exception ex, WebRequest request) throws Exception {
HttpHeaders headers = new HttpHeaders();

if (ex instanceof HttpRequestMethodNotSupportedException) {
HttpStatus status = HttpStatus.METHOD_NOT_ALLOWED;
return handleHttpRequestMethodNotSupported((HttpRequestMethodNotSupportedException) ex, headers, status, request);
}
else if (ex instanceof HttpMediaTypeNotSupportedException) {
HttpStatus status = HttpStatus.UNSUPPORTED_MEDIA_TYPE;
return handleHttpMediaTypeNotSupported((HttpMediaTypeNotSupportedException) ex, headers, status, request);
}
// ...
else {
throw ex;
}
}
}
責任編輯:武曉燕 來源: 實戰案例錦集
相關推薦

2020-10-28 11:20:55

vue項目技

2015-06-29 09:06:51

2023-01-28 09:38:48

接口SpringMVC

2020-11-18 07:52:08

2020-12-24 15:26:07

Redis數據庫

2015-07-03 11:20:41

編程學習方法

2024-02-26 08:19:00

WebSpring容器

2016-01-11 09:48:07

2021-08-05 18:21:29

Autowired代碼spring

2016-03-18 19:03:35

認知計算IBM

2018-08-07 09:29:35

數據庫MySQL優化方法

2021-11-10 15:37:49

Go源碼指令

2022-11-10 09:00:41

2018-05-11 15:53:59

2024-08-09 11:07:46

緩存檢索filter

2024-09-05 09:25:59

SpringUserDAO接口

2017-11-09 15:29:21

CPU溫度常識

2018-03-07 06:37:14

開源項目源代碼云計算

2019-07-08 10:18:38

MPLSIP數據

2019-02-12 11:15:15

Spring設計模式Java
點贊
收藏

51CTO技術棧公眾號

精品中文一区| 日韩成人综合网站| 国产呦萝稀缺另类资源| 国产精品v日韩精品| a级片在线免费| 欧美日韩黄色大片| 欧美xxxx18| 91美女片黄在线| 黄色特一级视频| 日韩黄色在线观看| 国产伦理一区二区三区| 欧美电影免费播放| 97久久超碰福利国产精品…| 素人啪啪色综合| 国产丝袜高跟一区| 久久国产精品黑丝| 欧美一区二区私人影院日本| 精品av中文字幕在线毛片| 亚洲韩国精品一区| 男人j桶女人的网站| 国产欧美一区二区三区在线老狼| 欧美精品在欧美一区二区| 男女男精品视频| 日本黄网免费一区二区精品| 性色一区二区三区| 国产专区一区二区| 亚洲欧美日本视频在线观看| 鲁丝片一区二区三区| 精品999网站| 免费成人看片网址| 亚洲人体大胆视频| 亚洲午夜精品国产| 国产精品一区三区| 又粗又黑又大的吊av| 久久精品欧美日韩精品| 污污网站免费观看| 亚洲综合免费观看高清完整版在线| 欧美aaa一级片| 亚洲国产精品久久人人爱| 国产传媒视频在线观看| 亚洲成人免费视| 大胆av不用播放器在线播放 | www成人免费| 国产精选一区二区三区| www.好吊操| 国产欧美日韩综合精品一区二区| 国产一伦一伦一伦| 亚洲一区在线电影| 欧美69xxxxx| 欧美日韩黄色影视| 亚洲人成午夜免电影费观看| 最近2019年日本中文免费字幕| 免费精品一区| 国产精品日本精品| 日韩av不卡一区二区| 青青草原成人网| 亚洲一级二级三级在线免费观看| 92国产在线视频| 色妞欧美日韩在线| 欧美日韩一区二区三区视频播放| 亚洲综合中文字幕在线观看| 男女男精品网站| 亚洲这里只有精品| 欧美色图免费看| 99久久er| 国产精品私拍pans大尺度在线| 国产精品久久久久久久免费软件| 无码人妻aⅴ一区二区三区日本| 中文字幕一区av| 91在线品视觉盛宴免费| 亚洲视频在线播放| 91亚洲一区| 最新av网址在线观看| 亚洲精品老司机| 精精国产xxxx视频在线中文版| 欧美日韩国产999| 亚洲一区欧美| 久激情内射婷内射蜜桃| 午夜私人影院久久久久| 黑人巨大亚洲一区二区久| 国产精品扒开腿爽爽爽视频| 久久99久久精品| 最近中文字幕在线| 久久精品中文字幕免费mv| 伊人久久婷婷| 99爱视频在线观看| 亚洲国产小视频在线观看| 亚洲+小说+欧美+激情+另类 | 欧美性猛交xxxx乱大交极品| 男人av在线播放| 国产99久久精品一区二区永久免费| 日韩av不卡在线观看| 精品一二三四| 日韩少妇与小伙激情| 在线看片一区| av高清资源| 中文字幕欧美精品在线| 亚洲电影成人| 丁香花高清视频完整版在线观看| 亚洲国产毛片完整版| 欧美成人milf| 天天操天天爱天天爽| 欧美大片一区二区| 久久视频精品| www.色就是色| 一本大道亚洲视频| 久久福利一区| 极品美乳网红视频免费在线观看| 欧美激情视频一区二区| 激情综合色播激情啊| 成a人片在线观看www视频| 日韩美女av在线免费观看| 成人国产精品免费网站| 精品自拍一区| 91视频婷婷| 夜夜精品视频一区二区| 亚洲三级在线| 成人污网站在线观看| 日韩精品一区二区三区三区免费| 久久精品久久久| 日本高清视频网站www| 欧美激情2020午夜免费观看| 成人av在线影院| 中文字幕资源网在线观看免费 | 欧美日韩小视频| 四虎国产精品免费观看| 宅男午夜电影| 人九九综合九九宗合| 中文字幕一区二区三区在线不卡 | 在线观看亚洲色图| 高清欧美性猛交xxxx黑人猛交| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲影院在线观看| 精品一区毛片| 粉嫩欧美一区二区三区| 国产欧美日韩亚洲精品| 色综合久久天天综合网| 亚洲天天影视网| 中国日本在线视频中文字幕| 亚洲国产视频一区二区| 日韩有码一区| 日韩黄色视屏| 国产在线观看精品一区二区三区| 国产嫩草影院久久久久| 九九综合九九| 蜜臀av午夜一区二区三区| 国产香蕉97碰碰久久人人| 亚洲精品极品| 色久视频在线播放| 91久久精品在线| 18成人在线观看| 成人自拍在线| 日韩手机在线观看视频| 欧美一级视频免费在线观看| 亚洲欧洲日韩女同| 欧美韩一区二区| 韩国版免费三体| 国产美女精品视频| 亚洲地区一二三色| 成人一级毛片| 人成在线视频| 成人精品久久av网站| 91精品国产品国语在线不卡| 麻豆精品网站| 欧美日韩大片| 无码aⅴ精品一区二区三区浪潮 | 狠狠色2019综合网| 成人免费短视频| 一区二区三区视频| 久久精视频免费在线久久完整在线看 | 亚洲男女一区二区三区| 波多野结衣在线播放一区| 日本五十路在线| 国产综合久久久久| 在线亚洲人成电影网站色www| 欧美精品一区二区三区久久久竹菊| 久久精品蜜桃| 欧美精品二区三区四区免费看视频| 欧美一级片免费看| 国产亚洲欧美一区在线观看| 亚洲人成网www| 日本福利片高清在线观看| 国产精品免费一区二区三区观看| 日本韩国视频一区二区| 国内精品在线播放| 欧一区二区三区| 桃乃木香奈av在线| 日本在线成人一区二区| 亚洲日本欧美中文幕| 国产精品精品国产色婷婷| 久久国产电影| 色女人在线视频| 国产成人久久婷婷精品流白浆| 国产高清视频一区三区| 欧美日韩在线一区二区| 亚洲欧美综合另类在线卡通| 日韩视频一区二区三区在线播放免费观看 | av超碰在线观看| 久久天天狠狠| 亚洲欧美国产一本综合首页|