java中的Servlet - getWriter()和getOutputStream()

abs*_*son 9 java servlets

为什么说对一个实例ServletResponsegetWriter()getOutputStream()不能叫什么名字?

Thi*_*ilo 18

一个设计决定.Writer和OutputStream都维护自己的缓冲区.如果你创建了一个,那么他们的输出需要以某种方式合并.可能,但更复杂.所以他们决定你必须选择是否需要基于字符的输出或二进制输出.


ska*_*man 12

因为a Writer是一个比它更高级的抽象OutputStream.它控制底层流的字符编码,并包含自己的缓冲机制.

如果您在之前使用Writer之后直接写入OutputStream,则由于混合字符编码或缺少缓冲数据,底层流的损坏风险很高.

为防止这种混淆,servlet API禁止将两者用于任何一个响应.

更实际的是,您使用OutputStream来编写二进制内容,使用Writer编写文本内容.


小智 5

通常这是因为getOutputStream()用于编写二进制内容,而getWriter()用于编写文本内容.在一个servlet请求中写两个都没有意义 - 你应该使用一个或另一个.