خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه ایجاد صفحات خطای سفارشی Spring Boot با Thymeleaf

صفحات خطای Whitelabel صریح به نظر می رسند و می توانند بر تجربه کاربر تأثیر منفی بگذارند. نحوه ایجاد صفحات خطای سفارشی با استفاده از Thymeleaf را بیاموزید.

نرم افزار خطاهایی را تجربه می کند. حتی بهترین برنامه ها نیز در مقطعی با خطا مواجه می شوند. بنابراین، هر برنامه کاربردی باید مکانیسم‌های رسیدگی به خطا را داشته باشد.

Spring Boot یک صفحه خطای Whitelabel پیش فرض را به عنوان جزئی از پیکربندی خودکار خود برای مدیریت خطا ارائه می دهد. با این وجود، انتظار این است که توسعه دهندگان یک صفحه خطای سفارشی ایجاد کنند که جایگزین صفحه خطای Whitelabel شود. در این مقاله، نحوه سفارشی سازی صفحه خطا را برای برنامه های Spring Boot خود خواهید آموخت.

صفحه خطای برچسب سفید Spring Boot

هنگامی که یک برنامه Spring Boot با خطا مواجه می شود، URL /error را درخواست می کند. اگر در این مکان نمایی وجود نداشته باشد، صفحه خطای Whitelabel را نمایش می دهد:

صفحه خطای برچسب سفید

صفحه خطای Whitelabel تاریخ و زمان خطا را به همراه منطقه زمانی مربوط به آن بیان می کند. علاوه بر این، نوع خطا و کد مرتبط با آن را نشان می دهد. صفحه Whitelabel بیان می کند که این یک خطای 404 است (صفحه یافت نشد). این به این دلیل است که برنامه نمونه هیچ نقشه برداری برای URL “/products” ندارد.

بیشتر اطلاعات ارائه شده در صفحه خطای Whitelabel از ویژگی های خطای خاص گرفته شده است. نمای خطای Spring Boot به ویژگی های خطای زیر دسترسی دارد:

  • خطا: دلیل خطا.
  • timestamp: تاریخ و زمانی که خطا رخ می دهد.
  • وضعیت: کد وضعیت خطا.
  • استثنا: نام کلاس استثنای ریشه (اگر خطا در نتیجه یک استثنا باشد).
  • message: پیام استثنا (اگر خطا در نتیجه یک استثنا باشد).
  • errors: هر گونه نتیجه از یک استثنا BindingResult (اگر خطا در نتیجه یک استثنا باشد).
  • trace: ردیابی پشته استثنا (اگر خطا در نتیجه یک استثنا باشد).
  • path: مسیر URL که در آن خطا رخ می دهد.
مطلب مرتبط:   نحوه پیاده سازی یک سیستم سلامت در PyGame

ایجاد صفحه خطا با 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 و دو تصویر برای ایجاد نمای زیر استفاده می کند:

صفحه خطای سفارشی شده

صفحه خطای خود را کاربر پسند نگه دارید

هدف اصلی صفحه خطا اطلاع رسانی به کاربر از وقوع یک خطای خاص است. با این حال، این صفحه خطا همچنان یکی از جنبه های برنامه است. بنابراین، اطمینان از کاربرپسند بودن صفحه خطا بسیار مهم است.

این بدان معناست که از ویژگی‌های خطا استفاده کنید که خطا را به روشی غیر پیچیده‌تر منتقل می‌کند. بنابراین، ممکن است از ویژگی path به جای ویژگی trace استفاده کنید، که بسیار پیچیده‌تر است و حاوی جزئیاتی است که کاربر نیازی به دانستن آنها ندارد.

همچنین نمی خواهید اطلاعات بیش از حدی در مورد عملکرد داخلی برنامه خود به یک کاربر تصادفی ارائه دهید، زیرا ممکن است امنیت برنامه را به خطر بیندازد.