はこんにちは私は私が上で私の指を置くことができない問題.....上記のコードでのgetOutputStream()がすでに二サーブレットリクエストに応じて、この応答のために呼び出されてい
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ファイルを読んでください。コードは、最初の要求でうまく描画されます。 2回目のリクエストでは、私は次のようになります。
java.lang.IllegalStateException: getOutputStream() has already been called for this response
出力ストリームは問題ありません。私が新しいバイト[2]を作り、同じ結果が起こると書いても。最初の要求時にサーバーは正常に応答します。あなたの質問のコードがgetOutputStream()
を呼び出すか、それが呼び出される原因となる何もしない
outStream.close()とは何ですか? – r0ast3d
outStream.closeはすでにストリームの応答を閉じています。行番号などのコードを入力してください – r0ast3d
@ r0ast3dいいえ、 'outStream'は 'ByteArrayOutputStream'のようになり、サーブレット出力ストリームには接続しません。 – EJP