2012-01-15 18 views
1

フィルタクラスが処理する要求/応答であるかどうかを検出する方法はありますか?また、私は自分のサーブレットへのリクエストを取り消し、自分のレスポンスを作成し、dofilterメソッドから返す必要があります。これを行う方法はありますか?javax.servlet.filterクラスのリクエスト/応答処理

+1

あなたが何をしたいかを明確にしてください –

答えて

2

各フィルタは、要求と応答のいずれにも影響を与えません。 chain.doFilter(...)に電話する前とか後で何かをするかどうか、そしてラップされたリクエストやレスポンスを渡すかどうかによって決まります。

フィルタ内で独自の応答を作成する必要がある場合は、chain.doFilter(...)を呼び出してフィルタから独自の応答を提供しないでください。

含め、Filter.doFilter Javadocsを参照してください:

この方法の典型的な実装は次のように続くでしょう パターン: - 1.要求 2.を確認し必要に応じてカスタム実装を要求オブジェクトをラップ入力フィルタリングのコンテンツまたはヘッダーをフィルタリングする 3.オプションで、出力のフィルタリングのためにコンテンツまたはヘッダをフィルタリングするカスタム実装でレスポンスオブジェクトをラップします 4. a)FilterChainオブジェクトを使用してチェーン内の次のエンティティを呼び出します(chain.doFilter() ))、 4. b)または要求処理をブロックするために、フィルタチェーンの次のエンティティに要求/応答のペアを渡しません。 5.フィルタチェーン内の次のエンティティの呼び出し後に、応答にヘッダーを直接設定します。

0

私はresponse.getWriter()。write( "response data")を使用してレスポンスをmofiedしました。 そして、その応答を回避するには、そのchain.doFilter()を削除してサーブレットに渡してください。

今、私はdoFilterメソッドからのセッション変数(認証用)を検証しています。 リクエストとレスポンスの両方が同じdoFilterメソッドで処理されているので、これらのセッション検証は2回起こっていると思います(1)。応答は応答中に&(2)になります。 しかしdoFilterが現在処理しているもの(リクエスト/レスポンス)を見つける方法はありますか? 私はセッションの検証をリクエスト時にのみ行うことができます。

+0

[このリンク](http://punekaramit.wordpress.com/2010/03/16/intercepting-http-response-using-servlet-filter/)は、私たちがいつ取り扱っているかを説明していますフィルタをリクエストしてレゾナンスする –

関連する問題