Spring에서는 Servlet과 DispatcherServlet이 웹 요청 처리에서 핵심적인 역할을 해요.
개념을 하나씩 명확히 정리해볼게요.
🧱 1. Servlet이란?
✅ 정의
- 자바 웹에서 가장 기본적인 컴포넌트
- HTTP 요청을 처리하고, HTTP 응답을 반환하는 자바 클래스
- 톰캣(Tomcat) 같은 서블릿 컨테이너에서 실행됨
✅ 역할
- 웹 브라우저에서 온 요청을 받아서 처리하고, 응답을 생성함
- 예전에는 모든 요청을 직접 Servlet에서 처리했어요.
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
response.getWriter().write("Hello from Servlet!");
}
}
이건 거의 Spring 이전의 전통적인 웹 방식이에요.
🚦 2. DispatcherServlet이란?
✅ 정의
- Spring MVC에서 사용하는 중앙 컨트롤러
- 모든 HTTP 요청의 진입점 (Front Controller 패턴)
- 서블릿이지만, Spring이 만든 특수한 서블릿
✅ 역할
- 클라이언트의 요청을 받아서 → 적절한 컨트롤러로 라우팅
- 컨트롤러가 처리한 결과를 → 뷰로 전달해서 응답
- 중간에 인터셉터, ExceptionResolver, ViewResolver 등을 연결함
✅ 동작 흐름
Client → DispatcherServlet → HandlerMapping → Controller
→ (ModelAndView) → ViewResolver → View → Response
✅ 서블릿과의 관계
DispatcherServlet은HttpServlet을 상속한 진짜 서블릿이에요- Spring Boot가 자동으로
/경로에 등록해서 모든 요청을 처리하게 함
🔍 간단 비교
| 항목 | Servlet | DispatcherServlet |
|---|---|---|
| 종류 | 자바 EE 기본 기능 | Spring MVC의 중앙 컨트롤러 |
| 위치 | 톰캣 등에서 직접 사용 | Spring이 등록한 Servlet |
| 목적 | 직접 요청-응답 처리 | 요청을 적절한 컨트롤러로 위임 |
| 사용 방식 | 수동으로 코딩 | Spring Boot가 자동 등록 |
| 대표 클래스 | HttpServlet |
org.springframework.web.servlet.DispatcherServlet |
📌 요약
Servlet: 웹 요청을 처리하는 가장 기본적인 자바 웹 기술DispatcherServlet: Spring MVC에서 요청을 중앙 집중적으로 처리하는 서블릿
즉, DispatcherServlet은 Spring의 뇌와 같은 존재예요 🧠
Filter가 호출한 요청은 결국 DispatcherServlet을 통해 컨트롤러로 전달돼요.