MVC?
디자인패턴의 일종이다. MVC 모델1 과 모델2가 있다. 주로 사용되는 것은 모델2 다.
참고) 디자인 패턴이란? : 프로그래밍 중 특정 상황에 맞는 해결 방법을 정형화 해 둔 것.
쉽게말해서, 소프트웨어를 세 부분으로 나누어 관리하는 방식이다.
유지보수성과 코드 재사용성을 높이는 것이 주 목적이다.
Model
- 비즈니스 로직과 데이터 처리를 담당한다.
- 데이터를 가지고 있으며, 그 데이터를 조작하고 업데이트 한다.
- DB와 상호작용하며, 데이터를 검색, 생성, 수정, 삭제하는 등의 작업을 처리한다.
View
- UI (사용자 인터페이스)를 담당한다.
- 클라이언트에게 정보를 표시하고, 사용자와의 상호작용을 처리하는 부분이다.
- 일반적으로 Html, Css, JS 등으로 구현되며, 사용자에게 데이터를 시각적으로 보여준다.
Controller
- Model과 View를 조정, 사용자의 입력을 처리, 비즈니스 로직의 흐름을 제어한다.
- 클라이언트의 요청을 받아들여 모델을 업데이트 하며, 결과를 적절한 View로 전달한다.
- View에서 발생한 이벤트로 처리하며, Model과 View 사이의 상호작용을 조정해준다.
요약
- 사용자는 자신이 얻고자 하는 정보나 기능을 Controller에게 요청한다.
- Controller는 요청을 수신하고, 이에 맞는 비즈니스 로직을 수행한다.
- 이 과정에서 Controller는 필요에 따라 Model을 호출하여 데이터를 요청한다.
- 요청을 전부 처리한 후, View를 통해 사용자가 원하는 정보를 시각적으로 구현한다. (화면 출력)
참고) 비즈니스 로직이란?
-앱에서 실제로 일어나는 일에 대한 규칙이나 동작을 정의하는 것.
-앱의 핵심 로직이며, 비즈니스 요구사항을 처리해주는 역할이다.
-이 규칙이나 동작은 업무 프로세스나 비즈니스 규칙에 따라 다양하다.
MVC 모델 1과 모델 2의 차이?
모델 1 : View와 Controller가 합쳐진 형태.
- MVC 모델에서는 보통 JSP가 View 역할을 수행하는데, 모델 1에서는 View와 Controller의 역할을 모두 수행한다.
- JSP 파일 내에 Java, Html, Css등의 코드가 모두 다 섞이게 되며, 이로 인해 소스를 이해하기 어렵고 유지보수가 어려워지는 단점이 있다.
- 상대적으로 설계가 간단하여 개발속도가 빠르며, 이로인해 프로젝트 규모가 작은 경우에는 알맞은 방법일 수 있다.

(사진 출처 : https://onejuny.tistory.com/entry/JavaJsp-MVC-1-MVC-2-%EC%B0%A8%EC%9D%B4-%EB%B0%8F-%EC%9E%A5%EB%8B%A8%EC%A0%90)
모델 2 : View와 Controller를 분리한 형태.
- 모델 1의 단점 (유지보수의 어려움)을 보완하는 모델이다.
- JSP 는 View 역할만 수행하고, Controller로써 Servlet을 사용한다.
- Html과 Java 코드가 분리되어 확장에도 용이하고, 유지보수도 수월해진다.
- JSP에는 Java 코드 대신 JSTL을 사용하여 결과 화면을 보여준다.
- 초기 설계 단계에 비용이 많이 들 수 있으며, 개발 시간이 비교적 오래걸린다는 단점이 있다.

(사진 출처 : https://onejuny.tistory.com/entry/JavaJsp-MVC-1-MVC-2-%EC%B0%A8%EC%9D%B4-%EB%B0%8F-%EC%9E%A5%EB%8B%A8%EC%A0%90)