17-R6. DispatcherServlet → Browser: HTTP Response (JSON)
JSON 직렬화와 응답 본문 작성이 끝나면, 서블릿 컨테이너가 그 바이트를 HTTP 응답으로 브라우저에 전달합니다.
이번 단계의 역할 — REST 응답이 클라이언트에 전달되는 마지막 단계
REST 응답이 최종적으로 클라이언트에 전달되는 마지막 단계입니다.
호출 흐름 요약 — JSON 기록 → 뷰 렌더링 없이 요청 종료 → 컨테이너가 전송
- 메시지 컨버터가 JSON을 응답 스트림에 기록합니다.
- DispatcherServlet은 뷰 렌더링 없이 요청을 종료합니다.
- 컨테이너가 응답을 네트워크로 전송합니다.
- 브라우저 또는 API 클라이언트가 JSON 응답을 받습니다.
호출 흐름 다이어그램 — DispatcherServlet이 준비를 마치고 Servlet Container가 JSON을 내보낸다
sequenceDiagram
participant DS as DispatcherServlet
participant Container as Servlet Container
participant Browser
DS-->>Container: response body ready
Container-->>Browser: HTTP Response (JSON)
핵심 코드 — generator.flush() 이후 남는 건 setRequestHandled(true) 표시뿐이다
// AbstractJackson2HttpMessageConverter.java
objectWriter.writeValue(generator, value);
generator.flush();
// RequestResponseBodyMethodProcessor.java
mavContainer.setRequestHandled(true);
코드 해설 — MVC는 이미 끝났고 남은 일은 컨테이너가 바이트를 전송하는 것뿐이다
Spring MVC 관점에서는 이미 응답이 완성된 상태이고, 남은 일은 컨테이너가 그 바이트를 전송하는 것뿐입니다.
설계 의도 — 프레임워크는 응답 생성까지, 전송은 서블릿 컨테이너가 맡는다
프레임워크는 응답 생성에 집중하고, 실제 전송은 서블릿 컨테이너가 맡는 표준 역할 분리를 따르는 구조입니다.
다음 단계 연결 — Java Web 요청-응답 흐름의 마지막 단계다
이 문서는 Java Web 전체 요청-응답 흐름의 마지막 단계입니다.
← 이전: 17-R5. HttpMessageConverter → DispatcherServlet | 목록으로 돌아가기