如何在一个Servlet里同时使用getOutputStream()和 getWriter()?

如题!同时使用后就会出现异常java.lang.IllegalStateException:getWriter()hasalreadybeencalledforthisr... 如题!
同时使用后就会出现异常
java.lang.IllegalStateException: getWriter() has already been called for this response。
展开
 我来答
peakoffly
2012-04-18 · TA获得超过216个赞
知道答主
回答量:56
采纳率:0%
帮助的人:65.7万
展开全部
这两个东西底层都一样。只是包装不一样。不能同时调用两个。但是你可以对得到的东西再包装。达到你写数据的要求。
追问
以下是部分代码:
public void write(OutputStream sos) throws IOException {
ImageIO.write(buffImg, "png", sos);
sos.flush();
sos.close();
}

vCode.write(response.getOutputStream());
这里调用write方法后,再调用getWriter方法就会出现getWriter() has already been called for this response异常,但是方法体里Stream流关掉也不行,麻烦说的详细些,谢谢
追答
关闭之后更不行。底层流关闭了,就无法再获得了。
必须明确:response的输出流两个方法getOutputStream()和getWriter()只能调用其中一个。
如果既要多次在不同的函数中使用输出流。可以将其缓存到成员变量中。
你是不是想用Writer写字符。那你可以
PrintWriter out = new PrintWriter(sos);
这个out可以用(sos没有关闭的情况下)。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式