[JSP] 디자인 패턴 / MVC 패턴

JuJaeng2·2023년 11월 11일

JSP공부를 하며 여러 글들을 참고하며 작은 프로젝트를 진행했다.
여러 글들을 보면 model1, model2, mvc 패턴 등의 단어들과
이때 많은 글들에서 Controller, View라는 단어를 많이 사용해서 찾아보니까 MVC 디자인 패턴에서 사용하는 용어라는 것을 알 수 있었다.
그래서 이번 글은 MVC 패턴이란 무엇이고 왜 이런 디자인 패턴을 사용하는지 알아보려고 한다.

MVC 디자인 패턴이라는 세부적인 개념을 알기 전에 디자인 패턴이 무엇인지를 먼저 알아보았다.

디자인 패턴(Design Pattern)

디자인 패턴은 설계자가 재사용이 가능한 설계는 선택하고, 재사용을 방해하는 설계는 배제하도록 도와준다.
자주 사용하는 설계 패턴을 정형화 해서 이를 유형별로 가장 최적의 방법으로 개발을 할 수 있도록 정해둔 설계 알고리즘
또한 패턴을 쓰면 이미 만든 시스템의 파악도 쉽게 할 수 있고, 유지보수나 문서화도 개선할 수 있고, 클래스의 명세도 정확하게 할 수 있다.

✅ 디자인 패턴은 설계자들이 **올바르게** 설계를 **빨리** 만들 수 있도록 도와준다.
  • 개발의 효율성 증가
  • 코드의 재사용성 증가
  • 코드의 가독성 향상
  • 다른 개발자들과의 의사소통 보다 원활해짐

MVC 패턴은 이러한 디자인 패턴 중 하나이다.


MVC 패턴

Model View Controller의 약자로 애플리케이션을 세가지의 역할로 구분한 개발 방법론

  • 클라이언트는 얻고자 하는 정보나 기능을 Controller에게 요청
  • Controller는 사용자의 요청을 수신하고 그에 맞는 비즈니스 로직을 수행
  • 비즈니스 로직을 수행하면 Controller는 필요에 따라 Model을 호출하여 데이터를 요청
  • 요청을 모두 처리하면 View를 통해 클라이언트가 원하는 정보를 시각적으로 보여줌(화면으로 출력)

컴포넌트(Model, View, Controller)

Model

  • 데이터와 비즈니스 로직을 담당
  • 데이터의 상태를 관리하고 조작하며, 변경에 따른 알림을 View와 Controller에 전달

View

  • 사용자 인터페이스를 담당
  • 웹에서 웹 브라우저로 렌더링 되는 페이지
  • 데이터, 로직은 없어야 함
  • Model의 데이터를 시각적으로 표현하고 사용자의 입력을 Controller에게 알림

Controller

  • Model과 View를 연결
  • 사용자의 요청에 맞는 서비스를 실행(Model에서 처리)
  • 처리한 Model의 갑을 뷰에 전달
  • 사용자의 요청(웹 브라우저에서 들어오는 요청)을 가장 먼저 마주한다(서비스를 입력받음)

♻️ 흐름
1. 사용자의 입력이 Controller에 들어온다.
2. Controller는 이 입력을 기반으로 Model을 업데이트하거나 Model로 부터 정보를 가져와서 업데이트한다.
3. Model의 변경은 View에 통지되어 화면이 업데이트된다.
4. View는 사용자에게 정보를 표시하고 사용자 입력을 받아 컨트롤러에 전달한다.
5. 이러한 과정을 통해 사용자와 어플리케이션 간의 상호작용이 이루어진다.

왜 MVC 패턴을 사용할까

MVC패턴을 사용함으로 소프트웨어 디자인을 효과적으로 구조화하고 유지보수성을 향상시킬 수 있다.

  1. 모듈화(Modularity)
    • MVC 패턴은 어플리케이션을 Model, View, Controller로 나누어 구성하므로 각 구성 요소가 독립적으로 모듈화될 수 있다.
    • 결과적으로 코드를 더 쉽게 이해하고, 유지보수 및 확장이 가능해진다.
  2. 유연성(Flexibilty)
    • 각 계층이 독립적으로 존재하기 때문에 Model, View, Controller를 쉽게 교체하거나 재사용할 수 있다.
    • 새로운 기능을 추가하거나 기존 기능을 변경할 때, 해당 계층만 수정하면 되므로 유연성이 높아진다.
  3. 유지보수성(Maintainability)
    • 각 계층이 명확하게 분리되어 있기 때문에 수정이나 업데이트가 필요할 때 해당 계층만 수정하면 된다.

[JSP] Model1, Model2

💡 JSP로 구성된 웹 어플리케이션의 아키텍쳐는 크게 Model1, Model2로 나뉜다고 한다. 이때 **Model2가 MVC패턴과 동일한 형태**이기 때문에 여러 사람들이 Controller와 View, Model의 단어를 JSP 관련 글에서 많이 사용했던것 같다.

MVC 패턴과 Model2는 동일한 형태를 갖지만 용어가 조금 다르다

MVC 패턴Model2
Model서비스 클래스 or 자바빈
ViewJSP 페이지
ControllerServlet(서블릿)

참고용으로 Model1과 Model2를 비교해보겠다

Model1

  • JSP가 View와 Controller의 역할을 모두 수행한다.
  • 소스가 복잡해지고 가독성이 떨어져 유지보수에 어려움이 있다.
  • 하지만 섥계가 간단해서 규모가 작은 간단한 프로젝트에는 적합하다.

Model2

  • Servlet이 Controller역할을 하기 때문에 Model1에서 JSP가 사용자의 호출을 받던 것과 다르게 Servlet이 요청을 받는다.
  • Servlet이 요청을 받고 Model에게 요청하여 데이터를 받아 JSP에게 전달해 사용자에게 화면을 출력해준다.
  • 이처럼 Model2는 Html과 Java코드를 분리하여 유지보수가 용이해진다.
  • 하지만 규모가 작은 프로젝트에는 복잡한 설계로 적합하지 않고 규모있는 프로젝트에 적합하다. Model1에 비해 시간이 오래걸리기 때문이다.
profile
다 잘하고 싶은 개발자

0개의 댓글