Deep Dive /Java Web /17-R6

17-R6. DispatcherServlet → Browser: HTTP Response (JSON)

JSON 직렬화와 응답 본문 작성이 끝나면, 서블릿 컨테이너가 그 바이트를 HTTP 응답으로 브라우저에 전달합니다.


이번 단계의 역할 — REST 응답이 클라이언트에 전달되는 마지막 단계

REST 응답이 최종적으로 클라이언트에 전달되는 마지막 단계입니다.


호출 흐름 요약 — JSON 기록 → 뷰 렌더링 없이 요청 종료 → 컨테이너가 전송

  1. 메시지 컨버터가 JSON을 응답 스트림에 기록합니다.
  2. DispatcherServlet은 뷰 렌더링 없이 요청을 종료합니다.
  3. 컨테이너가 응답을 네트워크로 전송합니다.
  4. 브라우저 또는 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 | 목록으로 돌아가기