작성
·
279
0
뒤에 강의까지 듣고 예외가 발생하고 오류페이지를 띄우는 원리를 이런식으로 이해했습니다.
1. WAS -> 필터 -> 서블릿 -> 인터셉터 -> 컨트롤러
2. WAS(여기까지 전파) <- 필터 <- 서블릿 <- 인터셉터 <- 컨트롤러(ex예외발생)
3. WAS 오류 페이지 확인
4. WAS -> 필터(x) -> 서블릿 -> 인터셉터(x) -> 컨트롤러(/error/500) -> View
그런데 스프링 인터셉터 예외 그림(7.로그인처리pdf 13p)에서는 예외가 발생하면
afterCompletion을 실행하고 예외가 WAS로 전달되지 않는다고 그려져있습니다.
제가 loginController 에서
@GetMapping("/login")
public String loginForm(@ModelAttribute LoginForm form){
if(true)
throw new RuntimeException("예외 발생!");
return "login/loginForm";
}
예외를 던져주고
templates/error/500 을 만들어주고 /login에 접속하였더니
만들어준 500.html이 떴는데요.
이 부분이 이해가 잘 안되네요. 예외가 발생하면 was로 전달되지 않는다고 하였는데
was로 전달되지 않았으면 만들어준 500.html 이 어떻게 뜨는건지 원리가 궁금합니다 ㅠ
답변 1
1
안녕하세요. 박시균님
Q: 스프링 인터셉터 예외 그림(7.로그인처리pdf 13p)에서는 예외가 발생하면
afterCompletion을 실행하고 예외가 WAS로 전달되지 않는다고 그려져있습니다.
A: 그림을 잘 보시면 6. 예외 전달이라고 되어 있습니다. 예외는 서블릿에 전달됩니다.
감사합니다.