저는 KDT 훈련 과정에서 스프링 웹 개발을 배우고 있으며,
주로 JSP 기반 MVC2 방식과 MyBatis를 활용한 웹 애플리케이션을 다뤄왔습니다.
처음에는 MVC 구조에 맞춰 화면을 반환하는 방식이 자연스럽게 느껴졌지만,
프로젝트를 진행할수록 최근 웹 개발에서 많이 사용되는 API 기반 구조와는 다소 차이가 있다는 생각이 들었습니다.
특히 서버가 화면을 직접 생성하고 반환하는 방식이
프론트엔드와 백엔드의 역할이 분리된 현재의 개발 흐름과는
조금 다른 방향이라는 점이 점점 더 크게 느껴졌습니다.
그래서 기존 커리큘럼에 머무르기보다는,
실무에서 사용되는 구조를 이해하고 싶어 따로 공부를 시작하게 되었습니다.
이번 글에서는 그 첫 단계로,
기존 JSP 기반 MVC2 방식의 개념을 정리하고, REST API 방식과 어떤 차이가 있는지를 중심으로 정리해 보려고 합니다.
REST API를 이해하기 전에,
먼저 제가 익숙하게 사용해 왔던 JSP 기반 MVC2 방식이 어떤 구조인지 정리해 보겠습니다.
JSP 기반 MVC2는 자바 웹 개발에서 오랫동안 사용되어 온 전통적인 구조입니다.
Model, View, Controller의 역할을 분리하여 요청을 처리하는 패턴이며,
특히 서버 사이드 렌더링(SSR)을 전제로 한 구조라는 점이 특징입니다.

JSP MVC2의 가장 큰 특징은 서버가 화면까지 직접 생성한다는 점입니다.
request 또는 session에 저장합니다.JSP는 View 역할을 담당하며, 서버에서 동적으로 HTML을 생성합니다.
이로 인해 화면과 서버 로직이 비교적 강하게 결합되는 구조를 가집니다.
Servlet은 다음과 같은 역할을 수행합니다.
Controller가 요청 처리부터 화면 이동까지 많은 책임을 가지게 됩니다.
장점
한계
JSP MVC2와 REST API 방식의 가장 큰 차이는 응답의 형태입니다.
| 구분 | JSP MVC2 | REST API |
|---|---|---|
| 서버 응답 | HTML 화면 | 데이터(JSON) |
| View 위치 | 서버(JSP) | 클라이언트(React 등) |
| 서버 역할 | 화면 + 로직 | 데이터 제공 |
| 상태 관리 | request / session | 무상태(stateless) |
| 클라이언트 위치 | 브라우저 중심 | 웹, 모바일 등 외부 시스템 |
REST API에서는 서버가 화면을 만들지 않고,
필요한 데이터만 제공하며 화면 구성은 클라이언트가 담당합니다.
JSP MVC2는 한동안 웹 개발의 표준적인 방식이었지만,
프론트엔드 기술의 발전과 다양한 클라이언트 환경이 등장하면서
REST API 기반 구조가 점점 더 많이 사용되게 되었습니다.
다음 글에서는 REST API의 개념을 조금 더 자세히 다뤄보려고 합니다.