[Spring MVC] DispatcherServlet(디스패처 서블릿)이란 무엇인가?
Spring MVC 프레임워크를 공부하다 보면 가장 먼저 마주치는 개념이 바로 DispatcherServlet(디스패처 서블릿)입니다. 간단히 말해, 모든 HTTP 요청을 가장 먼저 받아 적절한 컨트롤러로 배달해주는 '중앙 창구' 역할을 합니다.
1. 디스패처 서블릿의 정의
Dispatcher는 "보내다(파견하다)"라는 뜻을 가지고 있습니다. Servlet 컨테이너의 가장 앞단에서 요청을 받아 관리하는 패턴을 Front Controller 패턴이라고 부르는데, 스프링에서는 이를 DispatcherServlet이 담당합니다.
핵심 특징: 과거에는 모든 서블릿에 대해 web.xml에 등록해야 했지만, 이제는 디스패처 서블릿 하나가 모든 요청을 받아 공통 처리를 수행한 뒤 세부 컨트롤러로 분배합니다.
2. 동작 원리 (Step-by-Step)
클라이언트의 요청이 들어오면 디스패처 서블릿은 다음과 같은 과정을 거칩니다.
- 클라이언트 요청: 사용자가 URL을 통해 요청을 보냅니다.
- Handler Mapping: 디스패처 서블릿은 이 요청을 누가 처리할지 '핸들러 매핑'에 물어봅니다.
- Handler Adapter: 찾은 컨트롤러를 실행할 수 있는 '어댑터'를 가져와 실행합니다.
- Controller 실행: 실제 비즈니스 로직을 처리하고 결과(ModelAndView)를 반환합니다.
- View Resolver: 컨트롤러가 준 이름을 보고 어떤 화면(JSP/Thymeleaf 등)을 보여줄지 결정합니다.
- 응답 반환: 최종적으로 완성된 화면을 사용자에게 전달합니다.
3. 왜 사용하는가? (장점)
- 관심사 분리: 각 컨트롤러는 비즈니스 로직에만 집중하고, 공통 처리(인코딩, 예외 처리)는 디스패처 서블릿이 담당합니다.
- 유연성: 핸들러 매핑이나 뷰 리졸버를 자유롭게 교체할 수 있어 확장이 용이합니다.
- 중복 코드 감소: 모든 서블릿마다 중복되던 설정 코드를 한 곳에서 관리할 수 있습니다.
'Tech Stack > Spring Boot' 카테고리의 다른 글
| [Spring] JWT 05. RefreshToken DB 저장 + 1회성 폐기(로테이션) + 재발급 흐름 완성 (0) | 2026.02.19 |
|---|---|
| [Spring] JWT 04. 만료 임박 자동 갱신(TokenRenewalInterceptor) 적용 (0) | 2026.02.19 |
| [Spring] JWT 03. Interceptor로 인증 적용하기 (로그인 필요 API 보호) (0) | 2026.02.19 |
| [Spring] JWT 02. AccessToken / RefreshToken 구조 + 재발급 흐름 (0) | 2026.02.18 |
| [Spring] JWT 01. Json Web Token 개념정리 (0) | 2026.02.18 |