Подтвердить что ты не робот

Как применить фильтр сервлетов только к запросам с методом HTTP POST

В моем приложении я хочу применить фильтр, но я не хочу, чтобы все запросы приходились на этот фильтр.

Это будет проблема с производительностью, потому что у нас уже есть некоторые другие фильтры.

Я хочу, чтобы мой фильтр применялся только для запросов HTTP POST. Там в любом случае?

4b9b3361

Ответ 1

Для этого нет легкодоступной функции. A 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()
   {

   }
}

Ответ 2

Вы можете использовать универсальный сервлет, нет проблем с запросом POST