[MVC Pattern] MVC 패턴

DevelopHeo·2024년 12월 19일
0
post-thumbnail

✏️ Web Application Arcchitecture - MVC

Web Application Architecture

  • JSP를 이용하여 구성할 수 있는 Web Application Architecture는 크게 model1과 model2로 나뉜다.
  • Model1 구조는 JSP에서 자바 코드와 html 코드를 모두 처리하는거
  • Model2 구조는 JSP가 응답페이지(html)만 처리하는거
    - java코드가 거의 사라지지 전부 사라지지는 않는다.
    - 화면에 보이는 데이터만 java 코드로 사용함.
  • 즉, Model2 구조는 MVC(Model-View-Controller) Pattern을 web 개발에 도입한 구조를 말한다.

Data Logic

  • DAO = Repository = mapper(MyBatis)

Model1 구조

  • model1은 view와 logic을 JSP 페이지 하나에서 처리하는 구조를 말한다.
  • 클라이언트의 요청을 받는것도 JSP
  • Model과 상호작용을 하여 변경된 Model을 사용하여 View를 다시 그려내는것도 JSP
  • 사용자의 요청처리와 요청에 대한 응답처리를 JSP에서 모두 구현하는 구조

Model1 장점

  • 구조가 단순하며 직관적이기 때문에 배우기 쉽다.
  • 개발 시간이 비교적 짧기 때문에 개발 비용이 감소.

Model1 단점

  • 출력을 위한 view(html) 코드와 로직 처리를 위한 java 코드가 섞여 있기 때문에 JSP 코드 자체가 복잡해 진다.
  • JSP코드에 백엔드(developer)와 프론트엔드(designer)가 혼재되기 때문에 분업이 힘들어진다.
  • project의 규모가 커지게 되면 코드가 복잡해 지므로 유지보수 하기가 어려워진다.
  • 확장성(신기술의 도입, framework(vue, spring) 등..)이 나쁘다.

Model2 구조


  • Model2 구조를 MVC Pattern이라고 한다.
  • MVC = Model-View-Controller
  • model2는 모든 처리를 JSP 페이지에서 하는 것이 아니라
    - client 요청에 대한 처리는 servlet
    - logic처리는 java class(Service, DAO, ..)
    - client에게 출력하는 response page를 JSP가 담당한다.
  • MVC Model2는 MVC Model1과는 다르게 View와 Controller가 분리된 구조를 가지고 있다.
  • Controller와 View를 분리함으로써 클라이언트의 요청처리 부분과 응답처리 부분을 분리하여 각 로직을 독립적으로 수행할 수 있다.

Model2 장점

  • 따라서 유지보수 측면에서 좋고 디자이너와 개발자 간의 협업이 수월해지는 장점이 있다.
  • 출력을 위한 view(html) 코드와 로직 처리를 위한 java 코드가 분리 되었기 때문에 JSP는 Model1에 비해 코드가 복잡하지 않다.
  • 화면단과 Logic단이 분리 되었기에 분업이 용이해졌다.
  • 기능에 따라 code가 분리되었기 때문에 유지보수가 쉬워졌다.
  • 확장성이 뛰어나다.

Model2 단점

  • 하지만 Model1보다 프로그램의 흐름이 복잡하기 때문에 개발 난이도가 높으며, 설계에서 어려움을 겪을 수 있다는 단점이 있다.
  • 구조가 복잡해 초기 진입이 어렵다.
  • 개발 시간의 증가로 개발 비용 증가.

Model2 구조

Servicce, DAO and Java Beans = Model
JSP = View
Servlet = Controller

✏️ Model1 vs Model2

핵심적인 차이

  • 클라이언트의 요청처리와 응답처리가 분리되어 있는가
    - MVC Model1은 요청처리와 응답처리가 모두 하나의 JSP에서 이루어집니다.
    - MVC Model2는 요청처리는 Servlet에서 담당하고 응답처리는 JSP에서 이루어지기 때문에 두 로직이 분리되어 있습니다.

  • 접근방식
    - MVC Model1은 View와 Controller가 하나의 JSP에 존재하기 때문에 클라이언트가 직접적으로 View에 접근할 수 있습니다.
    - MVC Model2에서 클라이언트는 View에 직접적으로 접근할 수 없고 반드시 Controller를 통해서 접근해야 합니다.

DTO vs VO 차이

DTO

  • 값을 전달하는 것이 주 목적
  • 값의 전달이 목적이기 때문에 getter/setter 사용 가능
  • 인스턴스 개념

VO

  • 값을 표현하는 것이 목적
  • 불변성을 보장하기 위해 setter 사용 불가(getter만 가지고 있다.)
  • Read-Only 속성을 지닌 값 오브젝트

✏️ MVC Pattern

0개의 댓글