웹 요청이 어떻게 돌아다니는지 진짜 한 번에 이해하는 포스팅
자바 웹 개발하다 보면 무조건 만나게 되는 놈이 하나 있습니다
바로 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 사이를 조율하는 브레인 역할