[Spring / 스프링] MVC 패턴 작동 순서 | 처리 과정
- WEB
- 2021. 8. 6.
스프링 Web MVC 프로젝트는 클라이언트(사용자)의 모든 요청을 Dispatcher Servlet
이 받아서 순서에 맞게 작업을 할당한다. 이때 Handler Mapping
, Controller
, viewResolver
, view
등이 Dispatcher Servlet의 요구사항을 확인 및 수행하고 그 결과를 return 한다. 각각의 리소스는 Dispatcher Servlet 외에는 직접 소통하지 않는다.
스프링 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로 불린다.
반응형
'WEB' 카테고리의 다른 글
[Spring / 스프링] 엑셀 파일 다운로드 구현 | AbstractXlsView (0) | 2021.08.09 |
---|---|
[Spring / 스프링] 파일 다운로드 구현 | AbstractView | ApplicationContextAware (0) | 2021.08.09 |
[Spring / 스프링] DI | @Component @Controller @Service @Repository 차이 (0) | 2021.08.04 |
[Spring / 스프링] AOP | 관점지향이란 | 사용법 (0) | 2021.08.01 |
[Spring / 스프링] DI | 의존성 주입 | IoC 컨테이너 | 사용법 (0) | 2021.07.30 |