


클라이언트의 요청을 전달받으면 요청 사항 처리를 위한 작업을 하는데, 이 때 처리한 작업의 결과 데이터를 Model이라고 한다.
데이터베이스와 상호작용하는 계층
웹 브라우저와 같은 애플리케이션의 화면에 보이는 리소스를 제공하는 역할
JSP,thymeleaf 등 다양한 템플릿 엔진 사용 가능
클라이언트 측의 요청을 직접적으로 전달받는 엔드포인트로써 Model과 View의 중간에서 상호작용을 해주는 역할
클라이언트의 요청(Http Requset)을 전달받아 비즈니스 로직을 호출하여, Model 데이터가 만들어지면 이 데이터를 View로 전달(결과 반환)해주는 역할

MVC1 패턴이란, 사용자로부터 요청이 들어오면 DB로부터 필요한 데이터를 받은 Model 객체를 JSP 페이지(View)에 담아 응답으로 보내는 패턴
JSP가 비즈니스 로직과 HTML(View) 코드가 분리되지 않음

MVC1에서 Controller 역할을 하는 Servlet이 추가
요청을 하나의 컨트롤러(Servlet)가 먼저 받는다.
서블릿은 요청에 대한 비즈니스 로직을 처리한 후, 이를 JSP 파일에 반영하는 역할을 수행

스프링 프레임워크에서 MVC2 모델을 좀 더 발전시킨 모델
프론트 컨트롤러가 우선적으로 클라이언트로부터 모든 요청을 받게 되며, 실제 요청의 처리는 개별 컨트롤러 클래스로 위임을 한다.
개별 컨트롤러 클래스는 Handler라고 하며, DI를 통해 생성해둔 Bean을 통해 비즈니스 로직 처리 결과를 Model에 담아 다시 프론트 컨트롤러로 보낸다. 프론트 컨트롤러는 받은 Model을 알맞은 View 템플릿으로 전달하여 반영시키고, 최종적으로 클라이언트로 보낼 화면을 응답 결과로 전송한다.

1. DispatcherServlet이 클라이언트로부터 요청을 수신
2. HandlerMapping이 어느 Handler(Controller)를 사용할지 결정
3. HandlerAdaptor를 통하여 Controller를 호출/실행
4. Controller가 생성한 모델 데이터를 이용하여 HandlerAdaptor가 ModelView 생성
5. ViewResolve가 처리 결과를 보여줄 View를 결정
6. 화면 생성