java | spring boot | DispatcherServlet 정리 (Spring MVC 핵심 개념)

Create by. ChatGPT

Spring MVC에서 DispatcherServlet은 모든 HTTP 요청을 가장 먼저 받아
적절한 컨트롤러와 뷰로 전달해주는 프론트 컨트롤러(Front Controller) 입니다.


한 문장 요약

DispatcherServlet은 Spring 웹 애플리케이션에서 모든 요청의 흐름을 제어하는 중앙 관문이다.


DispatcherServlet이란?

DispatcherServlet은 Spring MVC의 핵심 컴포넌트로,
클라이언트의 HTTP 요청을 직접 처리하지 않고 요청 처리 전체 흐름을 조율합니다.

즉, DispatcherServlet의 역할은 다음과 같습니다.

  • 어떤 컨트롤러가 요청을 처리할지 결정
  • 컨트롤러 실행 결과를 어떤 뷰로 보여줄지 연결
  • 요청 처리 과정 전반을 중앙에서 관리

왜 DispatcherServlet이 필요한가?

DispatcherServlet이 없다면 개발자는 다음 작업을 모두 직접 구현해야 합니다.

  • URL과 컨트롤러 매핑
  • 요청 분기 처리
  • 공통 예외 처리
  • 뷰 선택 로직

DispatcherServlet은 이러한 공통 처리를 한 곳에 모아
개발자가 비즈니스 로직에만 집중할 수 있도록 도와줍니다.


요청 처리 흐름 (Step by Step)

  1. 클라이언트가 요청을 보냄
    GET /hello
  2. DispatcherServlet이 요청을 가장 먼저 받음
  3. HandlerMapping을 통해
    /hello를 처리할 Controller를 찾음
  4. Controller 실행
    • 비즈니스 로직 처리
    • Model과 View 이름 반환
  5. ViewResolver가
    View 이름을 실제 템플릿 파일로 변환
    (예: hellotemplates/hello.html)
  6. 최종 HTML 응답을 클라이언트에 반환

요청 흐름을 단순화하면 다음과 같습니다.

Client

DispatcherServlet

Controller

View (HTML)


DispatcherServlet이 하지 않는 일

DispatcherServlet은 다음 작업을 직접 수행하지 않습니다.

  • 비즈니스 로직 처리
  • 데이터베이스 접근
  • HTML 직접 생성

DispatcherServlet은 오직 요청 흐름 제어에만 집중합니다.


에러 로그에 DispatcherServlet이 자주 등장하는 이유

Spring 웹 애플리케이션에서 자주 보이는 에러 메시지입니다.

Servlet.service() for servlet [dispatcherServlet] threw exception

이 메시지의 의미는 다음과 같습니다.

  • 요청은 DispatcherServlet까지 정상적으로 도달
  • 이후 단계(Controller, View 처리 과정)에서 에러 발생

즉, DispatcherServlet 자체가 문제라기보다는
그 이후 로직에서 문제가 발생했음을 의미합니다.

대표적인 원인

  • URL 매핑 오류 (@GetMapping, @PostMapping 불일치)
  • 존재하지 않는 View 이름 반환
  • Thymeleaf 템플릿 파일 누락
  • Model에 없는 값을 템플릿에서 참조

Spring Boot에서 DispatcherServlet

Spring Boot 환경에서는 DispatcherServlet이 다음과 같이 동작합니다.

  • 자동으로 등록됨
  • 별도 설정이 필요 없음
  • 기본 설정으로 대부분의 웹 요청을 처리 가능

즉, 개발자는 DispatcherServlet을 직접 생성하거나
설정 파일에서 등록할 필요가 없습니다.


DispatcherServlet과 Controller의 관계

구분DispatcherServletController
역할요청 흐름 제어비즈니스 로직 처리
요청 최초 수신OX
응답 생성간접적직접
개발자가 구현XO

핵심 포인트 정리

  • DispatcherServlet은 Spring MVC의 입구
  • 모든 HTTP 요청은 반드시 DispatcherServlet을 거친다
  • 컨트롤러와 뷰를 연결하는 중앙 허브
  • Spring MVC 구조 이해의 출발점

마무리

Spring MVC를 제대로 이해하려면
DispatcherServlet의 역할부터 명확히 이해해야 한다.