簡單理解Java中的輸出流異常
我們在做文件上傳或者下載,或者過濾等操作時,可能要用到頁面的輸出流.
例如在JSP使用:
response.reset(); |
拋出異常:
ERROR [Engine] StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception has already been called for this response |
從網上找了下資料,綜合一下原因分析:
這是WEB容器生成的servlet代碼中有out.write(””),這個和JSP中調用的response.getOutputStream()產生沖突。即Servlet規范說明,不能既調用 response.getOutputStream(),又調用response.getWriter(),無論先調用哪一個,在調用第二個時候應會拋出 IllegalStateException,因為在jsp中,out變量是通過response.getWriter得到的,在程序中既用了response.getOutputStream,又用了out變量,故出現以上錯誤。
解決方案:
1.在程序中添加:
out.clear();
out = pageContext.pushBody();
就可以了;
2,不要在%][%之間寫內容包括空格和換行符
3,在頁面寫入圖片的時候,需要
flush() |
4,在頁面確定寫入
【編輯推薦】