Dispatcher Servlet은 무엇이며 어떻게 동작하고, 어떤역할을 할까?

2025. 6. 29. 17:31·Spring

Spring MVC의 핵심, DispatcherServlet이란?

Spring MVC에서 웹 요청이 들어왔을 때 가장 먼저 마주치는 존재가 있습니다. 바로 DispatcherServlet입니다. 이 글에서는 DispatcherServlet이 무엇인지, 어떻게 동작하는지, 어떤 역할을 하는지 차근차근 설명해보겠습니다.


✅ DispatcherServlet이란?

DispatcherServlet은 Spring MVC의 Front Controller 역할을 하는 서블릿입니다.

  • DispatcherServlet은 Spring Boot의 Spring MVC에서 자동으로 등록되는 서블릿입니다.
    웹 요청이 들어왔을 때 가장 먼저 요청을 받아, 어떤 컨트롤러로 넘길지 판단하고, 결과를 가공해 응답을 보내는 역할을 합니다.
  • 즉, Spring Boot 백엔드에서 API 요청을 처리하는 중심 허브입니다.
사용자 → React → Axios/Fetch 요청
             ↓
        [Spring Boot 서버]
             ↓
     DispatcherServlet
             ↓
     컨트롤러(@RestController)
             ↓
        서비스 / DB 처리
             ↓
           JSON 응답
             ↓
        React 화면에 렌더링

✅ 실제 API 요청 예시

React에서 사용자 목록을 가져오는 API를 호출한다고 가정해보겠습니다.

useEffect(() => {
  axios.get("http://localhost:8080/api/users")
    .then(res => setUsers(res.data))
    .catch(err => console.error(err));
}, []);
@RestController
@RequestMapping("/api")
public class UserController {

    @GetMapping("/users")
    public List<UserDto> getUsers() {
        return userService.findAll();
    }
}

👉 이 요청의 백엔드 처리 흐름

  1. React가 GET /api/users 요청을 보냄
  2. DispatcherServlet이 이 요청을 받음
  3. HandlerMapping이 UserController의 getUsers() 메서드를 찾아줌
  4. 해당 메서드 실행 → 서비스/DB에서 사용자 목록을 가져옴
  5. 결과(List<UserDto>)를 JSON으로 변환하여 클라이언트에 응답
요청 수신 React가 보내는 모든 HTTP 요청을 받는다
매핑 처리 어떤 Controller 메서드가 요청을 처리할지 판단
로직 연결 해당 Controller 메서드를 실행
응답 변환 반환값을 JSON 등으로 변환하여 프론트에 전달

 

🔍 DispatcherServlet을 왜 써야 할까?

Spring은 왜 DispatcherServlet이라는 중간 관리를 두었을까?

✅ 1. Front Controller 패턴 구현

  • 웹 애플리케이션의 모든 요청을 하나의 진입점에서 받아 처리함으로써,
    공통 기능(인증, 로깅, 예외처리 등)을 중앙 집중화할 수 있습니다.
  • 개발자 입장에서 Controller 로직에만 집중할 수 있게 도와줍니다.

✅ 2. 유연한 구조 지원

  • 다양한 요청을 URL, 메서드(GET, POST 등), 파라미터 등으로 매핑 가능.
  • 다양한 View 처리도 가능 (JSP, Thymeleaf, JSON, XML 등)

👉 DispatcherServlet의 역할은?

  • /api/users 요청을 받자마자 DispatcherServlet이 처리
  • 적절한 컨트롤러 연결 → 서비스 → JSON 응답

'Spring' 카테고리의 다른 글

[Spring] RESTFULL API 에 대한 생각 정리  (1) 2025.07.16
Spring Bean이란 무엇이며, 어떻게 정의할까?  (0) 2025.06.15
MyBatis 란 무엇일까?  (1) 2025.06.13
Spring 과 SpringBoot의 차이  (1) 2025.06.11
@Component, @Service, @Repository, @Controller 어노테이션의 차이점  (1) 2025.06.09
'Spring' 카테고리의 다른 글
  • [Spring] RESTFULL API 에 대한 생각 정리
  • Spring Bean이란 무엇이며, 어떻게 정의할까?
  • MyBatis 란 무엇일까?
  • Spring 과 SpringBoot의 차이
동준1234
동준1234
공부 기록
  • 동준1234
    dongjundev
    동준1234
  • 전체
    오늘
    어제
  • GitHub
    • 분류 전체보기 (150)
      • 일상 (1)
      • 복습 및 회고록 (26)
      • Spring (17)
      • JAVA (32)
      • kubernetes (1)
      • Front-End (13)
      • Server (11)
      • SQL (20)
        • JDBC (1)
      • 자격증 (7)
        • 정보처리기사 필기 준비 (6)
        • 정보처리기사 실기 준비 (0)
        • SQLD (1)
      • project (18)
        • 백준 및 코딩테스트 공부 (6)
        • 대학교 캡스톤 디자인 (6)
        • 4학년 캡스톤 디자인 및 전시회 (3)
      • 네트워크 (3)
      • AI 머신러닝 (1)
  • 블로그 메뉴

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

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    프론트
    jQuery
    react
    JavaScript
    개발자
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
동준1234
Dispatcher Servlet은 무엇이며 어떻게 동작하고, 어떤역할을 할까?
상단으로

티스토리툴바