0

次のロジックのメソッドを使用するサーブレットがあります。

        ServletOutputStream out = response.getOutputStream();
        IOUtils.copy(content, out);
        out.close();

初めて実行したときは、すべてが期待どおりに機能します。同じ内容で同じ手順をもう一度実行しようとすると、outは空になります。2回目のデバッグ中にコンテンツオブジェクトを検査しましたが、1回目はコンテンツと同じです。何が起こっているのか考えてみませんか?

4

1 に答える 1

1

閉じた出力ストリームに書き込もうとしていないと仮定すると(これは私の最初の推測でしたが、コメントにより、サーブレット自体が再起動され、新しい応答が開かれると思います)、入力がストリームをリセットする必要があります。実際のストリームの種類に応じて、ストリーム自体にマークとリセットを使用するか、ストリームを再作成するか、バイト配列としてメモリにコピーして再利用することができます。この質問を参照してください:ストリームを2回読み取る

于 2012-12-31T16:45:07.563 に答える