tomcat6下jsp出現(xiàn)getOutputStream() has already been called for this response異常的原因和解決方法
Posted on 2010-01-14 22:13 斷點 閱讀(269) 評論(0) 編輯 收藏 所屬分類: Tomcat我也遇到了這個問題,所以把它貼出來,大家了解一下。
在tomcat5下jsp中出現(xiàn)此錯誤一般都是在jsp中使用了輸出流(如輸出圖片驗證碼,文件下載等),
沒有妥善處理好的原因。
具體的原因:
在tomcat中jsp編譯成servlet之后在函數(shù)_jspService(HttpServletRequest request, HttpServletResponse response)的最后
有一段這樣的代碼
finally {
if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
}
這里是在釋放在jsp中使用的對象,會調(diào)用response.getWriter(),因為這個方法是和
response.getOutputStream()相沖突的!所以會出現(xiàn)以上這個異常。
在使用完輸出流以后調(diào)用以下兩行代碼即可:
out.clear();
out = pageContext.pushBody();
最后這里是一個輸出彩色驗證碼例子(這樣的例子幾乎隨處可見),以下為代碼的一部分:
ImageIO.write(image, " JPEG " ,os);
os.flush();
os.close();
os = null ;
response.flushBuffer();
out.clear();
out = pageContext.pushBody();
來源:http://chenlb.blogjava.net/archive/2007/05/26/104714.html#
posted @ 2009-02-11 15:34 斷點 閱讀(236) | 評論 (0)