springboot自定義 404 500錯誤頁面

weixin_42903592發表於2020-11-16

springboot自定義 404 500錯誤頁面

1:使用thymeleaf模板

使用thymeleaf模板的時候,boot會先到==/resources/templates/error/==資料夾下找自定義錯誤的頁面

錯誤頁面命名規則:錯誤碼.html

2: 沒有使用thymeleaf模板

沒有使用thymeleaf模板的時候,會去靜態資源==/static/error==尋找404.htm、500.html的錯誤提示頁面,

3: 自定義錯誤頁面

錯誤程式碼的型別很多,如400、403、404等等,如果按照上面的方法,需要新增很多頁面而 SpringBoot提供了通用的命名方式,就是使用4xx.html、5xx.html命名,如:

4xx.html表示能匹配到400、403、404……等錯誤

5xx.html表示能匹配到500、501、502……等錯誤

如果404.html和4xx.html同時存在時,優先匹配到404.html

4: 自定義錯誤頁面路徑

參考連結:https://blog.csdn.net/trusause/article/details/84299886

有的時候可能想要自己定義資料夾存放自定義的錯誤頁面,我這邊是在static下新建一個errorpage資料夾,把錯誤頁面都放在這個資料夾之下。

  • 第一種

    package com.baizhi.config.error;
    
    import org.springframework.boot.web.server.ErrorPage;
    import org.springframework.boot.web.server.ErrorPageRegistrar;
    import org.springframework.boot.web.server.ErrorPageRegistry;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.HttpStatus;
    
    /**
     * @Author: Abe
     * Date: 2020/11/16 9:40
     */
    @Configuration
    public class ErrorConfigurar implements ErrorPageRegistrar {
    
        @Override
        public void registerErrorPages(ErrorPageRegistry registry) {
            ErrorPage[] errorPages = new ErrorPage[2];
            errorPages[0] = new ErrorPage(HttpStatus.NOT_FOUND, "/errorpage/404.html");
            errorPages[1] = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/errorpage/500.html");
    
            registry.addErrorPages(errorPages);
        }
    }
    
  • 第二種

    package com.baizhi.config.error;
    
    /**
     * @Author: Abe
     * Date: 2020/11/15 8:31
     */
    import org.springframework.boot.web.server.ConfigurableWebServerFactory;
    import org.springframework.boot.web.server.ErrorPage;
    import org.springframework.boot.web.server.WebServerFactoryCustomizer;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.HttpStatus;
    
    /**
     * 自定義未找到的介面
     * @author lf
     * @date 2019/6/5 - 17:44
     */
    //@Configuration
    public class ErrorPageConfig {
        /**
         * SpringBoot2.0以上版本WebServerFactoryCustomizer代替之前版本的EmbeddedWebServerFactoryCustomizerAutoConfiguration
         *
         * @return
         */
    
    
        @Bean
        public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer() {
    
    //        //第一種:java7 常規寫法
    //        return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
    //            @Override
    //            public void customize(ConfigurableWebServerFactory factory) {
    //                ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html");
    //                factory.addErrorPages(errorPage404);
    //            }
    //        };
            //第二種寫法:java8 lambda寫法
            return (factory -> {
                ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND, "/errorpage/404.html");
                factory.addErrorPages(errorPage404);
            });
        }
    }
    

相關文章