Deep Dive /Java Web /17-R6

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

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


이번 단계의 역할

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


호출 흐름 요약

  1. 메시지 컨버터가 JSON을 응답 스트림에 기록합니다.
  2. DispatcherServlet은 뷰 렌더링 없이 요청을 종료합니다.
  3. 컨테이너가 응답을 네트워크로 전송합니다.
  4. 브라우저 또는 API 클라이언트가 JSON 응답을 받습니다.

호출 흐름 다이어그램

sequenceDiagram participant DS as DispatcherServlet participant Container as Servlet Container participant Browser DS-->>Container: response body ready Container-->>Browser: HTTP Response (JSON)

핵심 코드

// AbstractJackson2HttpMessageConverter.java
objectWriter.writeValue(generator, value);
generator.flush();
// RequestResponseBodyMethodProcessor.java
mavContainer.setRequestHandled(true);

코드 해설

Spring MVC 관점에서는 이미 응답이 완성된 상태이고, 남은 일은 컨테이너가 그 바이트를 전송하는 것뿐입니다.


설계 의도

프레임워크는 응답 생성에 집중하고, 실제 전송은 서블릿 컨테이너가 맡는 표준 역할 분리를 따르는 구조입니다.


다음 단계 연결

이 문서는 Java Web 전체 요청-응답 흐름의 마지막 단계입니다.

← 이전: 17-R5. HttpMessageConverter → DispatcherServlet | 목록으로 돌아가기