자바에서 웹 프로그래밍을 지원하기 위해 사용자 요청에 대한 처리를 Servlet 객체에서 선언하고, 해당 Servlet 객체들을 Servlet Container
가 관리한다.
스프링에서는 Servlet Container 를 구현한 Dispatcher Servlet
을 이용하여 사용자의 요청과 응답을 관리하고 있다.
DispatcherServlet
이 브라우저로부터 요청을 받는다.
DispatcherServlet
은 요청된 URL 을 HandlerMapping
객체에게 넘기고 호출해야 할 Controller 메서드 정보를 얻는다.
이 때, Controller 를 찾고 Interceptor 가 설정되어 있는 URL 과 일치하면 Interceptor 의 preHandle 메서드가 실행된다.
DispatcherServlet
은 Controller 를 실행해줄 HandlerAdapter
객체를 가져온다.
이 때, Adapter 를 찾고 파라미터를 이용하여 Controller 에서 필요한 객체를 생성하기 위해 Resolver 가 실행된다.
HandlerAdapter
는 Controller 를 실행한다.
Controller 는 비즈니스 로직을 처리하고, 그 결과를 바탕으로 뷰(ex. JSP)에 전달할 객체를 Model
객체에 저장한다. DispatcherServlet
에게 view name
을 리턴한다.
DispatcherServlet
은 view name
을 View Resolver
에게 전달하여 View
객체를 얻는다.
DispatcherServlet
은 View
로부터 받은 정보를 클라이언트에게 전달한다.
응답한다.
https://tecoble.techcourse.co.kr/post/2021-05-24-spring-interceptor/