Índice
Toda web dinâmica envia e recebe parâmetros que são a forma como o usuário pode enviar informações ao servidor Http. Por exemplo, em uma tela de login típica, precisamos enviar o nome de usuário e a senha ao servidor para validá-lo.Como o navegador envia esses parâmetros usando o método GET ou POST é explicado no tutorial do Servidor Web ou Servidor HTTP. O que veremos neste tutorial é como recuperar informações de login no servidor usando a API Servlet.
A primeira coisa que faremos é criar uma página login.html em nosso site com o seguinte conteúdo:
Do utilizador | |
Chave |
O próximo passo é criar um Servlet que receba a solicitação em / login, que é o endereço indicado no atributo action da tag login.html.
package com.login.servlets; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginServlet estende HttpServlet {@Override protected void doGet (HttpServletRequest req, HttpServletResponse resp) lança ServletException, IOException {String user = req.getParameter ("usuário"); String pass = req.getParameter ("senha"); if ("login" .equals (usuário) && "login" .equals (pass)) {resposta (resp, "login ok"); } else {resposta (resp, "Erro de login"); }} resposta vazia privada (HttpServletResponse resp, String msg) lança IOException {PrintWriter out = resp.getWriter (); out.println (""); out.println (""); out.println ("" + msg + ""); out.println (""); out.println (""); }}
Nós compilamos isso Servlet e nós incluímos LoginServlet.class No livro de endereços / WEB-INF / classes.
Modificamos o web.xml para vincular / fazer login com este Servlet.
login-servlet com.login.servlets.LoginServlet login-servlet / login
Reiniciamos o servidor, abrimos a página login.html, colocamos um x no usuário, um x na senha e clicamos no botão enviar.
O problema aqui é que a senha secreta é visível no URL… / login? Usuário = admin & senha = atx123, ela permanecerá no histórico do navegador e qualquer pessoa que acessar o navegador depois de nós pode obtê-la facilmente, a menos que usemos a navegação privada ou pode ser corrigido alterando o método de envio do formulário para POST em login.html.
Do utilizador | |
Chave |
O que acontece aqui é que não implementamos o método doPost (apenas implementamos doGet), portanto, nosso Servlet não é capaz de receber solicitações POST. O código a seguir mostra a modificação necessária para fazê-lo funcionar.
package com.login.servlets; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginServlet estende HttpServlet {@Override protected void doPost (HttpServletRequest req, HttpServletResponse resp) lança ServletException, IOException {String user = req.getParameter ("usuário"); String pass = req.getParameter ("chave"); if ("admin" .equals (usuário) && "atx123" .equals (pass)) {resposta (resp, "login ok"); } else {resposta (resp, "Erro de login"); }} resposta vazia privada (HttpServletResponse resp, String msg) lança IOException {PrintWriter out = resp.getWriter (); out.println (""); out.println (""); out.println ("" + msg + ""); out.println (""); out.println (""); }}
A única mudança é que substituí doGet por doPost. Depois de recompilar e implantar o Servlet, reiniciar o servidor e usar login.html novamente, ele funcionará normalmente.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo