Purple Bobblehead Bunny

Backend/SPRINGBOOT

[SpringBoot] 에러 페이지 설정

준영어린이 2023. 1. 9. 12:21

 

 

 

 

개발 시 많이 보게 되는 페이지..

에러가 발생하게 되면 해당 에러에 맞는 에러 페이지를 보여주도록 설정한다.

 

에러 페이지를 관리 할 Controller를 생성하여 ErrorController 인터페이스를 상속받아 에러 컨트롤러를 생성한다.

package com.jun.study

import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;


@Controller
publi class ErrorController implements ErrorController {

     @Override
        public String getErrorPath() {
            return null;
        }

    @GetMapping("/error")
    public String handleError(HttpServletRequest request) {
        Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);

        if(status != null){
            int statusCode = Integer.valueOf(status.toString());

            if(statusCode == HttpStatus.NOT_FOUND.value()) {
                return "error/404error";
            } else {
                return "error/error";
            }
        }

        return "error/error";
    }

}

ErrorController 인터페이스를 상속 받고, getErrorPath() 메서드를 재정의를 한다.

SpringBoot 2.3.x 부터는 server.error.path 속성(/error)을 사용하여 사용자 지정 경로(에러 페이지)를 지정한다.


getErrorPath() 메서드는 ErrorController인터페이스에서 제거된 것이 아니기 때문에, 재정의는 필수이다.
해당 코드는 무시가 되고, null을 반환하면 된다.

 

 

 

 

thymeleaf를 사용하기 때문에, resource - templates- error 경로에 html 파일을 생성하도록 한다.

 

각각 취향에 맞게 에러페이지를 생성을 하거나, 혹은 아래의 무료 템플릿 링크가 있다. 

https://freefrontend.com/500-error-page-html-templates/)

 

500 Error Page HTML Templates

Collection of free 500 error page HTML templates from codepen and other resources. Update of January 2020 collection. 13 new items.

freefrontend.com

 

 

 

 

참고 자료 

 

Spring Boot: 화이트라벨 오류 페이지 사용자 지정 | 바엘둥 (baeldung.com)