- Spring MVC 마스터하기 예외처리 42022년 06월 11일
- starryeye
- 작성자
- 2022.06.11.:32
예외처리 1~3 포스팅에서..
서블릿 컨테이너가 처리할 수 있는 예외 케이스와
개발자가 보여주고 싶은 에러 페이지를 어떻게 보여줄 수 있는지와
에러페이지 출력을 위한 내부 호출시.. 필터와 인터셉터를 적용 할지말지를 어떻게 처리하는지에 대해 알아 봤다..
스프링 부트는 위와 같은 복잡한 방법을 간단하게 개발 할 수 있도록 지원해준다.
WebServerFactoryCustomizer의 구현체 만들기, 에러페이지 출력을 위한 컨트롤러 개발에 대한 이야기이다.
(필터, 인터셉터는 다른 이야기이다..)
이전 포스팅에서 구현한 ErrorPage(객체) 등록은 ErrorMvcAutoConfiguration 에서 처리 하며
상태코드에 따른 구현한 에러페이지(뷰 - html) 매핑 컨트롤러는 BasicErrorController 가 처리 해준다.
(어떤 Http status인 경우 어떤 컨트롤러가 호출 될지에 대한 기능 - WebServerFactoryCustomizer 구현체)
따라서 개발자는 단순히.. resource 경로에 필요한 status에 따른 ErrorPage(뷰)만 만들어 두면 된다.
물론 일반 Exception처리와 sendError 호출은 당연히 해줘야하며..
필터 인터셉터 처리도 DispatcherType에 따라 적용 유무를 조절 해줘야한다..
BasicErrorController의 우선순위
1. 뷰 템플릿
ex) resource/templete/error/500.html
ex) resource/templete/error/5xx.html
2. 정적 리소스
ex) resource/static/error/500.html
ex) resource/static/error/5xx.html
3. 뷰이름
ex) /resource/어떤경로/error.html
위와 같이 /error 경로에 만들어 넣어줘야한다.
(error가 아닌 경로를 사용하고 싶다면... application.properies 에 server.error.path 로 수정가능)
위 우선 순위에 더하여 500 상태코드이면 500.html에 먼저 매칭되고.. 5xx.html는 후순위로 매칭되지 않는다.
(구체적인게 먼저이다.. 503 상태코드이면 5xx.html 에 매칭된다.)
<참고>
BasicErrorController가 기본으로 model에 넣어 뷰로 전달하는 기본 정보들은 생략..
이거도.. application.properies에서 model에 넣을지 말지 선택 가능
'Spring > MVC' 카테고리의 다른 글
Spring MVC 마스터하기 예외처리 6 (0) 2022.06.18 Spring MVC 마스터하기 예외처리 5 (0) 2022.06.11 Spring MVC 마스터하기 예외처리 3 (0) 2022.06.11 Spring MVC 마스터하기 예외처리 2 (0) 2022.06.11 Spring MVC 마스터하기 예외처리 1 (0) 2022.06.11 다음글이전글이전 글이 없습니다.댓글