Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

[예외] SpringBoot - 오류페이지 본문

인프런/[인프런] 스프링 MVC 2

[예외] SpringBoot - 오류페이지

Seung__ 2021. 9. 27. 23:34

Servlet을 사용하여 오류 페이지를 만들려면 아래와 같은 과정이 필요함

  • WebServerCustomizer 
  • 예외 종류에 따라서 ErrorPage 를 추가
  • 예외 처리용 컨트롤러 ErrorPageController 

 

1. SpringBoot 사용


SpringBoot는 이런 과정을 모두 해줌

  • ErrorPage 를 자동으로 등록한다. 
  • 이때 /error 라는 경로로 기본 오류 페이지를 설정한다.
    • new ErrorPage("/error") , 상태코드와 예외를 설정하지 않으면 기본 오류 페이지로 사용된다.
    • 서블릿 밖으로 예외가 발생하거나, response.sendError(...) 가 호출되면 
      모든 오류는 /error 를 호출하게 된다.
  • BasicErrorController 라는 스프링 컨트롤러를 자동으로 등록한다.
    • ErrorPage 에서 등록한 /error 를 매핑해서 처리하는 컨트롤러다.
  • 참고
    • ErrorMvcAutoConfiguration 이라는 클래스가 오류 페이지를 자동으로 등록하는 역할을 한다.

 

 

2. 주의!


  • WebServerCustomizer가 스프링 빈에 등록되어 있으면,
  • SpringBoot가 제공하는 기본 오류 메커니즘이 동작하지 않음!

 

 

 

3. 개발자는 뭐함?


  • BasicErrorController 는 기본적인 로직이 모두 개발되어 있다.
  • 오류 페이지 화면만 BasicErrorController 가 제공하는 룰과 우선순위에 따라서  등록하면됨.
  • 정적 HTML이면 정적 리소스, 동적으로 오류 화면을 만들고 싶으면 뷰 템플릿 경로에 오류 페이지 파일
  • 와..

 

 

4. 뷰 선택 우선순위


  • BasicErrorController 의 처리 순서
  • 뷰 템플릿
    • resources/templates/error/500.html
    • resources/templates/error/5xx.html
  • 정적 리소스( static , public )
    • resources/static/error/400.html
    • resources/static/error/404.html
    • resources/static/error/4xx.html
  • 적용 대상이 없을 때 뷰 이름( error )
    • resources/templates/error.html
  • 위 경로에 파일을 넣어두기만 하면 됨.. 
  •  구체적일 수록 우선순위 높음.
  • 5xx -> 500대,  4xx -> 400대 

ㅎ...

 

5. GitHub : 210927 errorPage, SpringBoot


 

bsh6463/Exception

Contribute to bsh6463/Exception development by creating an account on GitHub.

github.com

 

Comments