SpringBoot?錯誤頁面跳轉方式
SpringBoot錯誤頁面跳轉
SpringBoot實現(xiàn)MVC 404、500等錯誤時跳轉自定義頁面
一、新增配置類
package com.study.demo.config; import org.springframework.boot.web.server.ErrorPage; import org.springframework.boot.web.server.ErrorPageRegistrar; import org.springframework.boot.web.server.ErrorPageRegistry; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; /** ?* 錯誤頁面的配置 ?*/ @Component public class ErrorPageConfig implements ErrorPageRegistrar { ? ? @Override ? ? public void registerErrorPages(ErrorPageRegistry registry) { ? ? ? ? ErrorPage error400Page = new ErrorPage(HttpStatus.BAD_REQUEST, "/errorPageController/error_400"); ? ? ? ? ErrorPage error401Page = new ErrorPage(HttpStatus.UNAUTHORIZED, "/errorPageController/error_401"); ? ? ? ? ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/errorPageController/error_404"); ? ? ? ? ErrorPage error500Page = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/errorPageController/error_500"); ? ? ? ? registry.addErrorPages(error400Page,error401Page,error404Page,error500Page); ? ? } }
二、錯誤頁面跳轉控制器
package com.study.demo.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/errorPageController") public class ErrorPageController { ? ? @RequestMapping("/error_{errorCode}") ? ? public String error(@PathVariable int errorCode){ ? ? ? ? String responseMsg; ? ? ? ? switch (errorCode) { ? ? ? ? ? ? case 400: responseMsg = "/400.html"; break; ? ? ? ? ? ? case 401: responseMsg = "/401.html"; break; ? ? ? ? ? ? case 404: responseMsg = "/404.html"; break; ? ? ? ? ? ? case 500: responseMsg = "/500.html"; break; ? ? ? ? ? ? default: responseMsg = "/404.html"; break; ? ? ? ? } ? ? ? ? return responseMsg; ? ? } }
SpringBoot自定義錯誤頁面
一、錯誤頁面
請求出現(xiàn)錯誤時,跳轉到自定義的頁面中,比如404,假如沒對錯誤進行處理,那么系統(tǒng)默認的頁面與項目的頁面會有很大的不搭。
解決:在默認的靜態(tài)路徑下,新建error文件,里面放入錯誤頁面,頁面命名為錯誤狀態(tài)碼,如:404.html,也可以命名為4xx.html,但如果兩個文件同時存在,那么會優(yōu)先展示404.html
注:靜態(tài)路徑為
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{ "classpath:/META-INF/resources/", ?"classpath:/resources/",? ?"classpath:/static/",? ?"classpath:/public/" ?}; ?// 注:還有一個默認的根路徑 ? ?"/"
二、處理過程
出現(xiàn)4xx或5xx錯誤時,ErrorPageCustomizer生效,就會來到/error請求,就會被BasicErrorController處理。
//在DefaultErrorViewResolver中有一段代碼 // 處理4xx和5xx的請求 static { Map<Series, String> views = new EnumMap(Series.class); views.put(Series.CLIENT_ERROR, "4xx"); views.put(Series.SERVER_ERROR, "5xx"); SERIES_VIEWS = Collections.unmodifiableMap(views); } // 解析,并會跳轉到error/錯誤狀態(tài)碼; 頁面中 private ModelAndView resolve(String viewName, Map<String, Object> model) { String errorViewName = "error/" + viewName; TemplateAvailabilityProvider provider = this.templateAvailabilityProviders.getProvider(errorViewName, this.applicationContext); // 對是否有模板引擎做出相應的視圖處理 return provider != null ? new ModelAndView(errorViewName, model) : this.resolveResource(errorViewName, model); }
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
java實現(xiàn)String類型和Date類型相互轉換
很多人表示,java將string類型轉為date類型不知道應該怎樣做,本文就來介紹一下java實現(xiàn)String類型和Date類型相互轉換,具有一定的參考價值,感興趣的可以了解一下2023-10-10maven <repositories>標簽和<pluginRepositories>標簽的使用
這篇文章主要介紹了maven <repositories>標簽和<pluginRepositories>標簽的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07java?fastjson傳輸long數(shù)據(jù)卻接收到了int的問題
這篇文章主要介紹了java?fastjson傳輸long數(shù)據(jù)卻接收到了int的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01java+mysql模擬實現(xiàn)銀行系統(tǒng)
這篇文章主要為大家詳細介紹了java+mysql模擬實現(xiàn)銀行系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-05-05