Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvida sobre o entendimento do código

Vi que foi criado uma classe no pacote ação Login, e LoginForm(chama o jsp) e temos um JSP formLogin. Poderia me explicar em que parte do código que o professor apresentou, no momento em que fazemso o login de usuario e senha, automaticamente vamos para a tela de Lista Empresas, por que eu percebi que precisou da classe LoginForm para chamar o jsp, e depois que é executa o jsp om o login e senha, em que parte do códio é direcionado a página para a Lista de empresas? Com o usuario logado sabe. Eu não compreendi esse caminho

1 resposta
solução!

Oie Diogo, tudo bem contigo?

O fluxo funciona da seguinte forma:

LoginForm.java -> formLogin.jsp -> Login.java -> ListaEmpresas.java -> listaEmpresas.jsp

Os códigos importantes para o funcionamento desse fluxo são:

formLogin.jsp -> Login.java

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<c:url value="/entrada" var="linkServletNovaEmpresa" />

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>



<body>


    <form action="${linkServletNovaEmpresa}" method="post">

        Login: <input type="text" name="login" /> Senha: <input
            type="password" name="senha"> <input type="submit" /> <input
            type="hidden" name="acao" value="Login"> // aqui é definido o valor do parametro "acao", que nesse caso é Login. A partir dessa linha o nosso sistema saberá encaminhar o fluxo para a classe "Login".


    </form>


</body>
</html>

Login.java -> ListaEmpresas.java

package br.com.alura.gerenciador.acao;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import br.com.alura.gerenciador.modelo.Banco;
import br.com.alura.gerenciador.modelo.Usuario;

public class Login extends Acao{

    @Override
    public String executa(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String login = request.getParameter("login");
        String senha = request.getParameter("senha");    

        System.out.println("Logando " + login);
        System.out.println(senha);

        Banco banco = new Banco();
        Usuario usuario = banco.existeUsuario(login, senha);

        if(usuario != null) {
            System.out.println("Usuario existe");
            HttpSession sessao = request.getSession();
            sessao.setAttribute("usuarioLogado", usuario);
            return "redirect:ListaEmpresas";  // indica para o "UnicoEntradaServlet.java" que queremos direcionar a requisição para a classe "ListaEmpresas.java"
        } else {
            return "redirect:LoginForm";
        }
    }
}

ListaEmpresas.java -> listaEmpresas.jsp

package br.com.alura.gerenciador.acao;

import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import br.com.alura.gerenciador.modelo.Banco;
import br.com.alura.gerenciador.modelo.Empresa;

public class ListaEmpresas extends Acao{

    public String executa(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("acao listando empresa");
        Banco banco = new Banco();
        List<Empresa> lista = banco.getEmpresas();
        request.setAttribute("empresas", lista);
        return "forward:listaEmpresas.jsp"; // indica para o "UnicoEntradaServlet.java" que queremos direcionar a requisição para o jsp "listaEmpresas.jsp"
    }
}

Espero que eu tenha te ajudado, se tiver qualquer outra dúvida fico a disposição :)

Bons estudos!