-
Spring MVC - BasicErrorController를 이용한 HTML 오류 페이지 처리와 오류 정보 이용하기(text/html)Spring/Spring MVC 2022. 2. 10. 18:04반응형
스프링 부트의 오류 페이지 처리와 오류 정보 이용하기
스프링 부트의 오류 페이지 처리
스프링 부트는 서브릿에서 오류 페이지 처리했던 과정을 모두 기본으로 제공한다. 따라서 사용방법이 매우 간단하다.
- new ErrorPage("/error") 자동 등록
- /error 경로로 기본 오류 페이지를 설정한다.
- 상태 코드와 예외를 설정하지 않으면 기본 오류 페이지가 호출된다. - BasicErrorController 스프링 컨트롤러를 자동 등록
- ErrorPage에서 등록한 /error 를 매핑해서 처리하는 컨트롤러
위와 같은 오류 페이지 처리를 위한 작업을 스프링 부트에서 다 해주므로 개발자는 설정에 따라 HTML 오류 페이지만 만들어서 지정 경로에 넣으면 된다.
BasicErrorController
- 기본적인 로직이 모두 개발되어 있다.
- 개발자는 오류 페이지 화면만 룰과 우선순위에 따라 등록하면 된다.
- 정적 HTML, 정적 리소스, 뷰 템플릿을 사용해서 동적으로 오류 화면을 만들고 싶으면
뷰 템플릿 경로에 오류 페이지 파일을 만들어서 넣어두기만 하면 된다. - 오류 페이지 파일명
- 4xx.html : 400대 오류 페이지
- 404.html : 404 오류 페이지
- 5xx.html : 500대 오류 페이지
- 500.html : 500 오류 페이지
뷰 선택 우선순위 지정 경로 뷰 템플릿 resources/templates/error/
ex ) resources/templates/error/500.html정적 리소스(static, public) resources/static/
resources/public/
ex ) resources/static/error/400.html적용 대상이 없을 경우 resources/templates/error.html
오류 페이지에서 오류 정보 이용하기
BasicErrorController는 오류 정보들을 model에 담아서 뷰에 전달한다. 뷰 템플릿은 model에 담긴 오류 정보들을 사용하여 출력할 수 있다. 하지만 오류 관련 내부 정보들은 보안상 문제 때문에 문제가 될 수 있으므로 신중히 사용하자.
<li th:text="|timestamp: ${timestamp}|"></li> <li th:text="|path: ${path}|"></li> <li th:text="|status: ${status}|"></li> <li th:text="|message: ${message}|"></li> <li th:text="|error: ${error}|"></li> <li th:text="|exception: ${exception}|"></li> <li th:text="|errors: ${errors}|"></li> <li th:text="|trace: ${trace}|"></li>
exception, message, stacktrace, bnding-errors들은 기본적으로 스프링 부트에서 감춰주기 때문에 null값으로 반환된다. 해당 값을 출력하고 싶으면 다음 설정들을 application.properties에 추가하면 된다.
server.error.whitelabel.enabled=false server.error.include-exception=true server.error.include-message=always server.error.include-stacktrace=always server.error.include-binding-errors=always
반응형'Spring > Spring MVC' 카테고리의 다른 글
- new ErrorPage("/error") 자동 등록