1. MVC 패턴이란?
MVC(Model-View-Controller) 패턴은 사용자 인터페이스, 데이터 및 논리 제어를 구현하는 데 사용되는 디자인 패턴입니다.
기존에 하나의 Servlet이나 JSP로 처리하던 것을 Controller와 View로 역할을 나누었습니다.
● Model
- 실제 비즈니스 로직을 처리하는 부분입니다.
- 비즈니스 로직을 처리하여 결과를 Controller를 통해 View 페이지로 전달합니다.
- 실제로 Model 클래스의 비즈니스 로직을 가져다 쓰는 곳은 Controller와 Model 사이에 있는 Command 클래스입니다.
- JavaBean이라고 부르며 이 파일은 클래스 파일로 이루어져 있습니다.
● View
- 사용자가 보게 될 결과 화면을 담당합니다.
- 데이터베이스 연동과 같은 비즈니스 로직을 구현하지 않습니다.
- Controller를 통해서 Model에서 처리한 결과를 화면에 출력할 때 사용합니다.
- JSP로 구성됩니다.
● Controller
- 사용자의 입력 처리와 흐름을 제어하고, 사용자에게 받은 명령을 model이나 view로 라우팅합니다.
- 사용자로부터의 입력에 대한 응답으로 Model/View를 업데이트하는 로직을 포함합니다.
- 보이는 페이지가 아닌 연결시켜주는 통로 역할만 합니다.
- 중간 역할만 하기 때문에 매우 간단합니다.
- Servlet으로 구성됩니다.
* Model2는 Model과 View를 독립적으로 코딩하기 때문에 Controller를 만들어서 Model과 View 사이에 개입하여 서로 연동하는 역할을 해주어야 합니다.
2. Model1
Model1은 View와 Controller를 JSP에서 모두 구현하는 구조를 가지고 있습니다.
클라이언트의 요청을 받는 것도 JSP, Model과 상호작용을 하여 변경된 Model을 사용하여 View를 다시 그려내는 것도 JSP입니다.
따라서 사용자의 Request 처리와 Response 처리를 모두 JSP에서 합니다.
장점으로는 흐름이 간단하여 작은 규모의 프로젝트에서 사용하여 개발이 쉬워집니다.
단점으로는 프로젝트의 규모가 커질수록 유지 보수가 어려워지고, View와 Controller가 하나의 JSP에 합쳐져 있기 때문에 디자이너와 개발자의 협업에 어려움이 생길 수 있습니다.
3. Model2
Model2는 View와 Controller가 분리된 구조입니다.
클라이언트의 Request 처리, 흐름 제어를 하면서 필요할 때에 Model과 상호작용을 하는 Controller는 Servlet에서 담당하고, 사용자 인터페이스를 보여주는 View는 JSP에서 담당합니다.
Controller와 View를 분리함으로써 클라이언트의 Request 처리와 Response 처리 부분을 분리하여 독립적으로 실행이 가능합니다.
장점으로는 유지 보수 측면에서 Model1 보다 좋고 개발자와 디자이너의 협력이 수월합니다.
단점으로는 Model1보다 프로그램의 흐름이 복잡하기 때문에 개발 난이도가 높고, 설계에서 어려움을 겪을 수 있다는 단점이 있습니다.
4. Model1, Model2 비교 정리
Model1과 Model2의 차이점은 크게 두 가지가 있습니다.
● 클라이언트의 Request 처리와 Response 처리가 분리되어 있는가?
- Model1은 모두 JSP에서 이루어집니다.
- Model2는 Request 처리는 Servlet에서 담당하고, Response 처리는 JSP에서 이루어집니다.
● 접근 방식의 차이
- Model1은 View와 Controller가 JSP에 함께 존재하기 때문에 클라이언트가 직접적으로 View에 접근할 수 있습니다.
- Model2는 클라이언트는 View에 직접적으로 접근이 불가하며 반드시 Controller를 통해서 접근해야 합니다.
참고로 흔히 말하는 MVC 패턴은 MVC2 패턴을 이야기합니다.