2010-12-07 1 views
1

レスポンスのタイプに応じてHTTPヘッダーを設定します。私の問題は、私が鉱山を設定する前にいくつかのreponsesがヘッダーをコミットすることです。どのようにこれを処理するための任意の提案?サーブレットレスポンスでHTTPヘッダーを条件付きで設定する必要があります

+2

機能要件が不明なので、機能要件をより明確に記載した関連する質問へのリンクです:http://stackoverflow.com/questions/2563344/how-to-add-response-headers-based-あなたの第2のアプローチが私が取る必要があるものである – BalusC

答えて

1

考え方の1つは、の応答オブジェクトに応答ヘッダーを設定してから、サーブレットを呼び出すことです。

もう1つは、実際の応答が実際にコミットされないように応答ラッパーをサーブレットに提供することです。これにより、レスポンスボディをメモリにバッファリングする必要があります。

しかし、私は最良の方法はサーブレットを変更してに変更することだと思っています。は必要なヘッダーを設定します。


私はラッパーに自分のOutputStreamを提供することで、全体の応答をバッファリングする必要がありますか? flush()などを上書きすることはできますか?

どのように実装するかはあなた次第です。レスポンス・ラッパー・オブジェクトは、レスポンス・ボディの書き込みが開始される前に、特別なヘッダーが追加されるように何らかの方法で配置する必要があるという制約があります。概念的に単純な方法は、応答本体をバッファリングすることですが、実際の応答出力ストリーム/ライターに最初のフラッシュ前にヘッダーを追加する出力ストリーム/ライターを提供するために、応答ラッパーを取得することもできます。

あなたは、これが重要であるかどうかを判断するために全体のWebアプリケーションを見てする必要があるでしょうけれども、私は、はい、まあ、それは行うことができます原因パフォーマンスの問題

をバッファリングが心配です。

パフォーマンスの観点から、最良の解決策は、サーブレットにヘッダー自体を設定させることです。

+0

の前にコンテンツタイプの取得コンテンツタイプ。私は変更/いくつかの条件に基づいてヘッダーを追加したい、私はサーブレットが行われるまではわからない。また、1つの場所ではないので、3も出ています。私は自分自身の出力ストリームをラッパーに提供することによって応答全体をバッファリングする必要がありますか? flush()などを上書きすることはできますか?パフォーマンスの問題を引き起こすバッファリングが心配です – treefrog

関連する問題