• 티스토리 홈
starryeye
  • 프로필사진
    starryeye
    • 분류 전체보기 (189)
      • C++ (17)
      • Java (24)
      • OOP (5)
      • Spring Reactive Stack (12)
        • Reactive Streams (3)
        • Netty (4)
        • Reactor (1)
        • Webflux (3)
        • DB, Cache 연동 (1)
      • Spring (90)
        • Core (17)
        • MVC (33)
        • Client (2)
        • Security (4)
        • DB, Cache 연동 (33)
      • DataBase (12)
        • RDBMS (2)
        • NoSQL (10)
      • Message Broker (6)
      • Web (4)
      • Network (4)
      • 대규모 시스템 설계 (15)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • Spring MVC 마스터하기 예외처리 4
        2022년 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
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바