Olá desenvolvedores, o nosso foco neste tutorial é a correção de alguns bugs e implementação de melhorias, que por sinal são comuns. Quando estamos perto de finalizar alguns sistemas e chega o momento de refiná-lo, é hora então de tratar também os bugs.
Observe na servlet LoginServlet.java que não implementamos nenhuma validação para login e senha de acesso ao sistema. Assim, se alguém tentar acessar o sistema com os campos em branco, apesar do redirecionamento para uma tela que informa o acesso negado, a nossa aplicação tentará fazer uma consulta vazia a base de dados.
Mas por que consumir recurso de processamento quando não há nada para ser consultado? É preciso otimizar nossa aplicação o máximo possível, e situações como esta não podem passar.
IMPLEMENTANDO VALIDAÇÃO
Assim a implementação da validação de çlogin e senha será o primeiro bug a ser corrigido. Desse modo se o login e/ou senha forem diferentes de nulo e não estiverem vazios, o bloco de validação do usuário será executado. Mova o bloco de validação para dentro da condição if.
Mas se não, se login ou senha não foram informados, o usuário será redirecionado para a página principal, a index.jsp, sem fazer qualquer consulta ao banco de dados.
MELHORIAS NOS CAMPOS DE UPLOAD
ARQUIVO DE IMAGEM
No campo de upload dos arquivos tanto de imagem quanto de pdf, mesmo quando não há nenhuma imagem ou arquivo os campos permanecem clicáveis. E se clicarmos em cima sobre o link seremos redirecionados para uma página em branco. O que iremos fazer além de remover a opção de clique é adicionar uma imagem padrão em ambos os campos.
Quando tratamos os erros que podem ocorrer do lado do cliente, não apenas proporcionamos uma melhor experiência para o usuário, como o evitamos também erros do lado do servidor.
Utilizando os recursos do JSP iremos implementar uma condição para exibir ou o arquivo padrão ou o arquivo inserido pelo usuário, dependendo da condição. Assim, implementaremos um teste que deverá retornar true ou false.
Será preciso recuperar o atributo que está na tela, buscando do objeto usuario o atributo fotoBase64. Então, se o atributo for diferente de vazio, ou seja, se existe algo dentro deste atributo do objeto, a foto será adicionada/exibida.
Mas se for igual a true, isto é, se for de fato vazio, será exibida uma imagem padrão sem a opção de clique. Busque por uma imagem da sua preferência no seu buscador preferido, copie-a para dentro da subpasta resources/img e informe o endereço da imagem.
ARQUIVO DE PDF
Agora do mesmo modo procederemos para o arquivo de PDF se houver um arquivo, ele será exibido e o link para download estará ativo. Mas se o campo estiver vazio a opção de download não poderá existir. O primeiro passo será substituir a palavra “currículo” por uma imagem.
E tal como fizemos para inserir uma imagem padrão nos arquivos de imagem, busque por uma imagem da sua preferência no seu buscador preferido, copie-a para dentro da subpasta resources/img e informe o endereço da imagem.
Entretanto agora, quando o usuário tentar fazer download de um campo vazio, um alert será acionado e uma mensagem será exibida para ele. Porém a validação será implementada de forma semelhante ao que fizemos com a imagem.
Recuperaremos o atributo que está na tela, buscando do objeto usuario o atributo curriculoBase64. Então, se o atributo for diferente de vazio, ou seja, se existe algo dentro do atributo do objeto, o arquivo será adicionado/exibido.
Mas se for igual a true, isto é, se o campo de fato estiver vazio, a mesma imagem será exibida, porém quando o usuário clicar sobre ela, receberá a mensagem de alerta implementada por meio da função Javasacript onclick informando que aquele campo “não possui currículo”.
A mesma implementação de alerta pode opcionalmente ser implementada para a imagem. Abaixo um exemplo de como ficou estas pequenas correções que implementamos em nosso sistema.
EM POUCAS PALAVRAS
Agora é hora de passarmos um pente fino pelo sistema, onde além de corrigirmos bugs, verificaremos o que pode ser melhorado. O que pode ser implementado de forma a deixar a aplicação ainda mais amigável para o usuário. Bom, eu fico por aqui e nos vemos no próximo tutorial onde voltaremos com mais correções de bugs e melhorias.