[Spring] Spring MVC란? - DispatcherServlet과 전체 동작 흐름
by 우와한개발자
[ Spring MVC ]
1. Spring MVC란
- Servlet API를 기반으로 구축된 웹 프레임워크
- 정식 명칭은 Spring Web MVC이지만 주로 Spring MVC로 불림
- Spring Framework이 제공하는 DI, AOP 뿐 아니라 웹 개발을 위한 기능을 제공
- DispatcherServlet(Front Controller)을 중심으로 설계되어 ViewResolver, HandlerMapping, Controller와 함께 요청을 처리
| 주요 기능 | 설명 |
| 요청 처리 | 클라이언트 요청을 적절한 컨트롤러로 매핑 |
| View 선택 및 렌더링 | 응답 화면 View를 선택하고 결과를 전달 |
| 데이터 바인딩 | 요청 파라미터를 자바 객체로 자동 변환 |
| 예외 처리 | 공통 예외를 한 곳에서 처리 |
| 유효성 검사 | 입력값 검증 기능 제공 |
[ Spring MVC 동작 흐름 ]

- Client → Dispatcher Servlet : 클라이언트가 HTTP 요청(request)을 보내면 가장 먼저 Dispatcher Servlet이 받음
- Dispatcher Servlet → Handler Mapping : Dispatcher Servlet은 어떤 핸들러(컨트롤러)가 이 요청을 처리해야 하는지 알기 위해 Handler Mapping에 핸들러 조회를 요청.
- Handler Mapping → Dispatcher Servlet : Handler Mapping은 요청 URL에 맞는 핸들러를 찾아 Dispatcher Servlet에게 반환.
- Dispatcher Servlet → Handler Adapter : Dispatcher Servlet은 찾아낸 핸들러를 실행할 수 있도록 Handler Adapter에게 핸들러 실행을 요청
- Handler Adapter → Controller : Handler Adapter는 실제 비즈니스 로직이 담긴 Controller(핸들러)를 호출.
- Controller → Handler Adapter : Controller는 로직을 처리한 뒤 결과 데이터를 ModelAndView 또는 데이터 형태로 Handler Adapter에 반환.
- Handler Adapter → Dispatcher Servlet : Handler Adapter는 Controller로부터 받은 ModelAndView 또는 데이터를 Dispatcher Servlet에게 전달.
- Dispatcher Servlet → View Resolver : Dispatcher Servlet은 반환된 view name을 가지고 View Resolver에게 어떤 View를 사용할지 조회.
- View Resolver → Dispatcher Servlet : View Resolver는 view name에 해당하는 실제 View 객체를 찾아 Dispatcher Servlet에 반환.
- Dispatcher Servlet → View : Dispatcher Servlet은 Model 데이터를 View에 전달하여 렌더링을 요청.
- View → Dispatcher Servlet : View는 Model 데이터를 기반으로 HTML, JSON 등의 최종 결과물을 생성하여 반환.
- Dispatcher Servlet → Client : Dispatcher Servlet은 최종 응답(response)을 클라이언트에게 전송.
[ Spring MVC 구성요소 ]
1. DispatcherServlet
- 모든 웹 요청을 받아 컨트롤러에 전달하고 처리된 결과를 View로 전달
- Front Controller 역할 : 모든 요청을 하나의 중앙 컨트롤러가 먼저 받아서 처리
2. HandlerMapping
- 요청 URL에 따라 어떤 컨트롤러를 호출할지 결정
- "이 URL은 이 컨트롤러로 가면 돼" 라고 DispatcherServlet에 알려줌
- Spring에 기본으로 내장되어 있어 servlet-context.xml에 별도 설정 불필요
3. HandlerAdaptor
- HandlerMapping이 찾아준 컨트롤러를 실제로 실행하는 역할
- DispatcherServlet은 컨트롤러를 직접 호출하지 않고 HandlerAdapter에 위임
DispatcherServlet
├── @Controller 방식 → RequestMappingHandlerAdapter 가 실행
├── HttpRequestHandler → HttpRequestHandlerAdapter 가 실행
└── 구버전 Controller → SimpleControllerHandlerAdapter 가 실행
'프레임워크 > Spring' 카테고리의 다른 글
블로그의 정보
우와한개발자 님의 블로그
우와한개발자