Gymterview
junior

Какая разница между JSPWriter и сервлетным PrintWriter

JspWriter и PrintWriter — оба используются для записи текстовых данных в HTTP-ответ, но JspWriter добавляет слой буферизации поверх PrintWriter.

Критерий JspWriter PrintWriter
Буферизация Да (буферизирует вывод перед отправкой) Пишет напрямую в ответ
Получение Неявный объект out на JSP response.getWriter()
Связь Делегирует запись в PrintWriter Базовый поток
Переполнение буфера Может выбросить IOException Нет буфера для переполнения

JspWriter буферизирует вывод, что позволяет модифицировать HTTP-заголовки даже после начала записи контента (пока буфер не сброшен). Когда буфер заполняется или вызывается flush(), JspWriter передаёт данные в PrintWriter, который записывает их в HTTP-ответ.

Размер буфера задаётся директивой: <%@ page buffer="16kb" %> (по умолчанию 8 КБ). Значение buffer="none" отключает буферизацию, и JspWriter пишет напрямую через PrintWriter.

На собеседовании: ключевое — JspWriter буферизирует, PrintWriter — нет. Буферизация позволяет менять заголовки ответа (например, redirect) даже после начала вывода контента.