Olá desenvolvedores, daremos continuidade aos estudos sobre JDBC e a conexão com o banco de dados. Já criamos a conexão coma base de dados, você poderá conferir este tutorial aqui em: “JDBC – CRIANDO CONEXÃO COM O BANCO”. E estudamos também o que é e qual é o papel do padrão de projeto Singleton no desenvolvimento de sistemas.
Agora é hora de trabalharmos com o banco de dados, criando as tabelas e relacionando-as. O sistema precisará de uma tabela de usuários, e será a primeira que iremos criar. Selecionando a base de dados curso-jsp, vá até Tables, clique com o botão direito >> Create >> Tables. Defina um nome para a tabela, mantenha o usuário e o Schema. Mas ainda não clique em salve, dentro desta tabela criaremos algumas colunas.
Na aba Columns crie duas colunas, uma para login e outra para senha respectivamente, ambos serão do tipo character varying.
O próximo passo é inserir registros na nossa tabela, e para isso basta clicar com o botão direito do mouse sobre a tabela >> Scripts >> INSERT Scripts, e ele já nos fornece a máscara. Crie três usuários.
Embora a mensagem de confirmação já tenha nos informado que os dados foram inseridos com sucesso, escreva select * from usuários, selecione e pressione a tecla de função F5 para exibir a tabela.
O próximo passo é configurar nossa aplicação para que, quando o servidor subir a classe de conexão já se conecte automaticamente ao banco de dados. E essa configuração será feita no web.xml, note como é simples trabalhar com JDBC e filter
TRABALHANDO COM FILTER
No web.xml utilizaremos a tag filter, assim quando o projeto estiver “subindo”, o servidor invocará a classe de conexão. Dentro da tags <filter> teremos outras duas tags, filter-name e filter-class, onde esta última apontará para a classe Filter.
Crie agora um novo package – “filter”, na raiz da subpasta src, e dentro do pacote uma classe – “Filter”, que aliás, é considerada padrão em sistemas web. Esta classe, além de interceptar as requisições, irá subir a conexão.
A classe Filter irá implementar o Filter do javax.servlet. A classe pedirá a implementação De alguns métodos, implemente-os. E para que o filter possa receber a conexão que foi iniciada, implemente antes dos métodos a linha de código abaixo.
private static Connection connection;
O método responsável por subir a conexão é o init, assim é neste método que iremos implementar SingleConnection(), que passará o getConnection, invocado pelo SingleConnection ao connection.
BLOCO TRY/CACTH
No método doFilter, implementaremos o bloco try/cacth, assim dentro try teremos o chain que é do FilterChain, que invocará o doFilter cujos parâmetros request e response – respectivamente são responsáveis pela requisição e pela resposta. Em outras palavras fazer o request e dar a resposta.
Ainda no try daremos um connection.commit. Lembrando que commit é, por exemplo, o ato de enviar, de fazer um upload dos códigos para um banco de dados. Entretanto, caso aconteça algum erro na conexão, o bloco catch implementa um rollback, ou seja, retornará a base de dados ao estado anterior. Este rollback deverá ser implementado dentro de um bloco try aninhado no bloco catch.
NOTA: A classe Filter implementa ainda a anotação @webFilter que é usada para declarar um filtro de servlet. Essa anotação é 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.
Desse modo, é dentro dele que faremos nossa aplicação interceptar toda as URLs, ou seja, todas as requisições e as respostas.
@WebFilter(urlPatterns = {"/*"})
ADICIONANDO O PROJETO AO SERVIDOR
Para adicionar o projeto ao servidor, na View server clique com o botão direito sobre o servidor, no meu caso, “Tomcat v8.5 Server at localhost [Stopped]” >> Add and Remove. Após adicioná-lo clique em Finish, publique e start o projeto.
EM POUCAS PALAVRAS
Então criamos a nossa conexão utilizando JDBC, e neste tutorial construímos uma tabela de usuários, inserimos alguns registros e implementamos a classe Filter que receberá a conexão que foi “startada”. São muitos detalhes de implementação que você precisa entender e absorver, por isso, como sempre é, pratique, pratique e pratique. Eu fico por aqui, nos vemos no próximo tutorial.