Backend/Web

MVC Model2

해로몬 2024. 11. 13. 17:17

MVC Model 2는 JSP와 서블릿을 기반으로 하는 웹 애플리케이션 아키텍처 패턴으로, Model-View-Controller(MVC) 구조를 사용하여 서버 측에서 요청과 응답을 처리하는 방식입니다. MVC Model 2는 비즈니스 로직, 데이터, 프레젠테이션(화면) 로직을 명확히 분리하여, 유지보수와 확장성이 높은 구조를 제공합니다. 이 패턴은 Java 웹 애플리케이션에서 JSP와 서블릿의 역할을 명확히 나누고, 데이터 흐름을 구조화합니다.


MVC Model 2의 주요 구성 요소

  1. Model (모델):
    • 비즈니스 로직과 데이터베이스와의 상호작용을 담당합니다.
    • DAO(Data Access Object)와 DTO(Data Transfer Object)를 사용하여 데이터를 관리합니다.
    • 서블릿이 처리한 데이터는 모델을 통해 JSP에 전달됩니다.
  2. View (뷰):
    • 클라이언트에게 보여질 화면을 담당하는 부분으로, JSP가 주로 이 역할을 수행합니다.
    • 화면에 표시할 데이터를 모델로부터 받아와 사용자에게 전달합니다.
    • 비즈니스 로직은 포함하지 않고, 데이터 표시와 UI만을 담당합니다.
  3. Controller (컨트롤러):
    • 클라이언트의 요청을 받아서 어떤 작업을 수행할지 결정하고, 필요한 데이터를 준비한 뒤 적절한 뷰로 데이터를 전달합니다.
    • 서블릿이 컨트롤러 역할을 수행하며, 요청을 받고 모델과 뷰 간의 흐름을 제어합니다.
    • 컨트롤러는 사용자 요청을 해석하고, 비즈니스 로직을 처리하며, 최종적으로 데이터를 뷰에 전달하는 책임을 가집니다.

MVC Model 2의 흐름

  1. 클라이언트의 요청: 사용자가 웹 브라우저에서 특정 URL을 통해 요청을 보내면, 이 요청이 컨트롤러(서블릿)로 전달됩니다.
  2. 컨트롤러의 요청 처리: 컨트롤러는 요청을 해석하고, 필요한 경우 모델(비즈니스 로직 또는 데이터베이스 작업)을 통해 데이터를 처리합니다.
  3. 뷰 선택 및 데이터 전달: 컨트롤러는 요청 처리 후, 결과 데이터를 뷰(JSP)에 전달하고, 클라이언트에게 보여질 페이지를 결정합니다.
  4. 응답 생성 및 반환: JSP 뷰는 전달받은 데이터를 사용자에게 보여줄 HTML 페이지로 렌더링하여 클라이언트에게 반환합니다.

MVC Model 2의 장단점

장점

  1. 유지보수성 향상: 비즈니스 로직, 데이터, 프레젠테이션이 각각 Controller, Model, View로 나뉘어 있어 유지보수가 용이합니다.
  2. 재사용성 증가: Model, View, Controller의 역할이 분리되어 재사용성이 높습니다.
  3. 코드의 가독성 증가: 역할이 명확히 나누어져 있어 코드를 쉽게 이해할 수 있습니다.

단점

  1. 구현 복잡도 증가: 각 부분이 독립적으로 분리되므로 구조가 복잡해질 수 있습니다.
  2. 작은 프로젝트에는 비효율적: 구조가 분리되기 때문에, 간단한 웹 애플리케이션에서는 구현이 비효율적일 수 있습니다.

요약

  • MVC Model 2는 JSP와 서블릿을 기반으로 하는 구조로, 모델, 뷰, 컨트롤러를 분리하여 역할을 명확히 하고 유지보수성을 높입니다.
  • Controller(서블릿)는 클라이언트 요청을 처리하고, Model(DAO, DTO)은 데이터 처리를 담당하며, View(JSP)는 사용자에게 화면을 출력합니다.
  • 이 구조는 대규모 애플리케이션에서 관리와 확장이 용이하며, Java 웹 애플리케이션 개발에서 널리 사용되는 패턴입니다.

 

공식 문서

  1. Jakarta EE Documentation
  2. Oracle Java EE Documentation (Java EE 8 기준)
  3. Servlet and JSP Documentation by Apache Tomcat

 

 

'Backend > Web' 카테고리의 다른 글

MVC Model1  (0) 2024.11.13
터미널에서 서버 종료하기  (0) 2024.11.13
WEB.xml /@WebServlet  (0) 2024.11.12
Servlet⭐️  (0) 2024.11.12
[JSP] include 액션 태그와 디렉티브 | forward, JavaBean 액션태그  (0) 2024.11.11