본문 바로가기
computing

(Servlet, JSP), (MVC,MVCS), (MVVM, MVP)

by greentworkshop 2025. 10. 1.

Servlet과 JSP는 둘 다 자바 기반의 웹 애플리케이션을 만들 때 많이 사용하는 기술이지만,

그 역할과 사용 목적에 차이가 있다.

구분 Servlet JSP (JavaServer Pages)
기본 개념 자바 코드로 직접 HTTP 요청을 처리하는 서버 사이드 컴포넌트 HTML 안에 자바 코드를 삽입해서 작성하는 서버 사이드 뷰 템플릿
주 역할 비즈니스 로직, 요청 처리, 데이터 조작 중심 사용자 인터페이스(뷰) 생성에 집중
코드 작성 방식 순수 자바 코드 (HttpServlet 클래스를 상속) HTML + JSP 태그와 자바 코드 혼합
컴파일 시점 서버 시작 시점이나 요청 시 자동 컴파일 최초 요청 시 JSP가 서블릿으로 변환 및 컴파일
유지보수 코드가 복잡해질 수 있어 유지보수가 어려울 수 있음 HTML과 자바 코드가 섞여 있어 가독성 높음 (단, 너무 복잡하면 오히려 어려움)
사용 목적 주로 컨트롤러 역할 (요청 분기, 로직 수행) 주로 뷰 역할 (HTML 렌더링)
장점 강력한 제어, 복잡한 로직 처리에 적합 빠른 개발, 화면 구성에 적합
단점 HTML 작성이 번거롭고 코드가 길어질 수 있음 복잡한 비즈니스 로직에 부적합

쉽게 말해서

  • Servlet은 자바 코드로 웹 요청을 처리하는 컨트롤러 역할에 더 적합.
  • JSP는 HTML과 자바를 섞어서 웹 페이지를 쉽게 만들 수 있는 뷰(View) 역할에 적합.

보통 MVC 패턴에서 Servlet은 Controller, JSP는 View 역할로 함께 많이 쓰인다.


1. MVC (Model-View-Controller) 모델

구성 요소 역할
Model 데이터와 비즈니스 로직 담당
View 사용자에게 보여지는 화면(UI) 구성
Controller 사용자 요청을 받아 처리하고 Model과 View를 연결하는 중간자 역할
  • MVC 특징
    • 사용자 요청 → Controller가 받아서 Model에 작업 지시 → Model이 데이터 처리 → Controller가 View에 전달 → View가 결과를 보여줌
    • 각 컴포넌트가 역할 분리가 명확해서 유지보수가 용이함
    • 대표적인 웹 프레임워크가 Spring MVC, Struts 등이 있음

2. MVCS (Model-View-Controller-Service) 모델

구성 요소역할
Model 데이터 및 비즈니스 객체
View 사용자 화면(UI)
Controller 요청을 받아 서비스 계층에 위임하고 View를 선택하는 역할
Service 비즈니스 로직 처리 담당 (Controller와 Model 사이 역할 분리)
  • MVCS 특징
    • MVC에 Service 계층이 추가된 구조
    • Controller는 요청을 받아서 직접 비즈니스 로직을 처리하지 않고 Service에 위임
    • Service는 핵심 비즈니스 로직을 담당하며, Model 객체를 관리하고 DB 연동도 처리
    • 비즈니스 로직과 요청 처리의 역할 분리가 더 명확해져서 복잡한 시스템에서 유리함
    • Spring Framework에서 많이 쓰이는 구조

비교 요약

 

구분 MVC MVCS
비즈니스 로직 처리 Controller에서 직접 처리하거나 Model에 위임 Service 계층에서 전문적으로 처리
역할 분리 Controller, Model, View 세 부분만 존재 Controller, Service, Model, View로 더 세분화
복잡도 상대적으로 단순 좀 더 복잡하지만 유지보수 및 확장성 우수
사용 사례 단순한 웹 애플리케이션에 적합 규모가 큰 애플리케이션, 복잡한 비즈니스 로직 처리에 적합

쉽게 말해

  • MVC는 기본적인 요청 처리 구조
  • MVCS는 MVC에 서비스(Service) 계층이 추가되어 비즈니스 로직을 분리한 좀 더 발전된 구조

MVVM (Model-View-ViewModel)

구성 요소 역할
Model 데이터와 비즈니스 로직
View 사용자 인터페이스(UI)
ViewModel View와 Model 사이에서 중개자 역할, View의 상태와 행동을 관리하며 데이터 바인딩 지원
  • 특징
    • View와 ViewModel 사이에 데이터 바인딩(양방향 바인딩)이 자주 사용됨 → UI와 데이터 상태 자동 동기화
    • ViewModel은 View에 직접 접근하지 않고, View는 ViewModel의 공개된 속성과 명령을 바인딩
    • 주로 WPF, Xamarin, Angular, React 등 프론트엔드 프레임워크에서 활용
    • 테스트 용이성이 높고, UI 로직과 비즈니스 로직 분리 명확

MVP (Model-View-Presenter)

구성 요소역할
Model 데이터 및 비즈니스 로직
View 사용자 인터페이스(UI), Presenter에게 사용자 이벤트 전달
Presenter View와 Model 사이의 중재자, 사용자 입력 처리, View 업데이트 담당
  • 특징
    • View와 Presenter가 일대일 대응, View는 Presenter에게 모든 이벤트 전달
    • Presenter가 비즈니스 로직 처리 및 View 업데이트 직접 수행
    • View는 최대한 단순, UI 관련 코드만 담당
    • 테스트하기 쉽고, UI와 로직을 명확히 분리 가능
    • 주로 Android 개발, 데스크탑 앱 등에서 많이 사용됨

MVVM vs MVP 비교 요약


 

구분 MVVM MVP
View와 중개자 간 통신 데이터 바인딩 (주로 양방향 바인딩) 사용 인터페이스를 통한 명시적 메서드 호출
중개자(ViewModel/Presenter)의 역할 상태 관리 및 UI 데이터와 행동 관리 사용자 이벤트 처리 및 View 업데이트 직접 담당
View와 중개자의 결합도 낮음 (ViewModel은 View 직접 참조 안 함) 보통 중간 정도 (Presenter가 View 인터페이스 참조)
적용 분야 현대 프론트엔드 프레임워크 및 리액티브 UI 모바일(Android), 데스크탑 앱 등 전통적 UI 개발
테스트 용이성 매우 높음 높음

쉽게 말하면

  • MVVM은 데이터 바인딩을 활용해 View와 ViewModel을 느슨하게 연결하는 구조
  • MVP는 Presenter가 직접 View를 조작하며, 이벤트 처리를 담당하는 구조

아키텍처 패턴 및 기술별 사용 분야 총정리

패턴 주된 사용 분야 플랫폼주요 사용 목적 및 특징
Servlet 서버 사이드 웹 개발 (Java 웹 서버) 자바로 HTTP 요청 처리, 주로 비즈니스 로직, 컨트롤러 역할
JSP 서버 사이드 웹 개발 (Java 웹 서버) HTML + 자바 코드 혼합, 주로 화면(View) 생성
MVC 웹 애플리케이션 (Java, .NET, 등) 요청 처리, 비즈니스 로직(Model), 화면(View), 제어(Controller) 분리
MVCS 대규모 웹 애플리케이션 (Java Spring 등) MVC에 서비스(Service) 계층 추가, 복잡한 비즈니스 로직 분리
MVP 모바일 앱 (특히 Android), 데스크탑 앱 View와 Presenter 분리, View는 최대한 단순, Presenter가 로직 처리
MVVM 프론트엔드 웹 (Angular, React), 데스크탑 앱 (WPF), 모바일 앱(Xamarin) ViewModel을 통한 데이터 바인딩, UI 상태와 행동 관리

상세 설명

1. Servlet과 JSP

  • ServletJSP는 주로 Java 기반 웹 서버에서 사용됨.
  • Servlet은 서버에서 직접 요청을 받아 처리하는 자바 클래스
  • JSP는 HTML 기반의 뷰(View)를 빠르게 만들 수 있는 템플릿 언어에 가깝다.

2. MVC와 MVCS

  • MVC는 전통적인 웹 애플리케이션 아키텍처로, Java, .NET, PHP 등 여러 환경에서 쓰임.
  • MVCS는 Spring Framework처럼 서비스 계층이 추가되어 복잡한 비즈니스 로직을 더 깔끔히 분리할 때 사용.
  • 둘 다 서버 사이드 웹 애플리케이션에 많이 적용됨.

3. MVP

  • MVP는 주로 Android 모바일 앱 개발에서 많이 쓰였고, 데스크탑 애플리케이션에서도 사용.
  • View와 Presenter를 엄격히 분리해서 테스트와 유지보수가 쉽도록 설계하는 패턴.

4. MVVM

  • MVVM은 프론트엔드 웹 프레임워크(Angular, React, Vue.js 등)에서 데이터 바인딩과 함께 널리 사용.
  • 데스크탑 환경인 WPF (Windows Presentation Foundation)나 모바일 크로스플랫폼 프레임워크(Xamarin)에서도 인기.
  • UI와 비즈니스 로직을 느슨하게 연결해 코드의 가독성과 테스트 용이성을 높임.

정리: 플랫폼별 대표 패턴과 기술

플랫폼  분야대표 아키텍처 패턴 / 기술
Java 웹 서버 Servlet, JSP, MVC, MVCS
대규모 웹 애플리케이션 MVCS (Spring Framework 등)
Android 모바일 앱 MVP
프론트엔드 웹 (React, Angular 등) MVVM
데스크탑 앱 (WPF 등) MVVM, MVP

'computing' 카테고리의 다른 글

20251002_android_5_layout속성  (0) 2025.10.02
20250929_iOS5  (0) 2025.09.29
20250925_android4  (0) 2025.09.25
20250922_iOS4  (0) 2025.09.22
20250918_android3  (0) 2025.09.18