Страницы ошибок Whitelabel выглядят скучно и могут негативно повлиять на взаимодействие с пользователем. Узнайте, как создавать собственные страницы ошибок с помощью Thymeleaf.
В программном обеспечении возникают ошибки. Даже самые лучшие приложения в какой-то момент могут столкнуться с ошибками. Поэтому каждое приложение должно иметь механизмы обработки ошибок.
Spring Boot предоставляет страницу ошибок Whitelabel по умолчанию как компонент автоматической настройки для обработки ошибок. Тем не менее, ожидается, что разработчики создадут собственную страницу ошибок, которая заменит страницу ошибок Whitelabel. В этой статье вы узнаете, как настроить страницу ошибок для приложений Spring Boot.
Страница ошибки Whitelabel Spring Boot
Когда приложение Spring Boot обнаруживает ошибку, оно запрашивает /error URL-адрес. Если в этом месте нет представления, отображается страница ошибки Whitelabel:
На странице ошибки Whitelabel указаны дата и время возникновения ошибки, а также соответствующий часовой пояс. Кроме того, он указывает тип ошибки и связанный с ней код. На странице Whitelabel указано, что
это ошибка 404 (Страница не найдена). Это связано с тем, что в примере приложения нет сопоставления URL-адреса «/products».Большая часть информации, представленной на странице ошибок Whitelabel, взята из конкретных атрибутов ошибок. Представление ошибок Spring Boot имеет доступ к следующим атрибутам ошибок:
- ошибка: причина ошибки.
- временная метка: дата и время возникновения ошибки.
- положение дел: код состояния ошибки.
- исключение: имя класса корневого исключения (если ошибка является результатом исключения).
- сообщение: сообщение об исключении (если ошибка является результатом исключения).
- ошибки: любые результаты исключения BindingResult (если ошибка является результатом исключения).
- след: трассировка стека исключений (если ошибка является результатом исключения).
- путь: URL-путь, по которому произошла ошибка.
Создание страницы ошибки с помощью Thymeleaf
Ваше приложение Spring Boot должно иметь одну страницу ошибки, хранящуюся в шаблоне «ошибка». Расширение этого шаблона будет зависеть от технологии шаблона, которую вы решите использовать. Например, если вы выберете шаблон страниц сервера Java (JSP), имя файла должно быть таким: ошибка.jsp.
Однако в этом примере приложения Spring Boot используется механизм шаблонов Thymeleaf. Итак, имя шаблона ошибка.html. Вам следует последовательно размещать шаблон ошибки в шаблон папка, под Ресурсы каталог со всеми остальными файлами шаблонов.
Файл error.html
html>
<htmlxmlns: th="http://www.thymeleaf.org">
<head>
<title> Errortitle>
<linkrel="stylesheet"th: href="@{/css/style.css}"/>
head>
<bodyth: style="'background: url(/images/background1.jpg)
no-repeat center center fixed;'">
<divclass="container" >
<h1>An error has occurred...h1>
<imgth: src="@{/images/error-icon.png}"
width="100px" height="100px" />
<p>There seems to be a problem with the page you requested
(<spanth: text="${path}">span>).p>
<pth: text="${'The status code is ' + status
+ ', which means that the page was ' + error + '.'}">p>
<pth: text="${'Further details: ' + message + '.'}">p>
<aclass="btn"href="/home">Back to homea>
div>
body>
html>
Настраиваемая страница ошибок выполняет несколько важных задач. Он сообщает о возникновении ошибки. Впоследствии он демонстрирует HTTP-запрос это вызвало ошибку. Кроме того, он предоставляет пользователю код состояния, связанный с ошибкой. Но если пользователь не знаком с кодами состояния, страница также объясняет значение кода через атрибут ошибки.
Последняя строка текста представляет пользователю сообщение в случае исключения. Затем ссылка в конце позволяет пользователю вернуться на домашнюю страницу. ошибка.html файл использует таблицу стилей CSS и два изображения для создания следующего представления:
Сделайте страницу ошибок удобной для пользователя
Основная цель страницы ошибок — информировать пользователя о том, что произошла конкретная ошибка. Однако эта страница ошибки по-прежнему является частью приложения. Поэтому крайне важно убедиться, что страница ошибок также удобна для пользователя.
Это будет означать выбор использования атрибутов ошибки, которые сообщают об ошибке более простым способом. Таким образом, вы можете использовать атрибут пути вместо атрибута трассировки, который намного сложнее и содержит детали, которые пользователю не нужно знать.
Вы также не хотите предоставлять случайному пользователю чрезмерную информацию о внутренней работе вашего приложения, поскольку это может поставить под угрозу безопасность приложения.