Spring boot定製錯誤頁面
定製錯誤頁面
瀏覽器訪問
如果,程式出錯了
需要返回一個符合專案網站風格的頁面
有模板引擎的情況下
error/狀態碼
將錯誤頁面命名為,錯誤狀態碼.html
放在模板引擎資料夾裡面的,error資料夾下
發生此狀態碼的錯誤,就會來到對應的頁面
DefaultErrorViewResolver
預設錯誤檢視解析器
可以使用
4xx和5xx作為錯誤頁面的檔名
來匹配這種型別的,所有錯誤
查詢規則,精確優先
優先尋找,精確的狀態碼.html
如果,沒有找到,就返回4xx.html頁面
比如,尋找403錯誤頁面
沒有的話,返回4xx.html
ModelAndView
errorHtml返回頁面
getErrorAttributes
ErrorAttributes
DefaultErrorAttributes實現了ErrorAttributes介面
作用,在頁面共享資訊
getErrorAttributes
實現了getErrorAttributes方法
獲取資訊
頁面能獲取的資訊
timestamp:時間戳
status:狀態碼
error:錯誤提示
exception:異常物件
message:異常訊息
errors:JSR303資料校驗的錯誤都在這裡
獲取錯誤資訊
可以在自定義錯誤頁面,獲取這些資訊
比如,獲取錯誤狀態碼、時間戳
<main role="main" class="col-md-9 ml-sm-auto col-lg-10 pt-3 px-4">
<h1>status:[[${status}]]</h1>
<h2>timestamp:[[${timestamp}]]</h2>
</main>
沒有模板引擎
如果,模板引擎下面,找不到這個錯誤頁面
那麼,就會去靜態資原始檔夾下尋找
Template下面沒有error資料夾
那麼,就會去靜態資原始檔夾下尋找error資料夾
以上都沒有錯誤頁面
就會預設來到SpringBoot預設的錯誤提示頁面
ModelAndView
errorHtml如果,都沒有找到,就會返回null
返回null之後,就會返回一個error檢視
ErrorMvcAutoConfiguration
注入了一個errorBean
defaultErrorView
error返回的是defaultErrorView
程式碼中定義好的一段頁面程式碼
看到的錯誤頁面
就是採用SpelView解析出來的這段程式碼
<html>
<body><h1>Whitelabel Error Page</h1>
<p>This application has no explicit mapping for /error, so you are seeing this as a fallback.</p>
<div id='created'>${timestamp}</div>
<div>There was an unexpected error (type=${error}, status=${status}).</div>
<div>${message}</div>
</body>
</html>