SpringBoot

[SpringBoot] 예외처리와 에러페이지

wookjae 2021. 7. 25. 00:00

1. 예외생성 컨트롤러 생성 (예외, 오류 강제생성)

서블릿컨테이너(WAS=톰캣)에 런타임예외. 에러를 전달하기 위한 메서드 작성

* throw Exception  / 예외를 던지거나

* HttpServletResponse.sendError()  / Http상태 메세지 Redirect

 

 

2. application.property 설정

* 스프링부트에서 기본적, 제공하는 whitelabel Page 비 활성화.

 

 

3. 예외, 오류 처리에 관한 빈(Bean) 생성

org.springframework.boot.web.server.WebServerFactoryCustomizer 인터페이스 구현 

 

 

4. 에러페이지 컨트롤러 생성 (에러페이지 분기처리 담당)

 

에러페이지 분기처리 확인. (404, 500...)

 

 


 

 

*************************

스프링부트(SpringBoot)에서 `ErrorPage` 빈을 자동으로 등록, "/error" 경로로 Default 오류페이지를 설정,  

BasicErrorController 컨트롤러를 자동등록 한다. (ErrorPage 에서 등록한 "/error" 에 관하여 매핑처리 역할)

org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController 

*************************

 

5. WebServerCustomizer 수정 

오류 페이지에 관하여 직접적으로 분기처리를 담당하였던, WebServerCustomizer를 사용되지 않도록 주석처리.. 

(SpringBoot에서 기본적으로 제공하는 에러처리 활용)

 

 

6. 에러페이지 생성 (Default ErrorPage Path)

 

 

<< BasicErrorController View(오류화면) 처리순서 >>

 

1순위. Client To Server 뷰 템플릿 (resources/templates/**)

* resources/templates/error/400.html     // HTTP STATUS Code (400) 명확한 것 우선 호출..

* resources/templates/error/4xx.html     // 400 외.. (401, 402, 403, 404...) 

--> 뷰 템플릿은 동적으로 (Client To Server) 상호작용

 

2순위. 정적리소스 (resources/static/**)

* resources/static/error/500.html     // HTTP STATUS Code (500) 명확한 것 우선 호출..

* resources/static/error/5xx.html     // 500 외.. (501, 502, 504, 505...) 

--> 정적인 화면은 수정X (고정적인 화면) 

 

3순위. 위 해당사항 없을시 ( 1,2번에 관한 View 존재x )

* resources/templates/error.html