如何在一个Servlet里同时使用getOutputStream()和 getWriter()?
如题!同时使用后就会出现异常java.lang.IllegalStateException:getWriter()hasalreadybeencalledforthisr...
如题!
同时使用后就会出现异常
java.lang.IllegalStateException: getWriter() has already been called for this response。 展开
同时使用后就会出现异常
java.lang.IllegalStateException: getWriter() has already been called for this response。 展开
1个回答
展开全部
这两个东西底层都一样。只是包装不一样。不能同时调用两个。但是你可以对得到的东西再包装。达到你写数据的要求。
追问
以下是部分代码:
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没有关闭的情况下)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询