为什么在ServletResponse
的实例上都不能调用getWriter()
和getOutputStream()
?Java中的Servlets - getWriter()和getOutputStream()
9
A
回答
18
设计决定。 Writer和OutputStream都维护自己的缓冲区。如果你创建了一个,那么他们的输出将需要以某种方式合并。可能,但更复杂。所以他们决定你必须选择是否需要基于字符的输出或二进制输出。
4
通常这是因为getOutputStream()
用于写入二进制内容,而getWriter()
用于写入文本内容。将两者写入一个servlet请求是没有意义的 - 您应该使用一个或另一个。
12
由于Writer
比OutputStream
更高级别的抽象。它控制底层流的字符编码,并且包含它自己的缓冲机制。
如果您在之前使用Writer之后直接写入OutputStream,则由于混合字符编码或缺少缓冲数据而导致基础数据流损坏的风险很高。
为了防止这种混淆,servlet API禁止在任何一个响应中使用两者。
更实际上,您使用OutputStream编写二进制内容,Writer用于编写文本内容。
相关问题
- 1. 如何在同一个servlet请求中使用getOutputStream()和getWriter()?
- 2. Do getRequestDispatcher(),getOutputStream()和getWriter()有一些关系吗?
- 3. 不能打电话的getOutputStream后的getWriter()()错误
- 4. UT010006:无法调用的getWriter()的getOutputStream()已经调用
- 5. Java Servlets和HttpSessions
- 6. Java中的servlets
- 7. Java Servlets session.getAttribute和setAttribute
- 8. 如何在servlet文件中调用getwriter或getoutputstream时检查是否已使用
- 9. 批量上传和Java servlets
- 10. Java EE和Servlets以及JSP
- 11. Java Servlets和ImageIO错误
- 12. Java Servlets中的会话等
- 13. Java进程getInputStream与getOutputStream
- 14. Servlets,JSP,Java?
- 15. Java Servlets:性能
- 16. Java调试servlets
- 17. Java Servlets约定
- 18. getInputStream和getOutPutStream的JSSC替代
- 19. jssc getInputStream()getOutputstream()
- 20. 注册表单提交和Java servlets
- 21. JSP和Servlets的MailScheduler
- 22. java中的Servlets - 在JVM上共享ServletContexts
- 23. 写消息,并在同一时间发送一个下载文件(的getWriter,的getOutputStream冲突)
- 24. Google Guice和Servlets
- 25. Java应用程序终止于getOutputStream()
- 26. Netty相当于getOutputStream()
- 27. 变量未显示Java Servlets
- 28. jsp/servlets应用程序中的java方法和竞争条件
- 29. 产品浏览Java Servlets
- 30. Servlets中的JSON
如果你想解释为什么你想在一个servlet请求中调用它们,这可能会有所帮助。 – 2011-01-20 10:49:33
这可能不是Abkutty想要调用两者,而是Servlet,错误处理Servlet,以及一些Filter试图写输出,而不是正确地协调使用哪种方法。 – Thilo 2011-01-20 10:52:20