17-V7. ThymeleafView → DispatcherServlet: HTML 반환
템플릿 엔진이 writer에 HTML을 쓰면, ThymeleafView의 역할은 끝나고 제어 흐름이 다시 DispatcherServlet 쪽으로 복귀합니다.
이번 단계의 역할
템플릿 처리 결과가 응답 버퍼에 기록되고, 뷰 렌더링 단계가 마무리되는 구간입니다.
호출 흐름 요약
TemplateEngine.process(...)가 HTML을 writer에 씁니다.- 버퍼 모드라면
response.getWriter().write(...)로 한 번에 씁니다. response.getWriter().flush()가 호출됩니다.view.render(...)가 종료되면서 DispatcherServlet로 제어가 돌아갑니다.
호출 흐름 다이어그램
sequenceDiagram
participant Engine as TemplateEngine
participant View as ThymeleafView
participant Resp as HttpServletResponse
participant DS as DispatcherServlet
Engine-->>View: rendered HTML
View->>Resp: write(...) / flush()
View-->>DS: render() return
핵심 코드
// ThymeleafView.java
viewTemplateEngine.process(templateName, processMarkupSelectors, context, templateWriter);
if (!producePartialOutputWhileProcessing) {
response.getWriter().write(templateWriter.toString());
response.getWriter().flush();
}
코드 해설
DispatcherServlet이 직접 HTML 문자열을 다루는 것이 아니라, View가 응답 writer에 써 넣고 종료합니다. 따라서 “HTML 반환”은 메서드 반환값이라기보다 응답 스트림 기록 완료로 이해하는 것이 정확합니다.
설계 의도
템플릿 엔진 출력과 HTTP 응답 기록을 View 계층 안에서 마무리해, DispatcherServlet은 흐름 제어에만 집중하도록 한 구조입니다.
다음 단계 연결
다음 문서 17-V8에서는 이렇게 작성된 HTML 응답이 최종적으로 브라우저에 도달하는 마지막 단계를 정리합니다.
← 이전: 17-V6. ThymeleafView → TemplateEngine | 다음: 17-V8. DispatcherServlet → Browser: HTTP Response (HTML)