爲什麼在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和ImageIO錯誤
- 10. JSONP,Java Servlets和Internet Explorer
- 11. 集成JAX-RS和Java Servlets
- 12. Java EE和Servlets以及JSP
- 13. Java servlets和JSON解析
- 14. 批量上傳和Java servlets
- 15. 在Java Servlets中的會話
- 16. Java Servlets中的會話等
- 17. java servlets中的多線程
- 18. Servlets中的Java會話
- 19. Java進程getInputStream與getOutputStream
- 20. 學習Java Servlets
- 21. Servlets,JSP,Java?
- 22. getInputStream和getOutPutStream的JSSC替代
- 23. Java調試servlets
- 24. Java Servlets:性能
- 25. Java servlets HttpSession
- 26. Java Servlets約定
- 27. jssc getInputStream()getOutputstream()
- 28. Java Servlets + state =如何?
- 29. Java Servlets使用MultipartConfig
- 30. HTTPURLConnection Getoutputstream掛起
如果你想解釋爲什麼你想在一個servlet請求中調用它們,這可能會有所幫助。 – 2011-01-20 10:49:33
這可能不是Abkutty想要調用兩者,而是Servlet,錯誤處理Servlet,以及一些Filter試圖寫輸出,而不是正確地協調使用哪種方法。 – Thilo 2011-01-20 10:52:20