1. 程式人生 > >java.lang.IllegalStateException: getOutputStream() has already been called 解決辦法

java.lang.IllegalStateException: getOutputStream() has already been called 解決辦法

今天上班做從資料庫查詢圖片到jsp頁面顯示,結果報java.lang.IllegalStateException: getOutputStream() has already been called 錯誤,折騰了將近半天的時間才弄出來。

在網上查閱了很多資料基本上都是一家之言,雖然說得都對,不過沒有原始碼。所以我寫下來供大家查閱。廢話不多說,直接貼程式碼:

1、jsp頁面(注:我用的是springMVC)

<img style="margin-top: 100px;" alt="投訴舉報流程圖" src="${stream }">

2、後臺java Action方法:

/**
* 投訴舉報流程圖

* @author wangmingyuan
* @return ModelAndView
* @serialData 2016年11月24日下午4:16:05
*/
@RequestMapping(value = "/complaintreportpicture")
public ModelAndView complaintreportpicture(String proId,HttpServletRequest request,HttpServletResponse response,Model model) {
Map<String, Object> vdata = new HashMap<String, Object>();
InputStream stream =  wfComplaintReportService.findProcessPic("1");

try {
OutputStream output=response.getOutputStream();
int len=-1;  
            byte[]buf=new byte[1024];  
            while((len=stream.read(buf,0,1024))!=-1){  
            output.write(buf,0,len); 
            }
            model.addAttribute("stream",stream);
            output.flush();
            return null;  
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}  
return super.load("workflow/complaintreport/complaint_picture", vdata);
}

以上經過測試沒問題!!

相關推薦

java.lang.IllegalStateException: getOutputStream() has already been called 解決辦法

今天上班做從資料庫查詢圖片到jsp頁面顯示,結果報java.lang.IllegalStateException: getOutputStream() has already been called 錯誤,折騰了將近半天的時間才弄出來。 在網上查閱了很多資料基本上都是一家之

java.lang.IllegalStateException: getOutputStream() has already been called 解決方法之一

       為什麼說是解決方法之一呢。因為遇到這個問題後看到了很多此問題的解決方案。很多文章寫的原因是檔案下載是報的這個錯誤,而我遇到這個問題的時候根本就沒有寫檔案下載的功能。(我用的是SpringBoot)       其實說來這個問題的出現也是自己馬虎。報錯如下  

java.lang.IllegalStateException: getOutputStream() has already been called for this response解決方案

原因:在JSP頁面釋放資源的時候,呼叫了ServetResponse.getWriter()方法 。 1、Jsp解決辦法,在程式的最後新增: <% out.clear(); out = pageContext.pus

檔案下載:java.lang.IllegalStateException: getOutputStream() has already been called for this response

1.報錯資訊 一月 24, 2018 10:23:47 下午 org.apache.catalina.core.ApplicationDispatcher invoke 嚴重: Servlet.service() for servlet jsp threw

java.lang.IllegalStateException: getOutputStream() has already been called for this response

報錯原因:  當使用 javax.servlet.ServletResponse.getOutputStream() 方法獲取  ServletOutputStream 物件; 又再使用 javax.servlet.ServletResponse.getWriter(

java.lang.IllegalStateException: getWriter() has already been called for this response問題解決

java.lang.IllegalStateException: getWriter() has already been called for this response在執行下述程式碼時報錯,OutputStream out = getResponse().getOutp

springboot中getOutputStream() has already been called for this response和java.io.FileNotFoundException

這個異常挺多人遇到的,不過我看了一下,跟我們的情況都不一樣。1.    流沒關閉。2.    未設定響應頭。3.    jsp頁面需要清空流。說一下我們遇到的情況。就是一個簡單的sprinboot專案。用的是springboot 1.5.6,本地啟動後用花生殼內網對映。在用h

getOutputStream() has already been called for this response異常

剛剛研究專案的時候,遇到這個錯誤。搜了很多資料並自己研究了好久終於算是基本解決了這個問題,在這裡記錄一下。 出現錯誤的原因,說出來很簡單:      一般都是在JSP中呼叫了:response.getOutputStream();來獲取輸出流。並且有意或者無意的

getOutputStream() has already been called for this response 錯誤異常的處理

  1.今天在做匯出excel匯出的專案中遇到了這個問題: 網上搜了一下,參考地址:http://www.cnblogs.com/jorton/archive/2012/05/04/2482609.html 原因是因為在匯出的時候使用response.getOutput

解決getOutputStream() has already been called for this response

getOutputStream() has already been called for this response異常出現的原因和解決方法: jsp中出現此錯誤一般都是在jsp中使用了輸出流(如輸出圖片驗證碼,檔案下載等),沒有妥善處理好的原因。 具體的原因:j

getOutputStream() has already been called for this response問題的解決

  tomcat5下jsp出現getOutputStream() has already been called for this response異常的原因和解決方法 在tomcat5下jsp中出現此錯誤一般都是在jsp中使用了輸出流(如輸出圖片驗證碼,檔案下載等),沒有妥

記一次getOutputStream() has already been called for this response事件

這是我在做Excel表格匯出的時候碰見得一個問題,當時很頭疼,所以寫一下防止下次踩坑。 首先根據這個錯誤關鍵資訊,得知是錯誤產生原因是response.getWriter()和response.getOutputStream()等介面在呼叫時發生了衝突導致的。 後來也去找

解決Excel匯出時getOutputStream() has already been called for this response異常

嚴重: Servlet.service() for servlet jsp threw exception java.lang.IllegalStateException: getOutputStre

驗證碼 getOutputStream() has already been called for this response異常的原因和解決方法

1.tomcat5下jsp出現getOutputStream() has already been called for this response異常的原因和解決方法在tomcat5下jsp中出現此錯誤一般都是在jsp中使用了輸出流(如輸出圖片驗證碼,檔案下載等),沒有妥善處理好的原因。 具體的原因就是在

android中java.lang.IllegalStateException異常產生的原因及解決辦法

11-09 13:33:56.080: E/MediaRecorder(19865): stop called in an invalid state: 0 11-09 13:33:56.080: I/MediaRecorder(19865): stop 11-09 13:

轉:java.lang.IllegalStateException異常產生的原因及解決辦法

錯誤型別大致為以下幾種: java.lang.IllegalStateException:Cannot forward a response that is already committed IllegalStateExce

Spring上傳檔案java.lang.IllegalStateException: File has been moved - cannot be read again問題分析及解決

問題分析: Spring上傳檔案預設的檔案上傳處理器 CommonsMultipartResolver 這個類中使用了 common fileUpload 元件來進行檔案的上傳。 而 fileUpload 元件在進行檔案上傳時因為 java 記憶體有限,所以會先將較大的檔案存放在硬碟

getWriter() has already been called for this response 的解決辦法

同事 idt writer com for height .com 百度 忘記   第一次居然忘記寫close()。   第二次寫成這樣子了,      後面問同事,居然沒人遇到遇到過,於是去百度,也沒看見這樣子的。後面直接放下手上的工作,休息了一會兒,然後再來看,突然發現

java.lang.IllegalStateException: FragmentManager is already executing transactions 及 SmartTabLayout複用

      在複用 SmartTabLayout  時, 出現了標題所示的錯誤。首先我的場景是Activity下兩個fragment  :A 和 B,A中使用了SmarttabLayout和viewpager結合, B也同樣使用了這個結合, 然後就出現了B