Почему на экземпляре ServletResponse
и getWriter()
и getOutputStream()
назвать нельзя?Сервлеты в java - и getWriter() и getOutputStream()
ответ
A дизайн решение. Writer и OutputStream поддерживают собственный буфер. Если вы создали один каждый, то их выход должен каким-то образом быть объединен. Возможно, но сложнее. Поэтому они решили, что вам нужно выбрать, хотите ли вы на основе символов или двоичный вывод.
Так почему же getWriter() не возвращает оболочку на результат getOutputStream()? –
Потому что если вы попытаетесь написать оба, вы испортите результат из-за несогласованной буферизации. Или вы спрашиваете, почему Writer не раскрывает двоичные методы вывода OutputStream? – Thilo
Как правило, это связано с тем, что getOutputStream()
используется для записи двоичного содержимого, тогда как getWriter()
используется для написания текстового контента. Было бы бессмысленно писать как в одном запросе сервлета - вы должны либо использовать один, либо другой.
Потому что Writer
является абстракцией более высокого уровня, чем OutputStream
. Он управляет кодировкой символов базового потока и включает свои собственные механизмы буферизации.
Если вы должны были написать прямо в OutputStream после использования Writer, существует высокий риск повреждения базового потока из-за смешанного кодирования символов или отсутствия буферизованных данных.
Чтобы предотвратить это смешение, API сервлета запрещает использование обоих для любого ответа.
Практически вы используете OutputStream для записи двоичного содержимого и Writer для написания текстового контента.
- 1. Как использовать getOutputStream() и getWriter() в том же запросе сервлета?
- 2. У getRequestDispatcher(), getOutputStream() и getWriter() есть некоторые отношения?
- 3. не может вызвать getWriter() после getOutputStream() ошибка
- 4. Не удается вызвать getWriter(), getOutputStream() уже вызвал
- 5. Регистрационная форма и сервлеты Java
- 6. Массовая загрузка и сервлеты Java
- 7. Java EE и сервлеты и JSP
- 8. Загрузите файл, используя getOutputStream() и ошибку при рендеринге представления, которое вызывает getWriter()()
- 9. Абстрактные классы и сервлеты в Java EE
- 10. Веб-службы и сервлеты
- 11. Сервлеты и связь AJAX
- 12. Java DataOutputStream getOutputStream() getInputStream()
- 13. Java-сервлеты и подключение к базе данных
- 14. Где работают сервлеты и апплеты Java?
- 15. Дизайн и сервлеты DAO Design
- 16. сервлеты и файл ресурсов
- 17. Сервлеты, init и extends
- 18. JSP и сервлеты
- 19. Сервлеты и рамки MVC
- 20. JSP JavaBean и сервлеты?
- 21. Сервлеты и внутренние связи
- 22. Ошибка в Jsp и сервлеты
- 23. jsp, сервлеты, лица и бобы?
- 24. Java-процесс getInputStream vs. getOutputStream
- 25. Java-процесс getOutputStream для строки
- 26. «Неверная попытка вызвать getOutputStream() после того, как getWriter() уже был вызван« во время теста Джерси »
- 27. Публикация и перенаправление на внешние сервлеты Java Java
- 28. Сервлеты, JSP, Java?
- 29. getOutputStream() уже был вызван, но я просто использовать getOutputStream один раз в моем коде SpringMVC
- 30. Как проверить, используется ли getwriter или getoutputstream при вызове внутри файла сервлета
Это могло бы помочь, если бы вы объяснили, почему вы хотели позвонить как в одном запросе сервлета. –
Возможно, Abkutty не хочет звонить обоим, но Servlet, обработкой ошибок Servlet и некоторыми фильтрами, которые пытаются записать вывод, а не правильно координируют между собой, какой метод использовать. – Thilo
Я подумал бы еще раз, почему вы хотите иметь оба. –