MVC 패턴이란?
M(Model) / V(View) / C(Controller)
- 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴
- UI와 비즈니스 로직을 분리 -> 서로 영향없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다.

모델 Model
- 데이터와 비즈니스 로직을 관리.
- 데이터 영역. DAO(Data Access Object), DO(Data Object) 등으로 구분하여 구현한다.
- 사용자에게 노출되지 않으므로 표시 형식에 유의하지 않아도 된다
- 몇몇 함수들은 사용자의 질의(query)에 대해 상태 정보를 제공하고, 나머지 함수들은 상태를 수정한다.
뷰 View
- 보여줄 값(모델)을 컨트롤러로부터 받아와 사용자에게 보여준다.
- 사용자에게 보여지는 화면(UI). 모델로부터 정보를 얻고 표시한다.
컨트롤러 Controller
- MVC 패턴의 중심 부분으로 제어 역할을 담당하며 서블릿(Servlet)으로 구현된다.
- 데이터와 비즈니스 로직 사이의 상호 동작을 관리한다. 즉, 모델과 뷰를 통제하여 View와 Model이 직접적인 상호 소통을 하지 않도록 관리한다.
- 앱의 사용자로부터 입력에 대한 응답으로 모델 및/또는 뷰를 업데이트하는 로직.
MVC1


JSP페이지와 자바빈 클래스로 나누어 구현.
JSP페이지
- Controller + View
- 하나의 jsp 페이지에서 controller는 자바, view는 html, css는 자바스크립트를 사용.
- 하나의 화면을 보여주고 요청이 페이지로 들어올때 요청에 관한 비즈니스 로직을 수행하는것도 JSP 페이지에서 이루어진다.
자바빈 클래스
- DB같은 외부 저장소와 관련된 데이터 처리 담당.
장단점
- JSP 하나로 유저의 요청을 받고 응답을 처리하므로 구현 난이도는 쉽다.
- JSP 하나에서 MVC가 모두 이루어져 재사용성이 매우 떨어지고, 읽기도 힘들다. 즉, 유지 보수에 있어 어려움이 크다.
MVC2


- 웹 브라우저 요청을 하나의 컨트롤러(servlet)에서 먼저 처리.
- MVC1과 달리 Controller, View가 분리되어 있다.
- controller는 요청에 대한 로직처리를 model로 보내고, model은 결과를 view로 보내어 사용자에게 응답한다.
- 대표적인 것이 스프링 프레임워크.

- DispatcherServlet이 FrontController의 역할을 맡아 유저의 요청을 받는다.
장단점
- 유지보수 확장에 용이하며 controller와 view의 분리로 명료한 구조를 가진다. 따라서 개발자와 디자이너의 역할 분담이 용이하다.
- 구조 설계를 위한 시간이 많이 소요되어 개발이 어렵다.
Reference