1. 程式人生 > >Spring boot定製錯誤頁面

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>