Search
〰️

Servlet 예외처리

오류페이지 작동 원리

예외 발생 흐름
WAS(여기까지 전파) <- 필터 <- 서블릿 <- 인터셉터 <- 컨트롤러 (예외 발생)
Java
복사
sendError 흐름
WAS(sendError 호출 기록 확인) <- 필터 <- 서블릿 <- 인터셉터 <- 컨트롤러 (response.sendError())
Java
복사
→ WAS는 해당 예외를 처리하는 오류 페이지 정보를 확인한다.
new ErrorPage(RuntimeException.class, “error-page/500”)
RuntimeException예외가 WAS까지 전달 → WAS는 오류페이지 정보를 확인 → /error-page/500 지정됨을 확인 → /error-page/500을 다시 호출
오류 페이지 요청 흐름
WAS 'error-page/500' 다시 요청 -> 필터 -> 서블릿 -> 인터셉터 -> 컨트롤러 (/error-page/500) -> View
Java
복사
예외 발생과 오류 페이지 요청 흐름
1. WAS(여기까지 전파) <- 필터 <- 서블릿 <- 인터셉터 <- 컨트롤러 (예외 발생) 2. WAS 'error-page/500' 다시 요청 -> 필터 -> 서블릿 -> 인터셉터 -> 컨트롤러 (/error-page/500) -> View
Java
복사
웹 브라우저(클라이언트)는 서버 내부에서 이런 일이 일어나는지 전! 혀! 모른다. 오직 서버 내부에서 오류 페이지를 찾기 위해 추가적인 호출을 한다.
예외가 발생하면 WAS 까지 전파 → WAS는 오류 페이지 경로를 찾아 내부에서 오류 페이지를 호출 → 이때 오류 페이지 경로로 필터, 서블릿, 인터셉터, 컨트롤러가 모두 다시 호출된다 @@@
필터는 DispatchType으로 중복 호출 제거
dispatchType=ERROR
인터셉터는 경로 정보로 중복 호출 제거
excludePathPatterns(”/error-page/**”);