
在Tomcat 6中使用JSP时遇到getOutputStream()已调用的问题
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
本文介绍了在使用Apache Tomcat 6服务器运行JSP页面过程中遇到getOutputStream has already been called错误的原因及解决方案。
在Tomcat 6.0下JSP出现`getOutputStream() has already been called for this response`异常的原因通常是由于在JSP页面使用了输出流(例如生成图片验证码或文件下载),但没有妥善处理这种情况。
具体原因如下:
当Tomcat将JSP编译成Servlet时,在函数_jspService(HttpServletRequest request, HttpServletResponse response)的最后会有一段这样的代码:
```java
finally {
if (_jspx_out != null && _jspPageContext != null) {
_jspx_out.close();
_jspPageContext.release();
}
}
```
这段代码确保了响应输出流在结束时被正确关闭,并且页面上下文得到释放。如果在这之前已经调用了`getOutputStream()`或`getWriter()`,并且尝试再次使用其中一个方法,则会导致上述异常。要解决这个问题,需要保证在一个JSP页面中不要同时使用这两种方式来写入数据到响应对象中;或者在处理完输出流后及时关闭它。
全部评论 (0)
还没有任何评论哟~


