Olá desenvolvedores depois de uma rápida introdução sobre servlets, hoje vamos na prática entender como funciona uma servlet ao criar a nossa primeira. Já sabemos que este pequeno servidor compreende uma tecnologia para a comunicação com páginas web dinâmicas.
Servlet e front-end se comunicam a partir da URL – Uniform Resource Locator, cujo mapeamento é feito por meio do arquivo web.xml, que fica dentro da subpasta WEB-INF. Assim, uma requisição será enviada para o servlet (classe Java), onde serão utilizados recursos do Java para que os dados possam ser capturados e processados. Após o processamento dos dados a resposta será exibida na tela.
Desse modo, podemos dizer que a comunicação entre servlet e HTML é orientada via de regra por dois principais protocolos, POST (enviar) e GET (buscar). Estes protocolos trabalham em duas vias, ou seja, lado do cliente e lado do servidor.
MVC EM DUAS CAMADAS
Tendo visto este pequeno resumo do que vimos até o momento sobre servlet, vamos a implementação, e desse modo trabalhar com arquitetura MVC – Model-View-Controller, em duas camadas.
Mas o que significa trabalhar com o MVC em duas camadas? Significa que nos concentraremos na camada Model e View. Isto é, na camada de interface com o usuário ou cliente-side como também é conhecida. Utilizando HTML ou XML, esta camada responde também pelas interfaces de apresentação.
E também trabalharemos com a camada Model que é a camada responsável pela estrutura de dados atrás de uma parte específica da aplicação, onde as regras de negócio são tratadas e onde ocorrem também a leitura e validação dos dados. É aqui que os dados são obtidos, processados e traduzido em informações relevantes para serem exibidas pela View.
SERVLET NA PRÁTICA
Para o nosso exemplo implementaremos uma tela de login na página index.jsp. apague tudo que está dentro da tag <body> para implementar somente as linhas de código referente a tela que iremos construir. Crie outras duas páginas .jsp na raiz da pasta WebContent, acessonegado.jsp e acessoliberado.jsp. Ou renomeie as páginas cabeçalho.jps e rodapé.jsp.
Na página acessoliberado implemente a tag de título com uma mensagem de boas-vindas ao usuário.
<h3>Seja bem-vindo(a) ao sistema em JSP</h3>
E na página acessanegado.jsp informe ao usuário que seu acesso ao sistema foi negado.
<h3>Seu acesso ao sistema foi negado</h3>
Em ambas as páginas já teremos implementada a tag de ação jsp: setProperty, onde o asterisco define todos os valores da solicitação de entrada do objeto bean. Desse modo, na classe “BeanCursoJsp” defina os atributos login e senha e gere para eles os métodos getters and setters.
MÉTODO DE VALIDAÇÃO DE SENHA
Ainda na classe BeanCursoJsp criaremos um método de validação de senha que receberá duas strings, login e senha respectivamente. Assim, se login e senha fornecidos forem iguais ao cadastrado a senha será validade, se não o acesso será bloqueado.
CRIANDO A SERVLET
E agora sim, criaremos a servlet, antes, porém, para manter a organização crie dentro da pasta src o package servlet. E então clique com o botão direito sobre o package servlet >> New >> Servlet, onde em Class name, você definirá o nome da classe.
Se preferir apague os comentários, para diminuir o tamanho do código, e até mesmo para deixá-lo mais legível. E assim teremos o escopo de uma servlet, que de forma bem simples intercepta dados e nos fornece a resposta.
IMPORTANTE: no tutorial anterior falamos que a classe servlet deveria ser criada em um arquivo web.xml dentro da pasta WEB-INF. Entretanto, observe que logo acima da assinatura da classe tem uma anotação. É ela que possibilita a criação da servlet fora do contexto do arquivo web.xml.
@WebServlet(“/LoginServlet”)
Note que a classe estende a HttpServlet, uma interface para fornecer informações de solicitação para servlets HTTP. E implementa o método doPost que cumpre a função de enviar os dados do formulário para serem processados para o recurso especificado. E também o doGet, utilizado em uma requisição que não altera o estado do servidor, ou seja, é utilizado sempre em consultas.
Considere então um formulário, em action onde é informado o nome da URL ou o caminho para qual o conteúdo do formulário será submetido, informe o nome da classe. Dessa forma o formulário irá procurar pela servlet.
Assim, se o método de envio não estiver declarado o método invocado será o doGet. Por outro lado, se o post estiver declarado então o doPost será invocado. Porém, é comum que na servlet dentro do doGet o doPost seja chamado.
doPost(request, response);
FORMULÁRIO
Implemente o formulário, com type=”text” para login e senha e type=”submit” para o botão cujo valor é “Logar”. E como o método de envio que estamos utilizando é o post. Na servlet dentro do doPost, implementaremos o código que fará a requisição do login e senha, e capturar os dados que estamos recebendo. Antes, porém, é preciso instanciar o objeto BeanCursoJsp.
BeanCursoJsp beanCursoJsp = new BeanCursoJsp();
String login = request.getParameter("login");
String senha = request.getParamenter("senha");
E por fim, escreva uma condição de validação deste login e senha. Assim, se login e senha informados forem correspondentes aos dados definidos na implementação do método validarLoginSenha, true será retornado, E assi o acesso ao sistema será liberado, do contrário o acesso será negado.
A liberação do acesso se dará por meio do RequestDispatcher que define um objeto que recebe solicitações do cliente e as envia para qualquer recurso (como um servlet, arquivo HTML ou arquivo JSP) no servidor.
requestDispatcher dispatcher = request.getRequestDispatcher("acessoliberado.jsp");
Assim o objeto dispatcher precisa invocar o forward que deve ser chamado antes que a resposta seja confirmada para o cliente. Ele encaminha um pedido de servlet para outro recurso (servlet, arquivo JSP ou arquivo HTML) no servidor. Esse método permite que um servlet faça o processamento preliminar de uma solicitação e outro recurso para gerar a resposta.
dispatcher.forward(request, response);
Todavia, se os dados não forem correspondentes e o acesso for negado o mesmo procedimento deverá ser executado, porém, sendo direcionado para uma página distinta.
EM POUCAS PALAVRAS
E com isso temos um exemplo, simples, prático e eficiente do uso do request e response. O que aprendemos neste tutorial é uma importante parte do que deve fazer parte do seu arsenal de conhecimento, portanto, não avance com dúvidas, refaça esta aula, pratique e solidifique seu conhecimento. Eu fico por aqui e nós nos vemos no próximo tutorial.