17-V8. DispatcherServlet → Browser: HTTP Response (HTML)
뷰 렌더링이 끝나면, 응답 버퍼에 기록된 HTML은 서블릿 컨테이너를 통해 브라우저로 전달됩니다.
Spring MVC 소스 기준으로는 DispatcherServlet.render(...)가 끝나고, ThymeleafView 쪽에서는 이미 writer flush가 완료된 상태입니다.
이번 단계의 역할 — HTML 응답이 완성되어 브라우저로 전달되는 최종 단계
HTML 응답이 완성되어 브라우저로 전달되는 최종 단계입니다.
호출 흐름 요약 — render() 종료 → 뷰 렌더링 단계 마무리 → 컨테이너가 버퍼를 전송
view.render(...)가 종료됩니다.- DispatcherServlet의 뷰 렌더링 단계가 마무리됩니다.
- 컨테이너가 응답 버퍼의 HTML을 네트워크로 전송합니다.
- 브라우저가 최종 HTML을 받습니다.
호출 흐름 다이어그램 — DispatcherServlet이 준비를 마치고 Servlet Container가 HTML을 내보낸다
sequenceDiagram
participant DS as DispatcherServlet
participant Container as Servlet Container
participant Browser
DS-->>Container: rendered response ready
Container-->>Browser: HTTP Response (HTML)
핵심 코드 — render() 호출과 ThymeleafView의 write()·flush()가 마지막 두 줄이다
// DispatcherServlet.java
if (mv != null && !mv.wasCleared()) {
render(mv, request, response);
}
// ThymeleafView.java
response.getWriter().write(templateWriter.toString());
response.getWriter().flush();
코드 해설 — Spring MVC는 더 이상 HTML을 만지지 않고 컨테이너가 전달한다
Spring MVC는 여기서 더 이상 HTML 내용을 만지지 않습니다. 응답 writer에 기록된 데이터는 이제 서블릿 컨테이너가 HTTP 응답으로 브라우저에 전달합니다.
설계 의도 — 프레임워크·뷰 엔진·서블릿 컨테이너의 책임이 단계별로 끊겨 있다
프레임워크, 뷰 엔진, 서블릿 컨테이너의 책임이 단계별로 분리되어 있기 때문에 가능한 마무리 단계입니다.
다음 단계 연결 — 17-R1부터는 HTML 뷰가 아닌 REST/JSON 응답 경로로 이어진다
다음 문서 17-R1부터는 HTML 뷰가 아닌 REST/JSON 응답 경로를 이어서 봅니다.
← 이전: 17-V7. ThymeleafView → DispatcherServlet: HTML 반환 | 다음: 17-R1. Controller → DispatcherServlet: Object / ResponseEntity 반환