스프링 디스패처 서블릿(Dispatcher-Servlet) 완전 정복

반응형

웹 요청이 어떻게 돌아다니는지 진짜 한 번에 이해하는 포스팅

dispatcherServlet

자바 웹 개발하다 보면 무조건 만나게 되는 놈이 하나 있습니다
바로 DispatcherServlet, 스프링의 심장!
근데 이게 뭔가 복잡해보이고
이름부터 너무 길고 무서워 보이는데요 ㅋㅋ

사실 알고 보면
"HTTP 요청이 들어왔을 때 어디로 보내줄지 정리해주는 배달부" 같은 애입니다
스프링 MVC의 진짜 핵심이자
요청 흐름의 모든 출입문이 DispatcherServlet이에요

지금부터 그림+흐름+개념
딱 세 가지로 확실하게 정리해드릴게요


🟠 DispatcherServlet이 뭐냐면요?

✔ 서블릿 기반의 프론트 컨트롤러(Front Controller)
✔ 클라이언트 요청을 받아서
✔ 적절한 컨트롤러로 요청을 전달하고
✔ 응답을 View까지 연결해서 다시 브라우저로 보내줌

👉 쉽게 말하면
“스프링의 모든 웹 요청은 일단 얘를 거친다”


🟢 흐름으로 보면 이런 구조입니다

1️⃣ 클라이언트가 HTTP 요청을 보냄
2️⃣ DispatcherServlet이 그 요청을 받음
3️⃣ HandlerMapping이 “어느 컨트롤러로 보낼지” 알려줌
4️⃣ 해당 컨트롤러가 로직 처리
5️⃣ ViewResolver가 보여줄 화면 선택
6️⃣ DispatcherServlet이 다시 응답을 조립해서 클라이언트에게 전송


🔵 실제 구성 요소로 뜯어보자

컴포넌트 역할 설명
DispatcherServlet 요청 받고, 조율하고, 응답까지 최종 전달
HandlerMapping 어떤 요청이 어떤 컨트롤러로 가야 할지 결정
Controller 실제 비즈니스 로직 처리하는 클래스들
ModelAndView 로직 결과 + 화면 정보 묶어주는 객체
ViewResolver 어떤 화면(View)을 보여줄지 결정
JSP/HTML 실제로 브라우저에 보이는 최종 화면

📌 왜 중요하냐면

✔ 스프링 MVC에서 모든 웹 요청이 거쳐감
✔ Controller로 안 들어갈 땐 대부분 이 부분에서 문제 생김
✔ 커스터마이징하거나 필터 걸기에도 이 구조를 알아야 함

👉 DispatcherServlet 모르면
요청 흐름 디버깅할 때 진짜 답답합니다


정리하면?

✔ DispatcherServlet = 스프링 웹 요청의 입구이자 총괄 매니저
✔ 모든 요청을 대신 받아서 적절한 담당자에게 연결시켜줌
✔ MVC 패턴에서 M과 V 사이를 조율하는 브레인 역할

 

 

반응형