Dispatcher Servlet은 무엇일까?

2025. 7. 2. 02:00·탐구하기

Spring MVC의 핵심 중 하나인 DispatcherServlet은 웹 애플리케이션의 "중앙 제어자(Front Controller)" 역할을 합니다.
쉽게 말해, 모든 HTTP 요청을 받아서 어디로 보낼지 결정하고, 응답까지 책임지는 핵심 컴포넌트입니다.


✅ DispatcherServlet이란?

  • Spring MVC의 핵심 컴포넌트
  • 웹 애플리케이션의 Front Controller 패턴 구현체
  • 모든 클라이언트 요청을 받아서 Controller, View, HandlerInterceptor 등으로 분배

📌 “Dispatcher” = 요청을 적절한 위치로 분배(dispatch) 하는 역할


✅ 동작 흐름 요약 (요청 → 응답)

1. 클라이언트 요청 (예: GET /users/1)
       ↓
2. DispatcherServlet이 요청 받음
       ↓
3. HandlerMapping → 어떤 Controller가 처리할지 찾음
       ↓
4. 해당 Controller 메서드 호출
       ↓
5. Controller가 결과(데이터 or 뷰 이름) 반환
       ↓
6. ViewResolver → View 결정 (JSP, Thymeleaf, JSON 등)
       ↓
7. 최종 View 렌더링 or JSON 응답
       ↓
8. 클라이언트에 응답 반환

✅ DispatcherServlet의 역할

역할 설명

🔁 요청 수신 모든 요청을 가로채고 처리 시작 (web.xml, Spring Boot는 자동 등록)
🔍 핸들러 탐색 HandlerMapping을 통해 요청에 맞는 Controller 찾기
⚙️ 요청 처리 HandlerAdapter를 통해 Controller 메서드 실행
🔁 인터셉터 작동 preHandle, postHandle, afterCompletion 호출
🔍 뷰 처리 ViewResolver를 통해 어떤 화면(View)을 보여줄지 결정
📨 응답 전송 최종 결과를 HTTP 응답으로 클라이언트에 전달

✅ DispatcherServlet 흐름 그림

[Client] ──> [DispatcherServlet]
                   │
                   ▼
         [HandlerMapping] (어떤 컨트롤러?)
                   │
                   ▼
         [HandlerAdapter] (호출 방법 결정)
                   │
                   ▼
           [Controller] (비즈니스 로직)
                   │
                   ▼
           [ModelAndView] 반환
                   │
                   ▼
         [ViewResolver] (뷰 찾기)
                   │
                   ▼
               [View] (JSP, Thymeleaf 등)
                   │
                   ▼
              [Client 응답 반환]

✅ Spring Boot에서는 DispatcherServlet을 어떻게 등록하나요?

Spring Boot에서는 자동으로 등록됩니다.

@Bean
public DispatcherServlet dispatcherServlet() {
    return new DispatcherServlet();
}

application.properties로 URL 패턴 설정 가능:

spring.mvc.servlet.path=/api

✅ DispatcherServlet이 중요한 이유

이유 설명

모든 요청의 단일 진입점 보안, 로깅, 인증, 예외 처리 등 중앙 집중 관리
다양한 컴포넌트 연결 Controller, Interceptor, View 등과 자동 연동
유연한 아키텍처 구현 가능 REST API, 웹 페이지, 파일 다운로드 등 모두 가능

✅ DispatcherServlet 관련 컴포넌트 요약

컴포넌트 설명

HandlerMapping 어떤 Controller가 요청을 처리할지 결정
HandlerAdapter Controller를 호출할 수 있는 방법 제공
ViewResolver View 이름 → View 객체로 변환
View 최종 응답을 렌더링 (HTML, JSON 등)

✅ 정리

항목 설명

DispatcherServlet 역할 요청을 받아서 Controller로 전달하고, 응답을 조립해서 반환
위치 Spring MVC의 중앙 허브
기술 패턴 Front Controller 패턴
구성 요소 HandlerMapping, HandlerAdapter, ViewResolver 등과 함께 동작

 

'탐구하기' 카테고리의 다른 글

인터셉터(Interceptor)와 필터(Filter)  (1) 2025.07.02
@Controller와 @RestController의 차이점  (0) 2025.07.01
JPA와 MyBatis의 차이점  (0) 2025.07.01
JPA란 무엇일까?  (0) 2025.07.01
MyBatis란 무엇일까?  (0) 2025.06.30
'탐구하기' 카테고리의 다른 글
  • 인터셉터(Interceptor)와 필터(Filter)
  • @Controller와 @RestController의 차이점
  • JPA와 MyBatis의 차이점
  • JPA란 무엇일까?
ayinyun
ayinyun
ayinyun 님의 블로그 입니다.
  • ayinyun
    ayinyun 님의 블로그
    ayinyun
  • 전체
    오늘
    어제
    • 분류 전체보기 (75)
      • SQL 개발 공부 (8)
      • JAVA 개발 공부 (4)
      • JavaScript(JS) (1)
      • React (1)
      • 탐구하기 (38)
      • KPT회고록 (14)
      • SpringBoot (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
ayinyun
Dispatcher Servlet은 무엇일까?
상단으로

티스토리툴바