본문 바로가기

Spring

[Spring] Spring MVC

Spring MVC

Spring MVC는 웹 애플리케이션을 빌드하기위한 프레임워크입니다. 

또한 Spring MVC는 MVC 패턴을 따르며 IOC-DI등을 구현할 수 있습니다.

Spring MVC 동작구조

서블릿(Servlet)은 클라이언트의 요청을 처리하고 결과를 반환하는 자바 웹 프로그래밍 기술입니다. 일반적으로 서블릿서블릿 컨테이너에서 관리합니다. 서블릿 컨테이너서블릿 인스턴스를 생성하고 관리하는 역할을 하는 주체로서 톰캣WAS의 역할과 서블릿 컨테이너의 역할을 수행하는 대표적인 컨테이너입니다.

Servlet Container

  • 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리합니다.
  • 서블릿 객체는 싱글톤 패턴으로 관리합니다.
  • 멀티 스레딩을 지원합니다.

Spring에서는 DispatcherServlet서블릿의 역할을 수행합니다. Spring은 기본적으로 Tomcat을 사용합니다. 그렇기 때문에 Servlet ContainerDispatcherServlet은 자동으로 설정된 web.xml의 설정값을 공유합니다.

이제 DispatcherServlet의 동작을 살펴보겠습니다!

  1. DispatcherServlet 으로 요청이 들어오면 DispatcherServletHandler Mapping을 통해 요청 URI에 매핑된 핸들러를 탐색합니다. 여기서 핸들러는 Controller을 의미합니다.
  2. Handler AdapterController를 호출합니다.
  3. Handler AdapterController의 응답이 돌아오면 ModelAndView로 가공해 반환합니다.
  4. View 형식으로 리턴하는 컨트롤러는 View Resolver를 통해 View를 받아 리턴합니다.

 

Handler

여기서는 Controller를 의미하고, DispatcherServlet이 전달해준 HTTP 요청을 처리하고 결과를 Model에 저장합니다.

 

ModelAndView

ModelAndView Controller에 의해 반환된 ModelViewWrapping된 객체입니다.

 

ViewResolver

ModelAndView를 처리하여 View를 그리는 역할을 합니다. Model에 저장되어있는 데이터를 사용해 View를 그립니다.

 


● 참고자료 : 스프링부트 핵심가이드 (장정우 | 위키북스)

 

'Spring' 카테고리의 다른 글

[Spring] 단위 테스트  (0) 2023.03.24
[Spring] Bean  (0) 2023.02.17
[Spring] @Transactional  (0) 2023.02.16
[Spring] Redis  (0) 2023.02.11
[Spring] WS/WAS  (2) 2023.01.15