MVC 패턴이란 애플리케이션을 Model, View, Controller의 세영역으로 구분하여 동작하게 만드는 방식이다.
MVC 패턴의 가장 중요한 장점 중 하나는 비즈니스 로직과 프리젠테이션 로직이 분리되었다는 것이다.
즉, 디자이너와 개발자들의 영역이 분리됨으로써 서로 각자의 영역에 더 집중할 수 있다는 장점이 있다.
Model
애플리케이션에 비즈니스 로직과 사용되는 데이터를 다루는 영역이다.
일반적으로 비즈니스 데이터는 DBMS에 의해 관리되고, 그 데이터를 다루는 연산은 SQL문을 통해 구현된다.
View
최종 사용자에게 보여줄 프리젠테이션 로직을 담당하는 영역이다.
일반적으로 자바 웹 애플리케이션에서는 JSP를 통해서 구현된다.
Controller
컨트롤러는 흐름을 관리하는 역할을 하며, 모델과 뷰 영역간의 조정 역할을 한다.
사용자의 요청을 받아 이를 수행하기 위한 비즈니스 로직을 선택하고 호출하며,
수행한 비즈니스 로직의 결과를 뷰를 통해 보여준다.
Spring Framework는 웹 애플리케이션 개발에 필요한 여러 가지 기능을 미리 만들어서 제공하는데 MVC 기능도 그중 하나이다.
Spring Framework MVC 구조
Spring Framework MVC 구성 요소는 다음과 같다.
DispatcherServlet
클라이언트의 요청을 전달받아 해당 요청에 대한 컨트롤러를 선택하여 클라이언트의 요청을 전달한다. 또한 Controller가 반환한 값을 View에 전달하여 알맞은 응답을 생성한다.
HandlerMapping
클라이언트가 요청한 URL을 처리할 Controller를 지정한다.
Controller
클라이언트의 요청을 처리한 후 그 결과를 DispatcherServlet에 전달한다.
ViewResolver
Controller의 처리 결과를 전달한 View를 지정한다.
View
Controller의 처리 결과 화면을 생성한다.
클라이언트가 DispatcherServlet에 URL로 접근하여 해당 정보를 요청한다.
HandlerMapping에서 해당 요청에 대해 매핑된 Controller가 있는지 요청한다.
매핑된 Controller에 대해 처리를 요청한다.
Controller가 클라이언트의 요청을 처리한 결과와 View 이름을 반환한다.
DispatcherServlet에서는 Controller에서 보내온 View 이름을 ViewResolver로 보내 해당 View를 요청한다.
ViewResolver는 요청한 View를 보낸다.
View의 처리 결과를 DispatcherServlet으로 보낸다.
DispatcherServlet은 최종 결과를 클라이언트에게 전송한다.