2011-11-14 50 views
0

你好,我有,我不能把我的手指上有問題.....的getOutputStream()已經呼籲對第二servlet請求此響應

servletResp.setHeader("Expires","0") 
servletResp.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0") 
servletResp.setHeader("Pragma","public") 
servletResp.setHeader("Content-Disposition","inline; filename=invoice.pdf") 

servletResp.setContentType("application/pdf") 
servletResp.setContentLength(outStream.size()) 
servletResponseStream.write(outStream.toByteArray()) 
outStream.close() 
servletResponseStream.flush() 
servletResponseStream.close() 

在上面的代碼假設outStream有閱讀pdf文件。第一次請求代碼呈現良好。在第二個要求我得到:

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

什麼outputstream是沒有關係。即使我製作了一個全新的字節[2],並且寫出了相同的結果。在第一次請求服務器響應良好。在第二上述例外情況....

+0

什麼是outStream.close()? – r0ast3d

+1

outStream.close已經關閉了你的流響應,請提供一個行號和更多代碼 – r0ast3d

+0

@ r0ast3d不,outStream看起來像是一個ByteArrayOutputStream,沒有連接到servlet輸出流。 – EJP

回答

0

在你的問題中的代碼不叫getOutputStream(),或做任何會導致它被稱爲任何幫助將受到歡迎。所以我得出結論,異常的原因在別的地方。

底線是,您只能針對給定響應調用ServletResponse.getOutputStream()和/或getWriter()一次。某處,您的應用程序不止一次地呼叫getOutputStreamgetWriter

相關問題