Olá desenvolvedores, no tutorial anterior trabalhamos com o Web Filter ou @WebFilter que é a anotação usada para declarar um filtro de servlet. De acordo com a documentação da Oracle, trata-se de uma “anotação que é processada pelo contêiner no momento da implantação e o filtro correspondente aplicado aos padrões de URL, servlets e tipos de expedidor especificados”.

A explicação da Oracle, talvez pareça um pouco abstrata até mesmo para os programadores mais experientes, então vamos tentar entendê-la de outra forma. Muito utilizado em aplicações comerciais a anotação @WebFilter é usada para declarar um filtro em uma aplicação Web. E, importante, a classe anotada deve estender a interface javax.servlet.Filter.

ANOTAÇÃO @WEBFILTER

A anotação @WebFilter é como definimos um Servlet Filters, que é comumente utilizado na implementação de operações, que acontecem antes da conclusão do fluxo de navegação pelo usuário. Nesse sentindo, o filtro é mais comumente utilizado em implementação de autenticação. Atuando como um redirecionador de fluxo de navegação, podemos por exemplo, evitar que o usuário consiga acessar o conteúdo de um sistema se a autenticação falhar.

Em suma, podemos impedir que o usuário tenha acesso a dado conteúdo se uma dada condição não for aceita. Contudo, as tarefas pertinentes aos filtros não se restringem a sistemas de login. Os filtros podem ser aplicados para todas as URLs, para parâmetros de inicialização, para especificar informações adicionais, compressão de dados, encriptação, entre outras funcionalidades.

Enfim, esta introdução foi para elucidar um pouco mais o conceito de filter, tema explicado aqui no tutorial “JDBC & FILTER: CONEXÃO E IMPLEMENTAÇÃO”. Agora unindo teoria e prática, acredito que você terá uma melhor compreensão deste importante assunto. Vamos então ao tema deste tutorial, e dar algumas dicas para corrigir erros de implementação.

CORREÇÃO DE ERROS

É comum quando trabalhamos com a implementação de uma classe que estende a interface javax.servlet.Filter, erros como o que irei mostrar. Por exemplo, você poderá se deparar com um filter.Filter.doFilter(Filter.java:36).

Se clicar sobre o erro, neste caso, você será redirecionado para a linha de código “connection.rollback”, dentro do bloco try/catch, observe que falta um e.printStackTrace cuja função é mostrar a pilha de exceção. Ainda não estamos corrigindo o erro mas com esta implementação mais informações sobre os erros serão exibidas, o que compreende um facilitador no momento de interpretá-los.

Uma outra linha de erro nos leva até connection.comit(), debugando o código será possível descobrir que o “private static Connection connection”, não está instanciado.

Uma forma de resolver este problema é chamar a classe SingleConnection que estabelece a conexão e retorná-la.

private static Connection connection = SingleConnection.getCommection();

Entretanto, esta não é forma considerada ótima para resolver este erro, o melhor seria implementar esta chamada dentro do init, assim quando subirmos o projeto, tudo o que estiver dentro do init será executado.

EM POUCAS PALAVRAS

Em resumo, o filter é executado sempre que um botão na tela for clicado, filtrando assim, toda ação é ou informação que está vindo das telas. Em linhas gerais, essa filtragem é modificar ou adaptar as requisições (request) e respostas do objeto (response), assim falamos sobre a anotação web filter. Eu fico por aqui, nos vemos no próximo tutorial.