在寫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
周銳 閱讀(1066)
評論(6) 編輯 收藏 所屬分類:
Java 、
Jsp