spring Web MVC는 서블릿 API를 기반으로 구축된 최초의 웹 프레임워크이다.
서블릿이란?
"웹 요청/응답을 처리하기 위해 만들어진 자바 클래스이다."
Servelet은 Server + Applet(작은 조각)의 합성어이다. 서블릿은 클라이언트가 HTTP 요청을 보내면, 그 요청을 받아서 자바 코드로 로직을 수행하고, 결과를 다시 응답(HTTP Response)해주는 역할을 한다. 즉 HTTP 요청을 받아 해석하고, 필요한 로직 수행하고, 응답을 보내는 기술이다.
하지만 서블릿은 '자바 클래스'일 뿐이라서 총 관리하고 실행시키는 무언가가 필요하다. 그거이 바로 서블릿 컨테이너이다.
서블릿 컨테이너는 HTTP 요청이 오면, 해당 요청을 처리할 서블릿을 찾아 일을 시킨다. 해당 서블릿이 작업을 완료하고 결과를 주면, 이를 사용자에게 전달한다. 즉 서블릿은 직원이고, 서블릿 컨테이너는 매니저이다.
Spring에서는 과거의 방식인 URL마다 서블릿을 만드는게 아니라, Dispacher Servlet이라는 대표 서블릿을 만들어서 모든 요청을 가장 먼저 받는다.
Dispacher Servlet이란?
Spring MVC는 많은 웹 프레임워크와 마찬가지로 Front Controller 패턴을 중심으로 설계되었다. DispatcherServlet이 요청 처리를 위한 공통 알고리즘을 제공하고, 실제 작업은 다른 controller에서 진행한다.
Front Controller Pattern이란?
중복되는 공통 로직을 처리하기 위해 문지기 역할을 수행하는 컨트롤러를 앞에두고 나머지 컨트롤러는 뒤에 배치치키는 패턴

장점
DispacherServlet이 등장함에 따라 web.xml의 역할을 상당히 축소시켰다. 과거에는 모든 서블릿을 URL 매핑을 위해 web.xml에 등록해주어야 했지만, DispacherServlet이 모든 요청을 핸들링해주고 공통 작업을 처리하게 되었다. 즉 매핑 작업을 수동으로 안해도 되게 되었다.
동작 과정
과연 어떻게 URL에 따른 컨틀로러를 찾아서 일을 시키는건가?

- 클라이언트의 요청을 디스패처 서블릿이 받음
- 요청 정보를 통해 요청을 위임할 컨트롤러를 찾음
- 요청을 컨트롤러로 위임할 핸들러 어댑터를 찾아서 전달함
- 핸들러 어댑터가 컨트롤러로 요청을 위임함
- 비지니스 로직을 처리함
- 컨트롤러가 반환값을 반환함
- 핸들러 어댑터가 반환값을 처리함
- 서버의 응답을 클라이언트로 반환함
Reference
https://docs.spring.io/spring-framework/reference/web/webmvc.html
Spring Web MVC :: Spring Framework
Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, "Spring Web MVC," comes from the name of its source module (spring-webmvc), but it is more commonl
docs.spring.io
https://mangkyu.tistory.com/18
[Spring] Dispatcher-Servlet(디스패처 서블릿)이란? 디스패처 서블릿의 개념과 동작 과정
이번에는 servlet의 심화 또는 대표주자인 dispatcher-servlet에 대해서 알아보도록 하겠습니다. 1. Dispatcher-Servlet(디스패처 서블릿)의 개념 [ Dispatcher-Servlet(디스패처 서블릿) 이란? ] 디스패처 서블릿의
mangkyu.tistory.com
'IT 정보 > 스프링 부트' 카테고리의 다른 글
| @RequestBody란? (1) | 2025.12.30 |
|---|---|
| JSON parse error: Cannot deserialize value of type (0) | 2025.12.30 |
| [Spring] SOLID 원칙을 지켜보자 (1) | 2024.03.26 |
| [Spring] h2적용 후 postman으로 테스트하기 (0) | 2024.02.22 |
| 스프링 : 빈 등록하기 (0) | 2023.12.14 |