Olá, Nesse meu método executa da Class Login, eu direciono o cliente para "login.jsp" quando as regras que eu proponho são seguidas e "login-fail.jsp" quando não são. Só fiz isso, porque não consegui fazer exatamente o que eu queria que era repetir a tela de login com mensagens diferentes. Gostaria de saber se esta é uma boa prática ou se seria melhor alterar a mensagem na tela de login? Obrigado.
Class Login =======================================
package br.com.alura.gerenciador.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import br.com.alura.gerenciador.Usuario;
import br.com.alura.gerenciador.dao.UsuarioDAO;
public class Login implements Tarefa{
@Override
public String executa(HttpServletRequest req,
HttpServletResponse resp) {
String email = req.getParameter("email");
String senha = req.getParameter("senha");
Usuario usuario = new UsuarioDAO().buscaPorEmailESenha(email, senha);
if(usuario == null) {
return "/WEB-INF/paginas/login-fail.jsp";
} else {
HttpSession session = req.getSession();
session.setAttribute("usuarioLogado", usuario);
System.out.println("<html><body>Usuário logado: " + email
+ "</body></html>");
return "/WEB-INF/paginas/login.jsp";
}
}
}
Página Index ==============================
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
Bem vindo ao nosso gerenciador de empresas!
<br />
<c:if test="${not empty usuarioLogado}">
Você está logado como ${usuarioLogado.email}<br />
</c:if>
<br />
<form action="FazTudo?tarefa=NovaEmpresa" method="post">
Nome: <input type="text" name="nome" /><br /> <input type="submit"
value="Enviar" />
</form>
Faça o seu login:
<br />
<form action="FazTudo?tarefa=Login" method="post">
Email: <input type="text" name="email" /><br /> Senha: <input
type="password" name="senha" /><br /> <input type="submit"
value="Login" />
</form>
<form action="FazTudo?tarefa=Logout" method="post">
<input type="submit" value="Logout" />
</form>
</body>
</html>
Class FazTudo =================================
package br.com.alura.gerenciador.web;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns = "/FazTudo")
public class FazTudo extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String tarefa = req.getParameter("tarefa");
if(tarefa == null) {
throw new IllegalArgumentException("Você esqueceu de passar a tarefa");
}
String nomeDaClasse = "br.com.alura.gerenciador.web." + tarefa;
try {
Class<?> tipo = Class.forName(nomeDaClasse);
Tarefa instancia = (Tarefa) tipo.newInstance();
String pagina = instancia.executa(req, resp);
RequestDispatcher requestDispatcher = req
.getRequestDispatcher(pagina);
requestDispatcher.forward(req, resp);
} catch (Exception e) {
throw new ServletException(e);
}
}
}