web-dev-qa-db-ja.com

HTTPのリクエストにのみサーブレットフィルターを適用する方法POSTメソッド

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

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

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

25
Kiran

このためのすぐに利用できる機能はありません。 Filterは、すべての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()
   {

   }
}
34
Ramesh PVK