Как сделать кастомную страницу с ошибкой в Spring?

В Spring можно создать кастомную страницу с ошибкой с помощью механизма обработки исключений. Когда происходит ошибка в приложении, Spring предлагает несколько подходов к ее обработке, одним из которых является использование контроллера, который будет обрабатывать исключения.

Для создания кастомной страницы с ошибкой сначала нужно создать класс-контроллер, который будет обрабатывать исключения. Этот класс должен иметь аннотацию @ControllerAdvice и содержать методы, аннотированные @ExceptionHandler, которые будут обрабатывать конкретные типы исключений.

Вот пример такого класса:

@ControllerAdvice
public class CustomErrorController {

    @ExceptionHandler(Exception.class)
    public ModelAndView handleException(Exception ex) {
        // создаем объект ModelAndView и указываем имя view, которое будет использоваться для отображения ошибки
        ModelAndView modelAndView = new ModelAndView("error");

        // добавляем информацию об ошибке в объект ModelAndView
        modelAndView.addObject("errorMessage", ex.getMessage());

        return modelAndView;
    }
}

В этом примере мы создали метод handleException, который обрабатывает исключения типа Exception. Он создает объект ModelAndView и указывает имя view, которое будет использоваться для отображения ошибки. Затем мы добавляем информацию об ошибке в объект ModelAndView, чтобы ее можно было отобразить на странице.

Теперь нам нужно создать представление для отображения ошибки. Создайте файл error.html в папке resources/templates вашего проекта. В этом файле вы можете использовать HTML и Thymeleaf для создания кастомной страницы с ошибкой.

Вот пример файла error.html:

<!DOCTYPE html>
<html>
    <head>
        <title>Error Page</title>
    </head>
    <body>
        <h1>Error</h1>
        <p th:text="${errorMessage}"></p>
    </body>
</html>

В этом примере мы добавили заголовок и абзац, в котором отображается сообщение об ошибке, переданное из контроллера.

Теперь, когда возникает исключение в вашем приложении, Spring автоматически вызовет метод handleException из класса CustomErrorController и отобразит кастомную страницу с ошибкой.

Это лишь один из множества способов создания кастомной страницы с ошибкой в Spring. Spring также предоставляет другие возможности для обработки ошибок, включая настройку через аннотацию @Controller или использование страницы error.html в папке public/error или static/error. Вы можете выбрать способ, который лучше подходит для ваших потребностей.