26

私のアプリケーションではフィルターを適用したいのですが、すべてのリクエストがそのフィルターに送られる必要はありません。

すでに他のフィルターがいくつかあるため、これはパフォーマンスの問題になります。

フィルタを HTTP POST リクエストにのみ適用したい。何か方法はありますか?

4

1 に答える 1

34

これには、すぐに利用できる機能はありません。AFilterをすべての HTTP メソッドに適用してもオーバーヘッドはありません。ただし、Filterコード内にオーバーヘッドのあるロジックがある場合は、そのロジックを不要な HTTP メソッドに適用しないでください。

サンプルコードは次のとおりです。

public class HttpMethodFilter implements Filter
{
   public void init(FilterConfig filterConfig) throws ServletException
   {

   }

   public void doFilter(ServletRequest request, ServletResponse response,
       FilterChain filterChain) throws IOException, ServletException
   {
       HttpServletRequest httpRequest = (HttpServletRequest) request;        
       if(httpRequest.getMethod().equalsIgnoreCase("POST")){

       }
       filterChain.doFilter(request, response);
   }

   public void destroy()
   {

   }
}
于 2012-06-18T06:00:45.733 に答える