Contents

วิธีสร้างหน้าข้อผิดพลาด Spring Boot แบบกำหนดเองด้วย Thymeleaf

ซอฟต์แวร์พบข้อผิดพลาด แม้แต่แอปพลิเคชันที่ดีที่สุดก็ยังอาจพบข้อผิดพลาดได้ในบางช่วงหัวเลี้ยวหัวต่อ ดังนั้นทุกแอปพลิเคชันควรมีกลไกการจัดการข้อผิดพลาดบางประการ

Spring Boot รวมการกำหนดค่าอัตโนมัติสำหรับการจัดการข้อผิดพลาดซึ่งรวมถึงหน้าข้อผิดพลาด Whitelabel เริ่มต้น อย่างไรก็ตาม คาดว่านักพัฒนาจะสร้างหน้าข้อผิดพลาดส่วนบุคคลของตนเองเพื่อแทนที่เวอร์ชัน Whitelabel มาตรฐาน บทความนี้ให้คำแนะนำในการปรับแต่งหน้าข้อผิดพลาดเพื่อใช้ในแอปพลิเคชัน Spring Boot

หน้าข้อผิดพลาด Whitelabel ของ Spring Boot €™

เมื่อพบข้อผิดพลาดภายในแอปพลิเคชัน Spring Boot ระบบจะขอปลายทาง “/error” โดยอัตโนมัติ ในกรณีที่เส้นทางที่ระบุนี้ไม่มีมุมมองหรือเทมเพลตที่กำหนดไว้ล่วงหน้า หน้าข้อผิดพลาด Whitelabel จะแสดงเป็นการตอบกลับเริ่มต้นต่อผู้ใช้

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

หน้าข้อผิดพลาด White Label จะแสดงการประทับเวลาเมื่อมีการกำกับดูแลเกิดขึ้น รวมถึงเขตเวลาที่เกี่ยวข้อง นอกจากนี้ยังเปิดเผยการจำแนกประเภทของข้อผิดพลาดและตัวระบุที่เกี่ยวข้อง หน้า White Label แจ้งให้ผู้ใช้ทราบว่า

ข้อมูลส่วนใหญ่ที่แสดงบนหน้าข้อผิดพลาด Whitelabel มาจากลักษณะข้อผิดพลาดเฉพาะ มุมมองข้อผิดพลาดใน Spring Boot มีสิทธิ์เข้าถึงคุณลักษณะต่างๆ ดังกล่าว ซึ่งรวมถึงแต่ไม่จำกัดเพียง:

คำว่า"ข้อผิดพลาด"หมายถึงสาเหตุเฉพาะหรือคำอธิบายเบื้องหลังการเบี่ยงเบนโดยไม่ตั้งใจจากผลลัพธ์ มาตรฐาน หรือความคาดหวังที่ต้องการ มันแสดงถึงความแตกต่างระหว่างสิ่งที่ตั้งใจไว้กับสิ่งที่เกิดขึ้นจริง ซึ่งบ่งชี้ว่ายังมีช่องว่างสำหรับการปรับปรุงในการบรรลุประสิทธิภาพสูงสุดหรือการบรรลุเป้าหมาย

การประทับเวลาหมายถึงเวลาเฉพาะที่เกิดข้อผิดพลาด ซึ่งโดยทั่วไปจะแสดงด้วยวันที่และเวลาผสมกัน

⭐status: รหัสสถานะข้อผิดพลาด

ชื่อคลาสของข้อยกเว้นรูท หากข้อผิดพลาดเป็นผลมาจากข้อยกเว้น จะทำหน้าที่เป็นตัวกำหนดข้อยกเว้นที่เกิดขึ้นที่ระดับสูงสุดในลำดับชั้นของข้อยกเว้น

ค่าที่เกี่ยวข้องกับคีย์ “ข้อความ” ในพจนานุกรมแสดงถึงข้อความยกเว้น หากข้อผิดพลาดเกิดขึ้นเนื่องจากข้อยกเว้น

ข้อผิดพลาดในการตรวจสอบประกอบด้วยผลลัพธ์ใดๆ ที่ได้มาจากข้อยกเว้น BindingResult ในกรณีที่เกิดข้อผิดพลาดเนื่องจากเหตุการณ์พิเศษ

การติดตามข้อยกเว้นอ้างอิงถึงบันทึกการเรียกใช้ฟังก์ชันที่นำไปสู่ข้อผิดพลาด ซึ่งเกิดขึ้นเมื่อมีข้อยกเว้นเกิดขึ้นระหว่างการทำงานของโปรแกรม ข้อมูลนี้จะมีประโยชน์ในการระบุแหล่งที่มาของปัญหาและแก้ไขโค้ดตามลำดับ

คุณสามารถเข้าถึงเส้นทาง URL ที่พบข้อผิดพลาดได้โดยทำตามขั้นตอนต่อไปนี้:

การสร้างหน้าแสดงข้อผิดพลาดด้วย Thymeleaf

เพื่อจัดการข้อผิดพลาดในแอปพลิเคชัน Spring Boot ของคุณอย่างมีประสิทธิภาพ ขอแนะนำให้คุณกำหนดหน้าข้อผิดพลาดเดี่ยวๆ และจัดเก็บไว้ในเทมเพลตเฉพาะ ชื่อไฟล์ของเทมเพลตดังกล่าวอาจแตกต่างกันไปตามเทคโนโลยีเทมเพลตที่เลือก ตัวอย่างเช่น หากเลือกใช้ Java Server Pages (JSP) ไฟล์นั้นจะมีชื่อว่า “error.jsp”

ด้วยการรวมกลไกเทมเพลตของ Thymeleaf เข้าด้วยกัน แอปพลิเคชัน Spring Boot เฉพาะนี้จึงใช้ไฟล์ 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 ใช้ Cascading Style Sheet (CSS) พร้อมด้วยองค์ประกอบภาพสององค์ประกอบเพื่อสร้างเค้าโครงต่อไปนี้:

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

ทำให้หน้าแสดงข้อผิดพลาดของคุณใช้งานง่าย

วัตถุประสงค์หลักของหน้าแสดงข้อผิดพลาดคือการแจ้งให้ผู้ใช้ทราบว่ามีข้อผิดพลาดเกิดขึ้น อย่างไรก็ตาม มันยังคงเป็นองค์ประกอบของซอฟต์แวร์นั่นเอง ด้วยเหตุนี้ การตรวจสอบให้แน่ใจว่าหน้าแสดงข้อผิดพลาดนั้นง่ายสำหรับผู้ใช้ในการเข้าใจและนำทางจึงเป็นสิ่งสำคัญ

อีกวิธีหนึ่งคือใช้คุณลักษณะข้อผิดพลาดที่เรียบง่ายกว่าซึ่งถ่ายทอดข้อความแสดงข้อผิดพลาดในลักษณะที่ตรงไปตรงมามากขึ้น ตัวอย่างเช่น แทนที่จะใช้แอตทริบิวต์การติดตามที่ซับซ้อน เราสามารถเลือกใช้แอตทริบิวต์เส้นทางได้ เนื่องจากจะให้เฉพาะข้อมูลที่จำเป็นเท่านั้นโดยไม่ต้องเจาะลึกข้อมูลเฉพาะที่ไม่จำเป็น

สิ่งสำคัญคือต้องไม่เปิดเผยข้อมูลที่ละเอียดอ่อนเกี่ยวกับความซับซ้อนของซอฟต์แวร์แก่ผู้ใช้ที่ไม่ได้รับข้อมูล เนื่องจากการทำเช่นนั้นอาจเป็นอันตรายต่อความปลอดภัยและความสมบูรณ์ของโปรแกรม