[MÚSICA] Olá a todos! Estamos aqui mais uma vez no hands on do Curso de Desenvolvimento Ágil com Java Avançado e hoje vamos fazer uma sequência aí tentando criar uma funcionalidade completa que envolva parte Web e o acesso a banco de dados. Vamos tentar fazer uma tela de login. Então eu vou partir aqui da tabela que eu já tinha criado antes, de usuário e eu vou precisar acrescentar uma coluna para a senha do usuário. Então eu vou vir aqui, na tabela, onde eu consigo estar editando ela aqui nas propriedades. Vou vir aqui nas colunas e vou adicionar aqui o campo senha e eu vou criar também do tipo text. [SEM ÁUDIO] Escolher aqui text, OK. Então eu vou confirmar aqui, ele vai adicionar a senha. Eu já tinha alguns usuários lá, né? E a senha a princípio está vazia então eu vou colocar aqui a senha 123, a senha aqui 456, e a Maria aqui vai ter a senha admin, default aí também. Só faltou aqui segredo, aí a senha super default. Então vamos vir aqui no NetBeans, eu vou criar aqui novo projeto Web, uma aplicação Web, próximo, que eu vou chamar aqui de login, próximo, aqui eu posso já estar finalizando. Eu vou começar aqui com a parte de acesso a banco de dados, já que eu criei ali. Então a primeira coisa que eu tenho que fazer é vir aqui nas bibliotecas e estar adicionando o jar do banco de dados. Aí então eu já tenho aqui nos meus downloads, vou abrir aqui e ele adicionou ali o meu postgresql, o driver do postgresql. Então eu vou vir aqui na parte de código fonte e eu vou estar criando aqui uma nova classe, eu vou chamar aqui de autenticador. Então é a classe que vai estar acessando o banco de dados e fazendo a autenticação do usuário. Eu vou primeiro colocar bloco estático aqui onde eu vou fazer aquele famoso Class.forName, então Class ponto forName, eu vou estar aqui pegando o a classe, vamos ver qual é a classe do driver mesmo aqui, é org ponto postgresql ponto driver. Então org ponto postgresql ponto driver. Então aqui ele, como a gente viu, isso aqui é uma coisa de reflexão eu vou deixar ali para ele, se essa classe não existir ele vai estar jogando erro aqui. Então eu vou ter método que eu vou chamar aqui de autenticar e ele vai retornar o nome do usuário. Eu vou ter aqui string login e string senha, certo? E ele vai estar, no caso aqui o que eu vou fazer é ele vai jogar uma exceção caso não seja possível autenticar o usuário. Então aqui eu vou fazer o acesso ao banco de dados lembrando lá que eu vou utilizar aqui o try, onde eu crio aqui uma connection dentro do try, então crio aqui a minha conexão, é igual a DriverManager, eu vou recuperar aqui a conexão, o getConnection, e eu vou passar aqui a minha URL de conexão, o meu login e a minha senha, certo? Aguarde momentinho enquanto eu vou olhar aqui quais são as informações que eu tenho que colocar aqui que eu não lembro de cabeça. Então estamos de volta, olhei aqui, vou colar as informações de acesso ao banco de dados. Então eu tenho aqui jdbc postgresql localhost usuarios, que é o nome do meu banco de dados aqui, olha lá usuários e a senha aqui é postgres admin, igual a gente fez no outro. Então eu vou criar aqui PreparedStatement, Prepared Statement, que eu vou ali na conexão pegar e dar prepareStatement. Aqui eu vou colocar a query, então eu vou botar select, nome, que é o nome da coluna aqui, cadê, onde está, o nome, volta aqui, from usuário query login é igual a uma interrogação end senha igual a outra interrogação. Para ficar mais legível vou quebrar a linha aqui. Então eu estou criando ali o PreparedStatement e aí eu vou colocar aqui ps ponto set string na posição e eu vou colocar o login. E vou colocar aqui o ps set string de novo só que agora eu vou colocar na posição dois e vou colocar a senha. Então eu estou completando ali a minha consulta, com os dados que eu estou recebendo ali como parâmetro. Lembrando que concatenar direto ali na string é bem perigoso, já falei isso na aula. Então vou vir aqui com ResultSet e vou dar execute query para ele rodar aquilo ali. Aqui ao invés de while, que eu estou esperando usuário só, eu vou fazer o seguinte if, se ele tiver próximo ele vai retornar o rs ponto get string, vou pegar aqui pelo nome, nome da coluna e se não ele vai jogar uma exceção. Throw new exception no caso deveria criar uma exceção minha aqui mas vamos tentar simplificar aqui o exemplo. Eu vou colocar aqui o usuário, não foi possível encontrar o usuário com essa senha. Não foi possível autenticar o usuário. Não vamos dar dica se é com senha ou o que é que foi. Bota uma exclamação assim como se tivesse dando uma esculhambação no cara que errou, tem uns sistemas que são assim. Então fiz aqui a parte de banco de dados, que seria aqui nessa aplicação a camada de model. Então vou fazer uma pausa aqui na primeira parte da aula e a gente volta na próxima fazendo aqui a parte da Web. [MÚSICA] [MÚSICA]