posts - 431,  comments - 344,  trackbacks - 0
在写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 周锐 阅读(1060) 评论(6)  编辑  收藏 所属分类: JavaJsp

只有注册用户登录后才能发表评论。


网站导航: