본문 바로가기

[SPRING]/SPRING

[Spring Boot] 커스텀 에러페이지 설정

반응형

기본적으로 서버 에러는 표현정도의 컨트롤이 가능하다
application.properties파일에서


#tomcat 설정
server.error.include-exception= true 
server.port = 8888
server.tomcat.uri-encoding= UTF-8
#default:NEVER
server.error.include-stacktrace = ALWAYS
server.error.whitelabel.enabled=true
server.error.path= /error
#default:NEVER
server.error.include-binding-errors=ALWAYS
#server.error.include-exception : 오류 응답에 exception의 내용을 포함할지 여부 (TRUE, FALSE)
#server.error.include-stacktrace : 오류 응답에 stacktrace 내용을 포함할지 여부 (ALWAYS, NEVER, ON_TRACE_PARAM)
#server.error.path : 오류 응답을 처리할 핸들러(ErrorController)의 path
#server.error.whitelabel.enabled : 브라우저 요청에 대해 서버 오류시 기본으로 노출할 페이지를 사용할지 여부 (TRUE, FALSE)

같이 설정해주었다.

그다음 컨트롤러 하나 파서
spring boot 기본인 errorcontroller 에서 상속받아

@Controller
public class ErrorHandler implements ErrorController{


    @GetMapping("/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() {
        // TODO Auto-generated method stub
        return "/error";
    }

}

와 같이 403 or 404 에러 처리 핸들링을 해주었다.

그 다음은 이전과같이 설정한경로(나는 jsp 이용 web-inf/views 하위)에 error_404.jsp 파일을 설정해 에러를 핸들링하였다.

반응형