2
respostas

Filters

No curso é dito que podemos encadear os Filtros, mas não se diz como. Como digo que um filtro vai ser executado depois do outro? O que é o FilterConfig?

2 respostas

Oi Sérgio, tudo bem?

Aparentemente não é possível definir a ordem dos filtros diretamente na anotação @WebFilter. Para definir uma ordem vamos ter que recorrer ao uso do web.xml.

O primeiro passo é por um nome nos filtros. Isso pode ser feito através do @WebFilter

@WebFilter(filterName = "filtro1")
public class FiltroDeAuditoria implements Filter {}

@WebFilter(filterName = "filtro2")
public class UmOutroFiltro implements Filter {}

E no web.xml, eles serão executados de acordo com a ordem definida.

<filter-mapping>
    <filter-name>filtro1</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
    <filter-name>filtro2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Se futuramente você estudar frameworks como o VRaptor, vai perceber que ele fornece Interceptors, e aqui você irá conseguir definir a ordem utilizando as annotations do próprio framework. http://bit.ly/1RQycVT


Um FilterConfig, segundo a documentação, "é um objeto de configuração utilizado pelo servlet container para passar informação para um filtro durante a inicialização".

O FilterConfig é criado pelo container, no nosso caso o Tomcat. Ele possui alguns métodos que permitem você obter algumas informações, como parâmetros de inicialização.

No seguinte link é possível obter um exemplo de utilização do FilterConfig: http://www.javatpoint.com/filter-config.

Faz sentido? Abraço!

Oi Sérgio, essa reposta do Lucas eu marcaria como solução 10 vezes :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software