Contents

如何使用 Thymeleaf 創建自定義 Spring Boot 錯誤頁面

軟件遇到錯誤。即使是最好的應用程序也會在某些時候遇到錯誤。因此,每個應用程序都應該有一些錯誤處理機制。

Spring Boot 合併了錯誤處理的自動配置,其中包括默認的 Whitelabel 錯誤頁面。然而,預計開發人員將生成自己的個性化錯誤頁面來取代標準的 Whitelabel 版本。本文提供了有關定制 Spring Boot 應用程序中使用的錯誤頁面的指南。

Spring Boot 的白標錯誤頁面

當 Spring Boot 應用程序遇到錯誤時,系統將自動請求“/error”端點。如果此指定路徑不包含任何預定義視圖或模板,則將顯示 Whitelabel 錯誤頁面作為對用戶的默認響應。

/bc/images/whitelabel-error-page.jpg

白標錯誤頁面顯示發生疏忽的時間戳以及相關時區。此外,還公開了錯誤的分類及其對應的標識符。白標籤頁面告知用戶

Whitelabel 錯誤頁面上顯示的大部分數據都源自特定的錯誤特徵。 Spring Boot 中的錯誤視圖可以訪問各種此類屬性,包括但不限於:

術語“錯誤”是指無意偏離期望結果、標准或期望背後的特定原因或解釋。它表示預期結果與實際發生的情況之間存在差異,表明在實現最佳績效或實現目標方面還有改進的空間。

時間戳是指發生錯誤的具體時間點,通常由日期和時間的組合表示。

⭐status:錯誤狀態碼。

如果錯誤是由異常引起的,則根異常的類名將用作異常層次結構中最高級別發生的異常的指示符。

如果由於異常而導致錯誤,則與字典中的鍵“message”關聯的值表示異常消息。

驗證錯誤由 BindingResult 異常派生的任何結果組成,如果錯誤是由於異常發生而產生的。

異常跟踪是指在程序執行過程中拋出異常時導致錯誤的函數調用的記錄。此信息可用於識別問題根源並相應地調試代碼。

可以通過以下步驟訪問遇到錯誤的URL路徑:

使用 Thymeleaf 創建錯誤頁面

為了有效地管理 Spring Boot 應用程序中的錯誤,建議您指定一個單一的錯誤頁面並將其存儲在特定的模板中。所述模板的文件名可能會根據所選的模板技術而有所不同;例如,如果選擇 Java Server Pages (JSP),那麼該文件將被命名為“error.jsp”。

這個特定的 Spring Boot 應用程序結合了 Thymeleaf 模板引擎,使用 error.html 文件作為渲染模板的基礎。必須通過將錯誤模板放置在“模板”文件夾中來保持一致的模式,該文件夾與所有其他模板文件一起位於“資源”目錄下。

error.html 文件

 <!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
 <head>
     <title> Error</title>
     <link rel="stylesheet" th:href="@{/css/style.css}"/>
 </head>
 <body th:style="'background: url(/images/background1.jpg)
  no-repeat center center fixed;'">
     <div class="container" >
       <h1>An error has occurred...</h1>
       <img th:src="@{/images/error-icon.png}"
        width="100px" height="100px" />
       <p>There seems to be a problem with the page you requested
        (<span th:text="${path}"></span>).</p>
       <p th:text="${'The status code is ' \+ status
        \+ ', which means that the page was ' \+ error \+ '.'}"></p>
       <p th:text="${'Further details: ' \+ message \+ '.'}"></p>
       <a class="btn" href="/home">Back to home</a>
     </div>
 </body>
</html>

定制的錯誤頁面有多種用途。首先,它承認錯誤的存在。其次,它顯示了引發錯誤的特定 HTTP 請求。第三,它向用戶提供伴隨錯誤的相應狀態代碼。如果用戶不熟悉狀態代碼,頁面會通過錯誤屬性進一步闡明其含義。

內容的結論部分在發生意外情況時向用戶提供通知。隨後,位於頂部的超鏈接使用戶能夠通過導航返回到主網頁。 error.html 文檔採用級聯樣式表 (CSS) 以及兩個視覺元素來構造以下佈局:

/bc/images/customized-error-page.jpg

保持錯誤頁面用戶友好

錯誤頁面的主要目的是向用戶傳達發生了特定錯誤。儘管如此,它仍然是軟件本身的一個元素。因此,確保錯誤頁面易於用戶理解和導航至關重要。

另一種方法是利用更簡單的錯誤屬性,以更直接的方式傳達錯誤消息。例如,我們可以選擇路徑屬性,而不是使用複雜的跟踪屬性,因為它只提供必要的基本信息,而無需深入研究不必要的細節。

重要的是不要向不知情的用戶洩露有關軟件複雜性的敏感信息,因為這樣做可能會危及程序的安全性和完整性。