4. 뷰 리졸버를 통한 화면 렌더링 및 응답
상위 맥락
03. Request Response Cycle < 02. MVC 아키텍처와 요청 흐름 < 01. Spring MVC1 기초와 아키텍처 < MVC < Spring < Web
핵심 정리
컨트롤러가 논리적 View 이름을 반환하면 DispatcherServlet은 ViewResolver를 통해 실제 화면 리소스를 찾고, Model 데이터를 이용해 렌더링한 결과를 클라이언트에게 응답합니다. 이것이 전통적인 Spring MVC 화면 응답의 마지막 단계입니다.
처리 흐름
- 컨트롤러가
return "index";처럼 논리적 View 이름을 반환합니다. - DispatcherServlet이 ViewResolver에게 실제 View를 요청합니다.
- ViewResolver가 prefix와 suffix를 이용해 물리적 경로를 조립합니다.
- DispatcherServlet이 View에 Model 데이터를 전달합니다.
- View가 HTML 등을 렌더링합니다.
- 렌더링 결과가 HTTP Response로 클라이언트에게 반환됩니다.
설계적 의미
컨트롤러는 View의 실제 파일 경로나 기술을 몰라도 됩니다. ViewResolver가 논리적 이름과 물리적 리소스 사이를 연결하기 때문입니다. 이 구조는 컨트롤러와 뷰 기술의 결합도를 낮춥니다.
다양한 응답 흐름과의 관계
화면 렌더링은 기본 흐름이지만, 모든 응답이 이 방식을 따르지는 않습니다.
redirect:접두어를 반환하면 클라이언트에게 새 요청을 유도합니다.- @ResponseBody가 붙으면 ViewResolver를 우회하고 JSON 데이터를 직접 응답합니다.
따라서 컨트롤러의 반환값은 단순한 문자열처럼 보여도, 실제로는 응답 흐름을 결정하는 중요한 신호입니다.
한 문장 요약
ViewResolver는 논리적 View 이름을 실제 화면 리소스로 바꾸고, Model 데이터를 이용해 최종 화면을 렌더링하여 응답을 완성합니다.
핵심 연결
DispatcherServlet, ViewResolver, @ResponseBody와 함께 읽으면 좋습니다.