[Spring / 스프링] MVC 패턴 작동 순서 | 처리 과정

스프링 Web MVC 프로젝트는 클라이언트(사용자)의 모든 요청을 Dispatcher Servlet이 받아서 순서에 맞게 작업을 할당한다. 이때 Handler Mapping, Controller, viewResolver, view 등이 Dispatcher Servlet의 요구사항을 확인 및 수행하고 그 결과를 return 한다. 각각의 리소스는 Dispatcher Servlet 외에는 직접 소통하지 않는다.

출처: javatpoint

 

스프링 MVC 작동 순서

  • 서버 스타트(Server Start)
  • Dispatcher Servlet 객체 생성

서버가 스타트하면 web.xml에 코딩된 내용에 따라 객체가 생성된다. 이때 Dispatcher Servlet 객체도 생성된다.

이처럼 코딩이 돼 있기 때문이다. DispatcherServlet은 기본적으로 Webapp폴더의 /WEB-INF/ 디렉터리에 위치한 [Servlet이름]-servlet.xml파일로부터 스프링 설정 정보를 읽어 온다.

  • 컨테이너 생성
  • HandlerMapping 구현 객체 생성
  • ViewResolver 구현 객체 생성
  • servlet.xml : Controller 어노테이션(@) 확인 및 객체 등록(@RequestMapping에 따라 요청에 맞는 컨트롤러가 정해지는 단계)

보이지 않는 곳에서 이런 작업을 처리하기 때문에 프로젝트가 시작되기까지 시간이 좀 걸리는 것이다.

  • 클라이언트 요청이 Dispatcher Servlet에 전달됨
  • Dispatcher Servlet가 HandlerMapping에 요청
  • HandlerMapping가 요청에 맞는 Controller 알려줌
  • Dispatcher Servlet은 요청에 맞는 Controller에 명령
  • Controller는 @ModelAttibute 메서드 return. 이후 요청에 맞는 @RequestMapping 메서드 수행. 요청 처리 결과를 모델 데이터로 저장하고 ModelAndView 객체를 return
  • DispatcherServlet은 ViewResolver로부터 응답 결과를 생성할 뷰 객체를 구함. ViewResolver는 응답 화면을 생성할 뷰를 결정
  • 뷰는 클라이언트에 전송할 응답을 생성. 즉, 화면을 만듬

Spring Web MVC - DispatcherServlet의 중요성

실행 과정을 보면 알겠지만 DispatcherServlet가 매개체로서 모든 작업에 관여한다. DispatcherServlet은 클라이언트의 요청을 받고 알맞은 리소스에 매핑한다. 때문에 DispatcherServlet은 front controller로 불린다.

반응형

댓글

Designed by JB FACTORY