[jsp] MVC패턴, Model1 & Model2

ㅇㅅㅇ·2023년 3월 27일
0

MVC 패턴이란?

소프트웨어 공학에서 사용되는 디자인 패턴 중 하나. 사용자 인터페이스와 비즈니스 로직을 분리하여 각각의 독립적으로 운용하여 유지보수를 용이하게 만들 수 있는 디자인 패턴이다. 기능별로 역할을 구분지으며 각 역할별 코드가 분리되고 가독성이 좋아지며 유지보수 및 확장 측면에서 유리해진다.

1. Model

  • 내부 비즈니스 로직, 백그라운드 로직으로서 처리되는 알고리즘, 데이터, DB와의 상호작용 등을 담당
  • JavaBean에서 담당
    a. View와 Controller에 의존해서는 안됨
    b. 사용자가 이용할 모든 데이터를 지니고 있어야 함
    c. 변경에 대한 처리방법을 구현해야함

2. View

  • 사용자 인터페이스(UI)를 의미하며 요청에 대한 처리결과를 View를 통해 클라이언트에게 화면을 통해 보여줌
  • JSP가 담당
    a. Model에만 의존하고, Controller에 의존하면 안됨
    b. Model이 갖고 있는 데이터를 따로 저장해서는 안됨
    c. Model로부터 사용자마다 다르게 보이는 데이터만을 받아와야함
    d. 반드시 Controller를 통해서 Model에게 데이터를 받아와야함

3. Controller

  • Model과 View 사이에서 중계자 역할을 수행하며, 클라이언트의 요청을 처리하고 흐름제어를 담당
  • Servlet이 담당
    a. 둘 사이 흐름을 담당하기 때문에 Model과 View에 대해 의존적임

1. Model1

모델1은 JSP파일 내에서 뷰와 컨트롤러가 모두 실행되어지는 구조
-> JSP페이지에 로직을 처리하기 위한 코드와 출력을 담당하는 코드가 함께 존재
-> 웹브라우저의 요청, 요청에 대한 작업을 처리함과 동시에 클라이언트에게 결과 출력

장점

  • 단순한 구조로 인해 개발 기간이 짧음
  • 난이도가 낮음

단점

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

2. Model2

모델2는 웹개발에 MVC패턴을 적용해 모델1에 비해 더욱 편리하게 유지보수 가능
-> MVC패턴의 동작구조와 같이, 웹브라우저의 요청을 컨트롤러가 받고, 모델에서 결과를 도출
-> 다시 컨트롤러가 사용자에게 보여줄 알맞은 뷰를 선택하고 데이터를 전달하면, 뷰는 사용자에게 화면 출력
-> 대부분 Model은 JavaBean, View는 JSP, Controller는 Servlet에서 담당

장점

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

단점

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

3. Model1 VS Model2

(1) 클라이언트의 요청처리와 응답처리가 분리되어 있는가

  • Model1은 요청처리와 응답처리가 모두 하나의 JSP에서 이루어짐
  • Model2는 요청처리는 Servlet에서 담당, 응답처리는 JSP에서 이루어져 두 로직이 분리됨

(2) 접근방식

  • Model1은 View와 Controller가 하나의 JSP에 존재하기 때문에 클라이언트가 직접적으로 View에 접근할 수 있음
  • Model2에서 클라이언트는 View에 직접적으로 접근할 수 없고 반드시 Controller를 통해 접근해야 함

MVC패턴에 대해 말할 때는 보통 Model2를 의미하며, Model1을 사용하여 개발하는 사례는 거의 없다. 따라서 Model2에 대한 개념을 잘 알고있어야함


출처 : https://lasbe.tistory.com/99
https://velog.io/@ovan/MVC-Model1%EA%B3%BC-MVC-Model2

0개의 댓글