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
- Servlet과 JSP는 주로 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 |