2014-05-14 5 views
0

Можно ли применять фильтры к каждой POST (или комбинации действий HTTP) в приложении или в желаемом сопоставлении?javax.servlet.Filter для конкретных методов запроса

Пример web.xml:

<filter> 
    <display-name>AccessFilter</display-name> 
    <filter-name>AccessFilter</filter-name> 
    <filter-class>foo.bar.AccessFilter</filter-class> 
</filter> 
    <filter-mapping> 
    <filter-name>AccessFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

И у меня есть контроллер, который отображает следующие URL-адреса:

  • [GET]/Foo/
  • [GET]/Foo /: идентификатор
  • [POST]/Foo
  • [POST]/бар
  • [PUT]/бар /: ИД

Например.

Мог ли я применить этот фильтр JUST к URL-адресам, которые являются POST-сообщениями?

Мотивация: разрешите владельцам ресурсов изменять их, но пусть каждый их потребляет.

ответ

1

Проверьте, требуется ли method в Filter, как показано ниже, и выполняйте то, что вы хотите сделать.

@Override 
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, 
     FilterChain filterChain) throws ServletException, IOException { 
    HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; 

    String method = httpServletRequest.getMethod(); //post or get 

} 
+0

Вопрос не был задан правильно ... Я хотел избежать этого для простоты. – amarseillan

+0

На основе URL и метода вы можете перенаправить запрос на следующий уровень или просто отправить страницу с ошибкой. – Braj

Смежные вопросы