MVC 모델

김연정·2022년 10월 21일

1. MVC란?

MVC는 Model-View-Controller의 약자이다.

  • Model : 모델은 뷰가 렌더링하는데 필요한 데이터이다. (ex. 사용자가 요청한 상품목록이나 주문내역)
  • View : 웹 애플리케이션에서 뷰(View)는 실제로 보이는 부분이며, 모델을 사용해 렌더링한다. (ex. JSP, JSF, PDF...)
  • Controller : 컨트롤러는 사용자의 액션에 응답하는 컴포넌트로 컨트롤러는 모델을 업데이트하고, 다른 액션을 수행한다.

2. Spring MVC 구성요소

①. Spring에서 기본으로 제공하는 소스 : DispatcherServlet, Handler Mapping, Handler Adapter, view Resolver, Model
②. 개발자들이 만들어야하는 소스 : Controller, view name, Service, Repository
③. Spring과 개발자 둘 다 개발하는 소스 : View

3. Spring MVC 기본 동작 흐름

클라이언트가 Dispatcher Servlet에게 요청을 보내면 Dispatcher Servlet이 그 요청을 받아 이 요청을 처리해줄 컨트롤러와 메서드가 무엇인지 Handler Mapping 에게 물어본다. 하지만 핸들러 매핑이 혼자서 알아낼 수는 없기때문에 어떤 요청에 어떤 컨트롤러가 동작할지를 Xml 파일이나 자바파일의 애노테이션으로 설정을 한다. 이러한 정보들을 스프링으로 만들어진 웹 애플리케이션이 실행될 때 Handler Mapping 객체들이 생성이 되면서 관리를 하게된다. Dispatcher Servlet 은 그렇게 Handler Mapping 으로부터 요청에 알맞는 Controller와 Method들이 무엇인지 알아내고 알아냈다면 Handler Adapter 에게 실행을 요청하고 그때 결정된 Controller와 해당 Method가 실행이될 것이고 그 결과를 Model이 받아서 Dispatcher Servlet에게 전달을한다. 이때 Dispatcher Servlet 은 Controller 가 리턴한 view name 을 알아낼텐데 Controller 가 리턴한 view name 을 가지고 적절한 View Resolver를 통해서 View 를 출력(응답)하게 된다.

4. DispatcherServlet

DispatcherServlet 은 프론트 컨트롤러(Front Controller)의 역할을 한다.

  • 클라이언트의 모든 요청을 받은 후 이를 처리할 핸들러에게 넘기고 핸들러가 처리한 결과를 받아서 사용자에게 응답 결과를 보여준다.
  • DispatcherServlet 은 여러 컴포넌트를 이용해 작업을 처리한다.
Front Controller 는 이론적으로는 한 개 이상 사용될 수 있다고 하는데 보통은 하나만 선언해서 
사용한다.
profile
내가 공부하기위해 정리하는 공간

0개의 댓글