본문 바로가기
공부/프로그래밍

[SpringBoot] 에러 페이지 핸들러 클래스 만들기.

by demonic_ 2018. 7. 2.
반응형

에러가 날 경우 에러페이지로 이동을 하게된다. 

SpringBoot 경우는 에러가 나면 whitelabel 페이지로 이동하여 다음과 같은 에러를 발생시킨다.

 

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

 

Fri Jun 29 18:29:14 KST 2018

There was an unexpected error (type=Not Found, status=404).

No message available

 

에러페이지를 생성하려면 아래 클래스를 생성하자.

 

/**
 * 에러페이지 핸들러 클래스
 */
@Controller
public class ErrorPageHandler implements ErrorController {

    @RequestMapping("/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-404";
            }
            if(statusCode == HttpStatus.FORBIDDEN.value()){
                return "error-403";
            }
        }
        return "error";
    }

    @Override
    public String getErrorPath() {
        return "/error";
    }
}

 

"/error" URL 매핑으로 이동하게 되고 에러상태 값에 따라 각각의 VIEW를 호출하도록 수정했다.

 

만약 ViewResolver가 설정되어 있지 않다면 또 에러가 나는데 어떤 View도 설치되어 있지 않다면 Json으로 리턴하자.

(컨트롤러 위에 @RestController 를 붙이거나, 메서드에 @ResponseBody 붙이기)

 

반응형

댓글