본문 바로가기
Java, JSP

[JSP] MVC패턴과 Model1, Model2

by LasBe 2022. 2. 25.
반응형

 

MVC 패턴


 

디자인패턴 중 하나인 MVC 패턴은 Model, View, Controller로 구성되어 있습니다.

 

이 세가지 요소는 프로젝트에서 각각의 역할을 구분해 담당합니다.

 

기능별로 역할을 구분지음으로써 각 역할별로 코드가 분리되고

가독성이 좋아지며 유지보수확장 측면에서 유리해집니다.

 

그럼 Model, View, Controller가 담당하는 역할과 각각의 규칙에 대해 알아보겠습니다.

 

 

 

Model, View, Controller의 역할과 규칙


1) Model 

JavaBean에서 담당하는 Model은

데이터베이스에서 데이터를 가져와 작업을 처리하거나 처리한 작업의 결과를 저장합니다.

 

핵심적인 로직을 지니고 있으며, 프로젝트에서 전반적인 데이터 처리를 담당합니다.

 

Model에서 지켜야하는 규칙은 다음과 같습니다.                                                                                                                                     

  1. Model은 View와 Controller에 의존해서는 안됩니다.
  2. 사용자가 이용할 모든 데이터를 지니고 있어야 합니다.
  3. 변경에 대한 처리방법을 구현해야합니다.

 

2) View

JSP가 담당하는 View는 사용자에게 직접 보여지는 화면의 출력을 담당합니다.

 

Model과 Controller에 의해 처리된 결과물이 보여지게 됩니다.

 

View에서 지켜야하는 규칙은 다음과 같습니다.

  1. View는 Model에만 의존해야하지만 Controller에 의존해선 안됩니다.
  2. Model이 갖고 있는 데이터를 따로 저장해서는 안됩니다.
  3. View가 Model에게 사용자마다 다르게 보이는 데이터만을 받아야합니다.
  4. View는 반드시 Controller를 통해서 Model에게 데이터를 받아와야합니다.

 

3) Controller

Servlet이 담당하는 Controller는 Model과 View 사이에서 흐름을 제어하는 역할을 합니다.

 

사용자가 버튼을 클릭해 이벤트를 발생시키거나, 주고 받는 데이터의 흐름 처리와 같이

전반적인 상호작용과 관련된 작업을 처리합니다.

 

Controller에서 지켜야하는 규칙은 다음과 같습니다.

  1. Controller는 사이에서 흐름을 담당하기 때문에 Model과 View에 대해 의존적입니다.

 

MVC에 대한 내용을 알아봤으니 Model1, Model2에 대한 내용과 차이점에 대해 알아보겠습니다.

 

 

 

Model1과 Model2의 차이점


1) Model1

 

모델1은 JSP 파일 내에서 뷰와 컨트롤러가 모두 실행되어지는 구조를 지닙니다.

 

즉, JSP 페이지에  로직을 처리하기 위한 코드와 출력을 담당하는 코드가 함께 존재합니다.

 

이는 웹브라우저의 요청과 요청에 대한 작업을 처리함과 동시에 클라이언트에게 결과를 출력하게 됩니다.

 

- 장점

  • 단순한 구조로 인해 개발 기간이 짧습니다.
  • 난이도가 낮습니다

 

- 단점

  • 복잡도가 높아질수록 기능이 섞인 코드때문에 유지보수가 어렵습니다.
  • 디자이너와 개발자 간 의사소통이 필요합니다.

 

2) Model2

model2는 웹 개발에 MVC 패턴을 적용해 model1에 비해 더욱 편리하게 유지보수할 수 있도록 하였습니다.

 

위에서 설명한 MVC 패턴의 작동구조와 같이

웹 브라우저의 요청을 컨트롤러가 받고,  모델에서 요청에 대한 결과를 도출합니다.

 

이후 다시 컨트롤러가 사용자에게 보여줄 알맞은 뷰를 선택하고 데이터를 전달하면

마지막으로 뷰는 사용자에게 화면을 출력해주게 됩니다.

 

대부분 Model은 JavaBean / View는 JSP / Controller는 Servlet에서 담당하게 됩니다.

 

- 장점

  • 컨트롤러와 뷰의 분리로 인해 유지보수와 확장이 편리합니다.
  • 디자이너와 개발자의 작업이 분리되어 분업에 용이합니다.

 

- 단점

  • 개발 초기 단계에 구조 설계에 비교적 많은 작업량과 시간이 필요합니다.
  • 자바와 구조에 대한 깊은 이해도가 필요하기 때문에 높은 수준을 요합니다.

 

반응형

댓글


오픈 채팅