วิธีสร้างหน้าข้อผิดพลาด Spring Boot แบบกำหนดเองด้วย Thymeleaf
ซอฟต์แวร์พบข้อผิดพลาด แม้แต่แอปพลิเคชันที่ดีที่สุดก็ยังอาจพบข้อผิดพลาดได้ในบางช่วงหัวเลี้ยวหัวต่อ ดังนั้นทุกแอปพลิเคชันควรมีกลไกการจัดการข้อผิดพลาดบางประการ
Spring Boot รวมการกำหนดค่าอัตโนมัติสำหรับการจัดการข้อผิดพลาดซึ่งรวมถึงหน้าข้อผิดพลาด Whitelabel เริ่มต้น อย่างไรก็ตาม คาดว่านักพัฒนาจะสร้างหน้าข้อผิดพลาดส่วนบุคคลของตนเองเพื่อแทนที่เวอร์ชัน Whitelabel มาตรฐาน บทความนี้ให้คำแนะนำในการปรับแต่งหน้าข้อผิดพลาดเพื่อใช้ในแอปพลิเคชัน Spring Boot
หน้าข้อผิดพลาด Whitelabel ของ Spring Boot €™
เมื่อพบข้อผิดพลาดภายในแอปพลิเคชัน Spring Boot ระบบจะขอปลายทาง “/error” โดยอัตโนมัติ ในกรณีที่เส้นทางที่ระบุนี้ไม่มีมุมมองหรือเทมเพลตที่กำหนดไว้ล่วงหน้า หน้าข้อผิดพลาด Whitelabel จะแสดงเป็นการตอบกลับเริ่มต้นต่อผู้ใช้
หน้าข้อผิดพลาด 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) พร้อมด้วยองค์ประกอบภาพสององค์ประกอบเพื่อสร้างเค้าโครงต่อไปนี้:
ทำให้หน้าแสดงข้อผิดพลาดของคุณใช้งานง่าย
วัตถุประสงค์หลักของหน้าแสดงข้อผิดพลาดคือการแจ้งให้ผู้ใช้ทราบว่ามีข้อผิดพลาดเกิดขึ้น อย่างไรก็ตาม มันยังคงเป็นองค์ประกอบของซอฟต์แวร์นั่นเอง ด้วยเหตุนี้ การตรวจสอบให้แน่ใจว่าหน้าแสดงข้อผิดพลาดนั้นง่ายสำหรับผู้ใช้ในการเข้าใจและนำทางจึงเป็นสิ่งสำคัญ
อีกวิธีหนึ่งคือใช้คุณลักษณะข้อผิดพลาดที่เรียบง่ายกว่าซึ่งถ่ายทอดข้อความแสดงข้อผิดพลาดในลักษณะที่ตรงไปตรงมามากขึ้น ตัวอย่างเช่น แทนที่จะใช้แอตทริบิวต์การติดตามที่ซับซ้อน เราสามารถเลือกใช้แอตทริบิวต์เส้นทางได้ เนื่องจากจะให้เฉพาะข้อมูลที่จำเป็นเท่านั้นโดยไม่ต้องเจาะลึกข้อมูลเฉพาะที่ไม่จำเป็น
สิ่งสำคัญคือต้องไม่เปิดเผยข้อมูลที่ละเอียดอ่อนเกี่ยวกับความซับซ้อนของซอฟต์แวร์แก่ผู้ใช้ที่ไม่ได้รับข้อมูล เนื่องจากการทำเช่นนั้นอาจเป็นอันตรายต่อความปลอดภัยและความสมบูรณ์ของโปรแกรม