烈火建站學院(Bkjia.Com)編程文檔 tomcat5下jsp出現getOutputStream() has already been called for this response異常的原因和解決方法
在tomcat5下jsp中出現此錯誤一般都是在jsp中使用了輸出流(如輸出圖片驗證碼,文件下載等),沒有妥善處理好的原因。
具體的原因就是,在tomcat中jsp編譯成servlet之後在函數_jspService(HttpServletRequest request, HttpServletResponse response)的最後
有一段這樣的代碼
以下為引用的內容:
finally {
if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
}
這裡是在釋放在jsp中使用的對象,會調用response.getWriter(),因為這個方法是和response.getOutputStream()相沖突的!所以會出現以上這個異常。然後當然是要提出解決的辦法,其實挺簡單的(並不是和某些朋友說的那樣-將jsp內的所有空格和回車符號所有都刪除掉),在使用完輸出流以後調用以下兩行代碼即可:
以下為引用的內容:
out.clear();
out = pageContext.pushBody();