Olá desenvolvedores, em nosso cadastro JSP – JavaServer Pages, desenvolvido também com a tecnologia Servlets implementaremos ainda mais melhorias. Por exemplo, quando “logamos” para acessar o cadastro de usuário, é necessário cadastrar um usuário para ter acesso a lista, e então proceder com a edição ou exclusão de algum usuário. Isso não faz sentido.
Recapitulando o que temos implementado, quando clicamos no link “cadastro de usuários” somos redirecionados para a página de cadastro. E é exatamente neste ponto que iremos passar um parâmetro para a servlet informando que a lista de usuários deverá ser carregada para a tela de cadastroUsuarios.jsp.
Assim o que irá acontecer é que quando clicarmos no link, o parâmetro que foi passado irá carregar a lista de usuários e redirecionar para a tela. Desse modo o navegador irá carregar a lista e exibi-la na tela.
IMPLEMENTANDO MELHORIAS
No Eclipse iremos trabalhar primeiro na página responsável pelo redirecionamento, a “acessoliberado.jsp”. É nesta página que iremos passar o parâmetro que virá da servlet “usuário.java”, onde estão todas as principais rotinas do sistema. Na servlet Usuario.java selecione e copie o caminho “salvarUsuario”.
O Caminho “salvarUsuario” irá substituir o link de redirecionamento, assim, indicaremos o caminho da servlet que será interceptada, seguido do parâmetro de “acao” que será igual a listar todos.
Mas não é apenas isso, o parâmetro precisa ser trabalhado no lado da servlet, e por se tratar de um link, ele sempre irá cair no doGet (resgatar), e se fosse um formulário, cairia no doPost.
Tendo na servlet usuário.java, dentro do método doGet, implementaremos na sequência dentro do bloco try, mais um laço de decisão, “if else”, onde o RequestDispatcher indicará para qual tela a ação será redirecionada. Em termos técnicos ele define um objeto que recebe solicitações do cliente e as envia para qualquer recurso como uma servlet, uma página HTML ou uma página JSP.
Continuando, “setaremos” também os atributos de usuário com o setAttribute. Ou seja, iremos injetar para dentro do atributo de usuários na página cadastroUsuario.jsp a lista de usuários.
Agora nos cabe iniciar e testar para vermos o resultado na melhoria implementada. Se você seguiu todos os passos corretamente, então estará funcionando.
CORRIGINDO DUPLICAÇÃO DE LOGINS
Não fizemos no banco de dados uma verificação que impeça o cadastro de logins idênticos ou ainda o mesmo usuário e senha inúmeros vezes. Assim quando deletamos um usuário todos os outros que são iguais são também deletados.
Outra importante consideração é que na página cadastroUsuario.jsp, tanto a ação de “Deletar” quanto a de “Editar” recebem o login, porém, o correto é trabalhar com o campo que não se repete, o id. Veja na imagem abaixo onde exatamente as mudanças deverão ser implementadas. Desse modo independente de termos vários usuários com o mesmo nome, a edição ou exclusão serão referenciadas a partir do login.
O próximo passo é fazer a correção no “DaoUsuario.java” nos métodos delete e consultar, na query onde o login é passado por parâmetro substitua pelo id. Para não ter dúvidas veja o exemplo abaixo:
IMPLEMENTANDO O BOTÃO CANCELAR
Agora imagina que ao clicar em editar depois de verificar os dados você decida não editar. Não seria interessante termos um botão cancelar que nos redirecionasse para a página JSP novamente, porém, carregando a lista de usuários? Vamos a ele.
Na página cadastroUsuario.jsp implementaremos mais um botão “submit”, eles deverão ficar um ao lado do outro.
Não será necessário submetê-lo, assim, neste caso utilizaremos Javascript, isto é, na tag input do botão de cancelar chame o evento “onclick”, desse modo quando clicarmos no botão um evento será disparado. Assim, o botão Cancelar implementará a action de redirecionamento e a ação de resetar o formulário como parâmetro.
<input type="submit" value="Cancelar" onclick=”document.getElementById(“formUser”)
.action=’salvarUsuario?acao=reset’”>
O “formUser” do evento é o id que você deverá colocar na assinatura do formulário.
E na servlet usuário.java implementaremos mais uma linha de código, onde a variável acao receberá o request da acao. Esta implementação deverá estar dentro do doPost.
E dentro do laço de decisão, se a acao existe e ela for igual a reset, listar os usuários. Se não, o código logo abaixo deverá ser executado, ou seja, o fluxo da ação de salvar deverá acontecer normalmente. Isso significa que o bloco de código abaixo deverá estar envolvido por uma else.
EM POUCAS PALAVRAS
Espero que tenha gostado de desenvolverem um sistema de JSP com servlet. Temos um sistema de cadastro bem completo e funcional. Minha dica é que você reveja as aulas e pratique, refaça a nossa aplicação até não restar mais dúvidas. Eu fico por aqui, nos vemos no próximo tutorial.