인프런 커뮤니티 질문&답변

혜민님의 프로필 이미지
혜민

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

서블릿 예외 처리 - 인터셉터

"/error-page/**" 자세한 설명...

작성

·

284

0

excludePathPatterns("/error-page/**")

자세한 뜻을 잘 모르겠습니다..

결국 /error-page/** 해주면 '제외하기 쉽게 되어 있기 때문에, 이러한 설정을 사용해서 오류 페이지 경로를 excludePathPatterns 를 사용해서 빼주면 된다.' 라고 알고 있습니다.  

그리고 /error-page/** 작성하여 실행 시키면 REQUEST가 두번 출력되지 않는 다는 것과 postHandle() 메서드가 출력되지 않는 다는 것만 알고 있습니다.

반대로 /error-page/** 빼고 실행 한다면 REQUEST가 두번 출력되고, postHandle() 가 호출 된다는 것을 알고는 있는데,, 

왜 그렇게 동작하는지 자세히 모르겠습니다.

뭔가,, 답만 알고 풀이는 모르고 있단 생각이 듭니다..

둘다 똑같은거 같은데, 차이가 뭔지... 하는 마음입니다.

 

제가 이해하기론 /error-page/** 는 error-page 밑에 있는 모든 파일을 해당한다고 이해하고 있는데, 그렇다면 templates 밑에 있는 /error-page/404.html 와 /error-page/500.html 이 제외 되어 출력 되면 안되는 것이 아닌가 싶습니다. 그리고 둘다 컨트롤러를 통해 잘 동작하는거 같습니다.. 

 

그리고,  WAS까지 갔다 두번째 필터에서 제외 된다는 것이 /error-page/** 이렇게 설정하여, 어떻게 필터를 제외한다는 것인지도 모르겠습니다.

 

/error-page/** 설정 함으로써 제외 된다.. 무슨 말인지 잘 모르겠습니다 ...

 

 

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. water_ yoon님

 

정상 케이스

고객요청 -> 인터셉터 호출 -> 컨트롤러 호출

 

오류 케이스

고객요청(/request) -> 인터셉터 호출 -> 컨트롤러 호출(오류 발생) -> WAS로 오류 전달 -> WAS는 오류 페이지 호출을 위해 내부 호출(/error-page) -> 인터셉터 호출 -> 컨트롤러 호출(오류 페이지)

 

여기 보시면 오류 케이스에 인터셉터가 총 2번 호출되게 됩니다.

오류 케이스에서 인터셉터 호출을 하지 않는 것이 목적이기 때문에 제외했습니다.

감사합니다.

 

혜민님의 프로필 이미지
혜민

작성한 질문수

질문하기