티스토리 뷰

 

SpingBoot에서 에러가 날 경우 기본적으로 whitelabel 페이지로 이동하여 아래와 같은 에러 화면이 나타난다.

# SpringBoot 기본 에러 설정
server.error:
    include-exception: false
    include-stacktrace: never
    path: '/error'
    whitelabel.enabled: true

server.error.include-exception : 응답에 exception의 내용을 포함할지 여부
server.error.include-stacktrace : 응답에 stacktrace 내용을 포함할지 여부
server.error.path : 오류 응답을 처리할 핸들러(ErrorController)의 path
server.error.whitelabel.enabled : 브라우저 요청에 대해 서버 오류 시 기본으로 노출할 페이지를 사용할지 여부

server.error.whitelabel.enabled의 기본값이 true이기 때문에 위에서와 같이 오류 페이지가 노출된다.

 

/**
 * 에러핸들러 클래스
 */
@Controller public class ErrorHandler implements ErrorController {

    @RequestMapping("/error")
    public String handleError(HttpServletRequest request) {
        
        Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
        
        if(null != status) {
        
            int statusCode = Integer.valueOf(status.toString());
            
            if(statusCode == HttpStatus.FORBIDDEN.value()) {
                return "error_403";
            } else if(statusCode == HttpStatus.NOT_FOUND.value()) {
                return "error_404";
            }
        }
        return "error";
    }
    
    @Override public String getErrorPath() {
        return "/error";
    }
}

에러에 대한 상태를 체크하여 상황에 맞는 페이지로 리턴하면 된다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함