본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

스프링 MVC(Spring Web MVC)는 스프링 프레임워크가 서블릿 API 위에 제공하는 웹 프레임워크로, DispatcherServlet 이라는 하나의 프런트 컨트롤러가 모든 요청을 받아 HandlerMapping·HandlerAdapter·ViewResolver 같은 위임 객체에 처리를 나눠 맡기는 구조이다.

스프링 MVC 는 MVC 패턴을 웹 요청 처리에 적용한 것이다. 스프링 공식 문서는 이 프레임워크가 프론트 컨트롤러 패턴을 중심으로 설계되었다고 설명한다. 중앙의 서블릿인 DispatcherServlet 이 요청 처리의 공통 흐름을 정해 두고, 실제 일은 설정으로 바꿔 끼울 수 있는 위임 컴포넌트들이 한다.[1] 개발자는 주로 @Controller 클래스(핸들러)와 뷰 템플릿만 작성하고, 요청 분배·매개변수 변환·뷰 선택은 프레임워크가 맡는다.[2]

구성 요소 역할
DispatcherServlet 모든 요청을 처음 받는 프런트 컨트롤러. 아래 컴포넌트들을 차례로 불러 요청을 처리한다
HandlerMapping 요청 URL·메서드 등을 보고 어느 핸들러(컨트롤러 메서드)가 처리할지 찾는다. @RequestMapping 을 처리하는 RequestMappingHandlerMapping 이 대표적이다
HandlerAdapter 찾은 핸들러를 실제로 호출한다. 애너테이션 해석 같은 호출 방식의 차이를 DispatcherServlet 에서 감춘다
Controller(핸들러) 업무 로직을 호출하고 결과 데이터(모델)와 뷰 이름을 돌려준다
ModelAndView 컨트롤러가 돌려주는 모델 데이터와 논리적 뷰 이름의 묶음
ViewResolver 논리적 뷰 이름(예: "home")을 실제 View 객체(JSP, 타임리프 템플릿 등)로 바꾼다
View 모델 데이터를 받아 응답 화면을 만든다

각 컴포넌트의 역할은 스프링 문서의 '특수 빈 타입' 목록에 정의되어 있다.[3]

요청 처리 흐름

편집 원본 편집
  1. 클라이언트 요청이 DispatcherServlet 에 도착한다
  2. DispatcherServlet 이 HandlerMapping 에 물어 요청을 처리할 핸들러를 찾는다
  3. HandlerAdapter 를 통해 해당 Controller 를 호출한다
  4. Controller 가 처리 결과를 ModelAndView(모델 + 뷰 이름)로 DispatcherServlet 에 돌려준다
  5. DispatcherServlet 이 ViewResolver 에 뷰 이름을 넘겨 실제 View 를 얻는다
  6. View 가 모델 데이터로 응답을 렌더링하고, 응답이 클라이언트로 간다

모델이 반환되지 않으면(예: 인터셉터가 요청을 가로채 이미 응답한 경우) 뷰를 렌더링하지 않는다. 처리 중 예외는 HandlerExceptionResolver 가 맡는다.[4]

헷갈리는 구성 요소 구별하기

편집 원본 편집
  • HandlerMapping 은 요청이 들어온 직후 '누가 처리할지'를 정하고, ViewResolver 는 컨트롤러가 끝난 뒤 '어떤 화면으로 보여 줄지'를 정한다. 둘 다 DispatcherServlet 이 부르는 쪽이다
  • ModelAndView 는 처리 주체가 아니라 컨트롤러가 돌려주는 결과 객체다
  • DispatcherServlet 은 요청이 가장 먼저 들어오는 곳이다. 뷰 이름을 해석하는 일은 하지 않는다
  1. ↑ 「DispatcherServlet」, Spring Framework Reference Documentation - Web on Servlet Stack, https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-servlet.html, 확인일: 2026-11-04.
  2. ↑ Craig Walls, 『Spring in Action』 6판, Manning, 2022, 2장 Developing web applications.
  3. ↑ 「Special Bean Types」, Spring Framework Reference Documentation, https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-servlet/special-bean-types.html, 확인일: 2026-11-04.
  4. ↑ 「Processing」, Spring Framework Reference Documentation, https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-servlet/sequence.html, 확인일: 2026-11-04.