[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-servlety-v-chem-raznitsa-mezhdu-printwriter-i-servletoutputstream":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},549,"v-chem-raznitsa-mezhdu-printwriter-i-servletoutputstream",13,"servlety","Сервлеты","🖧","В чем разница между PrintWriter и ServletOutputStream","`PrintWriter` — класс для работы с символьным потоком (text), а `ServletOutputStream` — для работы с байтовым потоком (binary). Выбор зависит от типа данных, которые отправляются клиенту.\n\n| Критерий | PrintWriter | ServletOutputStream |\n|----------|------------|---------------------|\n| Тип данных | Текстовые (HTML, JSON, XML) | Бинарные (изображения, PDF, файлы) |\n| Получение | `response.getWriter()` | `response.getOutputStream()` |\n| Кодировка | Учитывает `charset` ответа | Байты передаются «как есть» |\n| Буферизация | Автоматическая буферизация символов | Работает с необработанными байтами |\n\n`PrintWriter` автоматически конвертирует символы в байты с учётом заданной кодировки (`response.setCharacterEncoding(\"UTF-8\")`). `ServletOutputStream` даёт полный контроль над байтами и используется для передачи файлов, изображений, потоковых данных.\n\n> **На собеседовании:** ключевой момент — нельзя вызывать оба метода для одного ответа. Попытка вызвать `getWriter()` после `getOutputStream()` (или наоборот) приведёт к `IllegalStateException`.","","junior",[15],"servlets",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"В чем разница между PrintWriter и ServletOutputStream — Gymterview","`PrintWriter` — класс для работы с символьным потоком (text), а `ServletOutputStream` — для работы с байтовым потоком (binary). Выбор зависит от типа данных, ко","`PrintWriter` — класс для работы с символьным потоком (text), а `ServletOutputStream` — для работы с байтовым потоком (b",[15,13],"`PrintWriter` — класс для работы с символьным потоком (text), а `ServletOutputStream` — для работы с байтовым потоком (binary). Выбор зависит от типа данных, которые отправляются клиенту.",true]