精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳解SpringBoot錯誤處理

開發 前端
如果要顯示給定狀態代碼的自定義HTML錯誤頁面,可以將文件添加到/error目錄中。錯誤頁面可以是靜態HTML(即添加到任何靜態資源目錄下),也可以使用模板構建。文件的名稱應該是確切的狀態代碼或序列掩碼。

環境:SpringBoot2.7.16

1. 簡介

默認情況下,Spring Boot提供了一個/error映射,以合理的方式處理所有錯誤,并且它在servlet容器中注冊為“全局”錯誤頁面。對于機器客戶端,它會生成一個JSON響應,其中包含錯誤、HTTP狀態和異常消息的詳細信息。對于瀏覽器客戶端,有一個“白標簽”錯誤視圖,它以HTML格式呈現相同的數據(要自定義它,只需要定義一個以error 為beanName的View bean對象)。

如果需要自定義默認的錯誤處理行為,可以通過設置server.error相應屬性。

要完全替換默認行為,可以實現ErrorController并注冊為Bean,或者添加ErrorAttributes類型的bean。

BasicErrorController可以用作自定義ErrorController的基類。如果想為新的內容類型添加處理程序,這一點尤其有用(默認情況是專門處理text/html,并為其他所有內容提供后備)。要做到這一點,請擴展BasicErrorController,添加一個帶有具有products屬性的@RequestMapping的公共方法,并創建一個新類型的bean。

從Spring Framework 6.0開始,支持RFC 7807 Problem Details。Spring MVC可以使用application/pproblem+json媒體類型生成自定義錯誤消息,如:

{
  "type": "http://www.pack.com/users/666",
  "title": "Unknown project",
  "status": 404,
  "detail": "xxxxx",
  "instance": "/users/666"
}

可以通過將spring.mvc.problemdetails.enabled設置為true來啟用此支持。

還可以定義一個用@ControllerAdvice注釋的類,以自定義JSON格式輸出,如以下示例所示:

@RestControllerAdvice(basePackageClasses = SomeController.class)
public class MyControllerAdvice extends ResponseEntityExceptionHandler {


  @ExceptionHandler(Exception.class)
  public ResponseEntity<?> handleControllerException(HttpServletRequest request, Throwable ex) {
    HttpStatus status = getStatus(request);
    return new ResponseEntity<>(new MyErrorBody(status.value(), ex.getMessage()), status);
  }


  private HttpStatus getStatus(HttpServletRequest request) {
    Integer code = (Integer) request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
    HttpStatus status = HttpStatus.resolve(code);
    return (status != null) ? status : HttpStatus.INTERNAL_SERVER_ERROR;
  }


}

2. 自定義錯誤頁

如果要顯示給定狀態代碼的自定義HTML錯誤頁面,可以將文件添加到/error目錄中。錯誤頁面可以是靜態HTML(即添加到任何靜態資源目錄下),也可以使用模板構建。文件的名稱應該是確切的狀態代碼或序列掩碼。

例如,要將404映射到靜態HTML文件,目錄結構如下:

src/
 +- main/
     +- java/
     |   + <source code>
     +- resources/
         +- public/
             +- error/
             |   +- 404.html
             +- <other public assets>

要使用FreeMarker模板映射所有5xx錯誤,目錄結構如下:

src/
 +- main/
     +- java/
     |   + <source code>
     +- resources/
         +- templates/
             +- error/
             |   +- 5xx.ftlh
             +- <other templates>

對于更復雜的映射,還可以添加實現ErrorViewResolver接口的bean,如以下示例所示:

@Component
public class PackErrorViewResolver implements ErrorViewResolver {


  @Override
  public ModelAndView resolveErrorView(HttpServletRequest request, HttpStatus status, Map<String, Object> model) {
    if (status == HttpStatus.INTERNAL_SERVER_ERROR) {
      return new ModelAndView("error") ;
    }
    return null ;
  }
}

3. 向容器注冊錯誤頁

對于不使用Spring MVC的應用程序,可以使用ErrorPageRegistrar接口直接注冊ErrorPages。這種抽象直接與底層嵌入式Servlet容器一起工作,即使沒有Spring MVC DispatcherServlet也能工作。

@Configuration
public class PackErrorPagesConfiguration {


  @Bean
  public ErrorPageRegistrar errorPageRegistrar() {
    return this::registerErrorPages;
  }


  private void registerErrorPages(ErrorPageRegistry registry) {
    registry.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400"));
  }
}

4. 默認錯誤頁注冊原理

這里以Tomcat為例,SpringBoot內嵌tomcat容器會自動注冊TomcatServletWebServerFactory該類進行Tomcat容器的配置,這其中就包括將錯誤頁注冊到tomcat中。并且該類實現了ErrorPageRegistry接口,該類專門用來注冊錯誤頁。

public class TomcatServletWebServerFactory {
  public WebServer getWebServer(...) {
    Tomcat tomcat = new Tomcat();
    // ...
    prepareContext(...);
  }
  protected void prepareContext(...) {
    // ...
    configureContext(...)
  }
  protected void configureContext(...) {
    // ...
    // 獲取容器中定義的所有ErrorPage錯誤頁
    for (ErrorPage errorPage : getErrorPages()) {
      org.apache.tomcat.util.descriptor.web.ErrorPage tomcatErrorPage = new org.apache.tomcat.util.descriptor.web.ErrorPage();
      tomcatErrorPage.setLocation(errorPage.getPath());
      tomcatErrorPage.setErrorCode(errorPage.getStatusCode());
      tomcatErrorPage.setExceptionType(errorPage.getExceptionName());
      context.addErrorPage(tomcatErrorPage);
    }
  }
}

這些ErrorPage通過如下方式被添加到上面的TomcatServletWebServerFactory中

SpringBoot會注冊一個ErrorPageRegistrarBeanPostProcessor處理器

public class ErrorPageRegistrarBeanPostProcessor implements BeanPostProcessor, BeanFactoryAware {
  public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    // 上面說了TomcatServletWebServerFactory實現了ErrorPageRegistry接口
    if (bean instanceof ErrorPageRegistry) {
      postProcessBeforeInitialization((ErrorPageRegistry) bean);
    }
    return bean;
  }
  private void postProcessBeforeInitialization(ErrorPageRegistry registry) {
    for (ErrorPageRegistrar registrar : getRegistrars()) {
      registrar.registerErrorPages(registry);
    }
  }
  private Collection<ErrorPageRegistrar> getRegistrars() {
    if (this.registrars == null) {
      // 獲取容器中的所有ErrorPageRegistrar
      this.registrars = new ArrayList<>(
          this.beanFactory.getBeansOfType(ErrorPageRegistrar.class, false, false).values());
      this.registrars.sort(AnnotationAwareOrderComparator.INSTANCE);
      this.registrars = Collections.unmodifiableList(this.registrars);
    }
    return this.registrars;
  }
}

注意:自定義ErrorPageRegistrar時,我們可以通過實現Ordered接口控制優先級

以上是本篇文章的全部內容,希望對你有幫助。

責任編輯:武曉燕 來源: Spring全家桶實戰案例源碼
相關推薦

2011-05-25 10:26:42

ora-02069錯誤

2021-04-14 07:08:14

Nodejs錯誤處理

2021-03-02 09:12:25

Java異常機制

2022-11-16 08:41:43

2014-11-17 10:05:12

Go語言

2010-06-01 16:14:04

2009-08-05 16:04:50

2021-04-29 09:02:44

語言Go 處理

2023-10-28 16:30:19

Golang開發

2016-08-19 10:41:42

Swift 2錯誤

2017-03-08 08:57:04

JavaScript錯誤堆棧

2015-08-19 14:11:56

SQL Server錯誤處理

2017-04-06 14:40:29

JavaScript錯誤處理堆棧追蹤

2023-12-26 22:05:53

并發代碼goroutines

2023-11-08 15:04:55

事務GORM

2009-06-19 16:20:14

ASP.NET錯誤處理

2023-10-08 20:31:18

React

2025-01-16 16:36:00

2016-09-07 20:28:17

MySQL存儲數據庫

2025-03-18 09:20:00

Go語言Golang
點贊
收藏

51CTO技術棧公眾號

欧美另类视频在线观看| 视频一区三区| 国产亚洲欧美久久久久| 国产福利一区二区精品秒拍| 亚洲精品高清在线观看| 精品国产乱码久久久久久久软件| 五月婷婷激情视频| 日韩欧美网址| 亚洲电影免费观看| 免费看国产黄色片| 国内小视频在线看| 久久欧美中文字幕| 亚洲精品欧美日韩| 丰满少妇xoxoxo视频| 91精品在线观看国产| 日韩av一区二区在线| 日韩在线不卡一区| 欧美男男激情videos| 国产精品国产三级国产aⅴ中文 | 欧美一区久久久| 亚洲欧洲成人av每日更新| 国产伦精品一区二区三区照片 | 久久精品亚洲一区二区| 久久久91精品国产一区不卡| 国产成人无码一区二区在线观看| 少妇高潮一区二区三区99| 欧美日韩亚洲激情| 日韩精品一区二区三区电影| 韩国三级在线观看久| 国产成人av电影| 国产在线观看精品| 91视频久久久| 国产欧美欧美| 久久久久久久久久国产| 成人在线观看小视频| 精品久久视频| 亚洲欧美制服第一页| 香蕉视频免费网站| 另类视频一区二区三区| 欧美日韩视频在线观看一区二区三区| 亚洲人精品午夜射精日韩| 久操视频在线播放| 国产精品久久久久影院色老大| 久久久久久一区| 日韩一区二区三区不卡| 国产一区在线电影| 青青草av在线播放| www成人免费| 成年人免费观看视频网站| 精品伊人久久| 3d成人h动漫网站入口| 国产 porn| 精品视频一区二区三区四区五区| 精品国产乱码久久久久久天美| 欧美日韩视频免费| 婷婷在线播放| 夜夜精品视频一区二区| 成人午夜免费剧场| 天堂8中文在线| 亚洲午夜在线观看视频在线| 欧美一区二区在线视频| av免费看网址| www.51av欧美视频| 精品久久在线播放| 成人一级片网站| 黄色亚洲网站| 欧美性生交片4| 岛国毛片在线播放| 95精品视频| 日韩欧美你懂的| 人妻互换一二三区激情视频| 猫咪成人在线观看| 日韩毛片中文字幕| 美女被到爽高潮视频| 欧美日韩亚洲在线观看| 最近的2019中文字幕免费一页| 亚洲精品电影院| 亚洲国产精品久久久久蝴蝶传媒| 欧美另类极品videosbest最新版本| 超碰手机在线观看| 伊人蜜桃色噜噜激情综合| 91成人在线观看国产| 免费观看日批视频| 久久99精品久久久久久国产越南 | 97超碰免费观看| 污的网站在线观看| 色综合天天在线| 浓精h攵女乱爱av| 国产一区二区久久久久| 亚洲国产精品成人av| 精品人妻互换一区二区三区| 美女少妇全过程你懂的久久 | 国产精品.com| 成人h动漫精品一区二区无码| 黑人巨大精品欧美黑白配亚洲| 99中文视频在线| 你懂的在线看| 亚洲精品第一国产综合野| 一女被多男玩喷潮视频| 99久久婷婷国产综合精品首页| 91麻豆精品91久久久久久清纯| youjizz.com国产| gogogo高清在线观看一区二区| 欧美大尺度在线观看| 日本中文字幕第一页| 蜜臀va亚洲va欧美va天堂| 国产日产欧美一区二区三区| 国产精品区一区二区三在线播放| 福利片在线看| 亚洲成人一区二区| 在线观看岛国av| 天天久久夜夜| 美女av一区二区| 一区二区三区麻豆| 成人国产一区二区三区精品| 色一情一乱一伦一区二区三区丨| 日韩伦理电影网站| 欧美区在线观看| 大又大又粗又硬又爽少妇毛片 | 亚洲不卡在线| 中文字幕日韩欧美| 依依成人综合网| 成人免费精品视频| 中文字幕在线中文字幕日亚韩一区| 一区二区精品伦理...| 日韩欧美在线一区二区三区| 国产精品无码无卡无需播放器| 国产日本精品| 国产精品一区二区av| 麻豆tv免费在线观看| 91国产丝袜在线播放| 菠萝菠萝蜜网站| 国产一区欧美| 亚洲影影院av| 黄色网在线免费观看| 欧美视频三区在线播放| 久久偷拍免费视频| 在线看片日韩| 国产伦精品一区二区三毛| 99热国产在线| 欧美一级黄色片| 国产黄色小视频网站| 久久国产尿小便嘘嘘| 亚洲va韩国va欧美va精四季| 欧美一区久久久| 亚洲人成网7777777国产| 在线观看亚洲欧美| 99riav一区二区三区| 欧美一级片免费播放| 国产福利资源一区| 欧美极品少妇xxxxⅹ裸体艺术| 精品国产乱码久久久久久蜜臀网站| 成人免费在线播放视频| 日韩欧美理论片| 91精品国产视频| 亚洲qvod图片区电影| 91精选在线| 欧美大片在线观看| 国产亚洲精品久久久久久打不开| 成人午夜电影网站| 精品无码一区二区三区在线| 日韩美女国产精品| 青草成人免费视频| 九色在线播放| 欧美日韩一级视频| xxxx日本少妇| 成人精品gif动图一区| 国产亚洲综合视频| 国产探花在线精品| 国产精品亚洲欧美导航| 精品欧美色视频网站在线观看| 欧美一区二区在线视频| 欧美一级高潮片| 久久综合色一综合色88| 九色91popny| 欧美黄免费看| 精品国产免费久久久久久尖叫| 超碰超碰人人人人精品| 最新中文字幕亚洲| 国产富婆一级全黄大片| 五月婷婷综合激情| 免费看日本黄色片| 国产精品亚洲第一区在线暖暖韩国| 国产乱人伦精品一区二区三区| 久久国产精品色av免费看| 国产成人91久久精品| 麻豆传媒免费在线观看| 亚洲国产女人aaa毛片在线| 欧美黄色一级大片| 亚洲免费视频中文字幕| 国产麻豆天美果冻无码视频| 另类小说综合欧美亚洲| 免费特级黄色片| 精品无人区麻豆乱码久久久| 亚洲精品免费av| 写真福利精品福利在线观看| 欧美成人sm免费视频| 免费理论片在线观看播放老| 91精品国产全国免费观看| 免费在线观看黄网站| 国产精品灌醉下药二区| 99久久人妻精品免费二区| 久久91精品国产91久久小草| 亚洲人成电影在线观看天堂色| 中文在线观看免费视频| 麻豆91在线播放| 97国产精东麻豆人妻电影| 97精品国产福利一区二区三区| 国产亚洲欧美一区二区| 成人在线视频免费看| 97国产真实伦对白精彩视频8| 成人在线视频成人| 精品福利一区二区三区免费视频| 国产偷人爽久久久久久老妇app| 亚洲一区二区欧美日韩| 国产精品久久久久久成人| 成人国产精品免费网站| 亚洲一区二区三区观看| 欧美亚洲在线| 成人精品视频在线播放| 国产精品99久久| 欧美一区二区三区精美影视 | 两个人看的在线视频www| 北条麻妃99精品青青久久| 黄色av免费在线观看| 亚洲精品456在线播放狼人| 99精品免费观看| 精品视频在线免费观看| 好看的av在线| 亚洲成av人**亚洲成av**| wwwav国产| 一区二区中文视频| 成人激情五月天| 久久久精品影视| 中文字幕5566| 91欧美激情一区二区三区成人| 国产白袜脚足j棉袜在线观看| 国产成人综合视频| 日本一二三四区视频| 久久97超碰国产精品超碰| 国产一级片自拍| 青青草成人在线观看| 欧美一级片中文字幕| 新67194成人永久网站| av免费观看网| 欧美亚洲专区| www黄色在线| 久久精品在线| 成人黄色一区二区| 天堂蜜桃一区二区三区| 亚洲乱码中文字幕久久孕妇黑人| 国产亚洲激情| 粗暴91大变态调教| 日韩精品一级二级| 日韩一级理论片| 另类综合日韩欧美亚洲| 欧美成人乱码一二三四区免费| 久久国产精品无码网站| 91看片破解版| 国产高清无密码一区二区三区| 波多野结衣中文字幕在线播放| 国产麻豆视频精品| 中文字幕无码毛片免费看| 丁香五精品蜜臀久久久久99网站| 国产国语老龄妇女a片| a在线欧美一区| 免费在线观看你懂的| 国产清纯美女被跳蛋高潮一区二区久久w | 日韩成人午夜影院| 欧美精品一区二区三区久久久竹菊| 国内自拍中文字幕| 一本综合精品| 超碰影院在线观看| 精品一区二区三区在线观看国产| 亚洲一级片免费观看| 成人av电影在线网| 日韩一级av毛片| 自拍偷拍国产亚洲| 国产在线视频二区| 色婷婷精品大在线视频| 91禁在线观看| 亚洲大胆人体av| 国产爆初菊在线观看免费视频网站 | 懂色av蜜臀av粉嫩av永久| 亚洲欧美日韩一区二区| 国产精品美女在线观看| 国产亚洲人成a在线v网站| 亚洲综合日韩在线| 天堂俺去俺来也www久久婷婷| 水蜜桃一区二区| 欧美 日韩 国产一区二区在线视频| 麻豆tv在线播放| 青草国产精品久久久久久| 午夜诱惑痒痒网| 2021中文字幕一区亚洲| 日韩国产第一页| 欧美日韩国产综合视频在线观看中文| 中文字幕人妻一区二区在线视频| 精品嫩草影院久久| 成年人在线视频| 久久久久久久久久久人体| avav成人| 国产综合av一区二区三区| 99久久99久久精品国产片桃花| 无码粉嫩虎白一线天在线观看 | aaa在线观看| 97精品视频在线播放| 久久天堂影院| 免费国产一区| 亚洲午夜精品久久久久久app| 精品亚洲一区二区三区四区| 95精品视频在线| 99久久精品免费看国产一区二区三区| 欧美a视频在线| 欧美不卡在线一区二区三区| 欧美特黄一级| 午夜剧场在线免费观看| 国产午夜精品一区二区三区嫩草 | 黄色片网站在线播放| 五月婷婷另类国产| 亚洲第一大网站| www国产精品视频| 成人在线视频播放| 精品在线视频一区二区三区| 欧美激情1区2区3区| 中文字幕国产免费| 久久精品视频免费观看| 日本一本高清视频| 日韩精品在线一区| 激情视频在线观看| 国产精品视频地址| 国产精品亚洲二区| av网站在线观看不卡| 波多野结衣亚洲一区| 久久久久久国产精品视频| 91精品一区二区三区久久久久久| 福利视频在线看| 国产精品国语对白| 国内黄色精品| 已婚少妇美妙人妻系列| 91视频免费看| wwwwww国产| 亚洲欧美国产制服动漫| 欧美freesex黑人又粗又大| 国产欧美一区二区三区另类精品| 欧美伊人久久| 久久久久久国产精品日本| 亚洲另类中文字| 午夜精品久久久久久久99| 欧美肥婆姓交大片| 日本在线一区二区三区| 亚洲爆乳无码精品aaa片蜜桃| 国产成人精品综合在线观看| 麻豆亚洲av成人无码久久精品| 日韩三级视频在线看| 色呦呦在线看| 国产亚洲情侣一区二区无| 99成人精品| 日韩av在线看免费观看| 在线免费不卡视频| 亚洲s色大片| 91精品在线观| 激情综合亚洲| 毛片网站免费观看| 欧美午夜精品久久久久久孕妇| 秋霞影院午夜丰满少妇在线视频| 91精品久久久久久久久中文字幕 | 性欧美videossex精品| 国产精品久久久久久户外露出 | 日本特黄特色aaa大片免费| 亚洲国内精品视频| 午夜精品久久久久久久久久蜜桃| 午夜精品美女久久久久av福利| 激情图区综合网| 国产精品9191| 亚洲天堂久久av| 4438五月综合| 少妇高潮喷水在线观看| 久久精品亚洲精品国产欧美| 一级黄色片在线| 久久久久久九九九| 国产精品自拍区| 久久精品久久99| 黑人与娇小精品av专区| 天堂а√在线资源在线| 国产精品免费看一区二区三区| 亚洲一区观看| 51精品免费网站| 日韩精品免费在线视频| 九九热这里有精品| 成人黄色大片网站| 亚洲国产激情av| 老司机午夜福利视频| 国产精品都在这里| 欧美涩涩视频| 亚洲图片第一页| 欧美精品一区男女天堂| 男人天堂久久| 欧美 日韩 国产 高清| 亚洲欧美综合网|