getOutputStream() has already been called for this response问题的解决

Posted shaokun305

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了getOutputStream() has already been called for this response问题的解决相关的知识,希望对你有一定的参考价值。

tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法

在tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),
没有妥善处理好的原因。
具体的原因就是
在tomcat中jsp编译成servlet之后在函数_jspService(HttpServletRequest request, HttpServletResponse response)的最后
有一段这样的代码
finally {
      if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
    }
这里是在释放在jsp中使用的对象,会调用response.getWriter(),因为这个方法是和
response.getOutputStream()相冲突的!所以会出现以上这个异常。

 采用方法很简单.在使用OutputStream输出流完成后,调用下面2个方法即可解决该问题:
  out.clear();
  out = pageContext.pushBody();

示例代码:

 OutputStream os=response.getOutputStream();
 os.write(new String("true   "+"nowNum=" + nowNum+"===").getBytes());
 os.flush();
 os.close();

  out.clear();
  out = pageContext.pushBody();

以上是关于getOutputStream() has already been called for this response问题的解决的主要内容,如果未能解决你的问题,请参考以下文章

getOutputStream() has already been called for this response

Java Web报错:getOutputStream() has already been called for this response解决方案

getOutputStream() has already been called for this response解释以及解决方法

getOutputStream() has already been called for this response解释以及解决方法

getOutputStream() has already been called for this response 从了解到解决

getOutputStream() has already been called for this response问题的解决