在写JSP程序的时候,如果程序中调用了response.getOutputStream()去向客户端输出文件等数据流,容器就会抛出这样的异常:
Java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:596)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:186)
产生这样的异常原因是web容器生成的servlet代码中有out.write(""),这个和JSP中调用的response.getOutputStream()产生冲突,
下面是web容器生成的部分servlet代码:
out = pageContext.getOut();
_jspx_out = out;
out.write("\r\n");
out.write("\r\n");
解决的方法有两步:1、如果JSP中有
<%@ page import ... %>
<%@ page import ... %>
这样的代码,则改为:
<%@ page import ... %><%
%><%@ page import ... %><%
%><%
// ...getOutputStream()...
%>
改完后生成的servlet代码:
out = pageContext.getOut();
_jspx_out = out;
//out.write("\r\n");这个将被去掉
//out.write("\r\n");这个将被去掉
2、如果第一步改完还是有异常,则在程序的最后添加:
out.clear();
out = pageContext.pushBody();
就可以解决了。
posted on 2006-11-20 15:37
周锐 阅读(1063)
评论(6) 编辑 收藏 所属分类:
Java 、
Jsp