javax.servlet.Filter オブジェクトは、認証(サーブレットの作業を行う前にフィルタがリクエストをキャッチする必要がある場合)とXSLT変換(サーブレットを完全に実行する必要がある場合)の両方に使用できます。コンテンツの生成が終了しました)。実際に実行されるのはいつですか?
これは(Webコンテナに)実装に依存していることは知っていますが、これはすべての人が解決する必要のある問題のようです。
たぶん、Webコンテナへのフィルタ登録ごとに設定オプションがどこかに設定されていますか?
追加:
また、フィルターの実行順序は何によって決まりますか? FooFilterがBarFilterの前に実行されるのはなぜですか?
本質的に、フィルタチェーンはサーブレットの呼び出しをラップします。チェーンは、「最下部」に到達するまですべてのリンクを処理し、サーブレットの実行を許可してから、チェーンを逆に戻します。たとえば、新しい「サンプルフィルタ」がある場合、doFilter()メソッドは次のようになります。
public void doFilter(ServletRequest request,
ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// do pre-servlet work here
chain.doFilter(request, response);
// do post servlet work here
}
代替テキストhttp://img228.imageshack.us/img228/8945/filter.png
順序について:仕様から覚えているように、サーブレットコンテナは、フィルタが特定の順序で呼び出されることを保証しません。