6

応答本文を出力バッファーに書き始めた後にヘッダーを追加できないという難しい方法を見つけました。HttpServletResponseこれは、すべてがまだメモリにバッファーされているだけでも、ランダムな宇宙では意味があると思います。 .

ここで問題は、これを何らかの方法で回避するためのトリックはありますか? 明らかに、ヘッダーをクリアせずにコンテンツ本体をクリアできる関数resetBuffer()が使用可能であるため、HttpServletResponseオブジェクトがさらにヘッダーを書き込むことができる状態に戻る何らかの方法が必要です。たとえば、コンテンツの本文を読み取り、 でクリアしresetBuffer()、さらにヘッダーを設定してから、コンテンツの本文を復元する方法はありますか?

余談: 私がこれをやりたい理由は、サーブレットのできれば最後のステップとしてヘッダーを追加できるようにするためです。これにより、サーバーがリクエストの処理でビジーだった時間を知ることができます。

4

1 に答える 1

5

唯一の選択は、応答本文を自分でバッファリングすることです。bodyが終了したら、ヘッダーを追加してから、bodyを書き込みます。

面白いことに、HTTP / 1.1には、チャンクエンコーディングでトレーラーを使用することにより、応答本文の後にヘッダーを送信する方法がありますが、誰もそれを実装していないので、気にしないでください。

于 2012-11-23T23:25:14.947 に答える