- - PR -
複数のフィルター処理をひとつにまとめる方法について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-08-26 13:20
こんにちは。
サーブレットを用いて、WEBアプリを作っていますが、 すべてのリクエストに対して、特定の処理を施しています。 たとえば、web.xmlで、/*のリクエストについて、 EncodingFilterとNDCフィルター(log4jの記載方法)などを施しています。 現在、/*のリクエストに施すフィルターの数だけ、web.xmlに記載しています。 ---- <!-- エンコーディングフィルター --> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>EncodingFilter</filter-class> ・・・・ </filter> <!-- NDCフィルター --> <filter> <filter-name>NDCFilter</filter-name> <filter-class>NDCFilter</filter-class> ・・・・ </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>NDCFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ---- それぞれ、個別にweb.xmlに記載していますが、 この2つのフィルターをひとつにまとめることは可能でしょうか? 具体的には、以下の感じです。 ---- public class InitialFilter implements Filter { ・・・ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (filterConfig == null) { return ; } // エンコーディングフィルター request.setCharacterEncoding(encoding); // NDCフィルター if (request instanceof HttpServletRequest) { HttpServletRequest req = (HttpServletRequest) request; NDC.push(req.getSession().getId()); try { chain.doFilter(request, response); } finally { NDC.remove(); } } // リソースの呼び出し chain.doFilter(request, response); } ---- 上記のようなフィルターをひとつだけですと、リクエストに対して、 処理がおこなえていませんでした。 web.xmlにも、InitialFilterのみを/*に対して、処理させることは可能なのでしょうか? ご存知のかた、よろしくお願いします。 |
|
投稿日時: 2006-08-27 03:04
コードから全てが読み取れませんが、デバッガで確認するのが一番でしょう。
まとめると、動く・動かないと言う次元の話ではなく、 単純にコードに問題があるから動かないだけだと思います。 例外が発生していたり、doFilterの最初のif文でreturnしているとか・・・ デバッガでどのコードが実行されているか確認してみましょう。 |
1