Java Web Programming

자바에서 웹 프로그래밍을 지원하기 위해 사용자 요청에 대한 처리를 Servlet 객체에서 선언하고, 해당 Servlet 객체들을 Servlet Container 가 관리한다.

스프링에서는 Servlet Container 를 구현한 Dispatcher Servlet 을 이용하여 사용자의 요청과 응답을 관리하고 있다.

Untitled

  1. DispatcherServlet 이 브라우저로부터 요청을 받는다.

    1. DispatcherServlet : 클라이언트의 요청을 받고 응답을 하기 까지의 모든 과정을 담당한다.
  2. DispatcherServlet 은 요청된 URL 을 HandlerMapping 객체에게 넘기고 호출해야 할 Controller 메서드 정보를 얻는다.

    1. 이 때, Controller 를 찾고 Interceptor 가 설정되어 있는 URL 과 일치하면 Interceptor 의 preHandle 메서드가 실행된다.

      Interceptor

  3. DispatcherServlet 은 Controller 를 실행해줄 HandlerAdapter 객체를 가져온다.

    1. 이 때, Adapter 를 찾고 파라미터를 이용하여 Controller 에서 필요한 객체를 생성하기 위해 Resolver 가 실행된다.

      ArgumentResolver

  4. HandlerAdapter 는 Controller 를 실행한다.

    1. 이 때, Interceptor 의 postHandle 메서드가 실행된다.
  5. Controller 는 비즈니스 로직을 처리하고, 그 결과를 바탕으로 뷰(ex. JSP)에 전달할 객체를 Model 객체에 저장한다. DispatcherServlet 에게 view name 을 리턴한다.

  6. DispatcherServletview nameView Resolver 에게 전달하여 View 객체를 얻는다.

    1. 이 때, Interceptor 의 afterCompletion 메서드가 실행된다.
  7. DispatcherServletView 로부터 받은 정보를 클라이언트에게 전달한다.

  8. 응답한다.

https://tecoble.techcourse.co.kr/post/2021-05-24-spring-interceptor/

https://starkying.tistory.com/entry/Spring-MVC-동작원리-구성요소