今天 Tomcat服务器报了这样的错误 getOutputStream() has already been called for this response
让我百思不得其解,终于在网上找到了答案,jsp编译成servlet后 打开我的image_jsp.java文件 (编译后的servlet)
发现这段代码
catch (Throwable t) {
if (!(t instanceof SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try { out.clearBuffer(); } catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
我曾经写过servlet 略懂servlet是jsp的原型 这段代码 主要想说明下在释放jsp中使用的对象时,会调用response.getWriter(),而此函数与response.getOutputStream冲突。
解决方案是 加上
out.clear();
out=pageContext.pushBody();