View 반환: 논리적 뷰 경로 문자열 리턴 (Forward)

상위 맥락

03. 응답 메커니즘 < 03. Controller 요청 처리 < 01. Spring MVC1 기초와 아키텍처 < MVC < Spring < Web

핵심 정리

컨트롤러가 return "index";처럼 문자열을 반환하면, 기본적으로 논리적 View 이름을 반환한 것으로 해석됩니다. DispatcherServlet은 이 문자열을 ViewResolver에 전달하고, 서버 내부에서 해당 View로 forward하여 화면을 렌더링합니다.

Forward의 동작

Forward는 클라이언트에게 새 요청을 보내라고 하지 않습니다. 서버 내부에서 요청 흐름이 View로 이동하고, 같은 Request Scope 안에서 화면이 렌더링됩니다.

이 때문에 컨트롤러가 Model에 저장한 데이터가 View까지 유지됩니다.

model.addAttribute("msg", echoData);
return "index";

이 경우 index는 ViewResolver를 통해 실제 경로로 변환되고, View는 Model 데이터를 이용해 화면을 만듭니다.

논리적 이름을 사용하는 이유

컨트롤러가 /WEB-INF/views/index.jsp 같은 물리적 경로를 직접 반환하면 뷰 기술과 폴더 구조에 강하게 결합됩니다. 반면 index 같은 논리적 이름만 반환하면 실제 경로 조립은 ViewResolver가 담당합니다.

Redirect와의 차이

Forward는 서버 내부 이동이고, Redirect는 클라이언트에게 새 요청을 보내게 하는 방식입니다. Forward에서는 Request Scope가 유지되지만, Redirect에서는 기존 요청이 끝나므로 Request Scope 데이터가 그대로 유지되지 않습니다.

Redirect는 02. Redirect redirect 접두어를 이용한 클라이언트 재요청에서 별도로 정리합니다.

주의할 점

POST로 데이터를 저장한 뒤 단순 Forward를 반환하면 새로고침 시 같은 POST가 다시 전송될 수 있습니다. 상태 변경 작업 이후에는 Redirect를 사용하는 흐름이 안전합니다.

한 문장 요약

논리적 View 이름 반환은 서버 내부 Forward를 통해 화면을 렌더링하는 기본 응답 방식이며, Model 데이터가 같은 요청 범위 안에서 View로 전달됩니다.

핵심 연결

DispatcherServlet, ViewResolver와 함께 읽으면 좋습니다.