Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Continuo indo pra lista mesmo sem logar

Não consigo fazer com que redirecione pro formulário quando tento acessar o ListaEmpresas sem ter logado antes. Simplesmente consigo acessar.

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 implements Acao {

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

    HttpSession sessao = request.getSession();
    if(sessao.getAttribute("usuarioLogado") == null) {
        return "redirect:entrada?acao=LoginForm";
    }
    Banco banco = new Banco();
    List<Empresa> lista = banco.getEmpresas();

    request.setAttribute("empresas", lista);



    return "forward:listaEmpresas.jsp";
}

}

8 respostas

Oi Tadeu, verifica se a sessão está mesmo null, as vezes por conta do cache fica preenchida e não entra no if

Fala Guilherme. Tá desse jeito ai mesmo que te falei.. Ou era alguma informação que vc gostaria que eu verificasse e eu não entendi?

Tadeu

coloca um

System.out.println(sessao.getAttribute("usuarioLogado"));

antes do if. Pode ser que esteja chegando algo diferente de null nesse ponto.

Jefferson, o retorno para o ListaEmpresas fica dando erro no meu return. Pedindo pra eu colocar o método service em String ou tirar o endereço do return.. Não to sabendo como resolver isso pra jogar o seu "sysout" pra testarmos.. Pode me ajudar nisso? Olha como tá essa parte do meu código.

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    HttpSession sessao = request.getSession();
    if(sessao.getAttribute("usuarioLogado") == null) {
         return "redirect:entrada?acao=ListaEmpresas";
    }

Tadeu, o código do post anterior pertence a qual classe ??

UnicaEntradaServlet

solução!

Tadeu

o servlet UnicaEntradaServlet não pode ter esse return ai não. O retorno com forward ou redirect é sempre no executa() das implementações de Acao, como na ListaEmpresas.

Nessa aula de HttpSession, esse servlet ja tem uma série de implementações novas que foram feitas nas aulas anteriores. Nesse servlet, só funciona mesmo o forward com o RequestDispatcher.

De uma olhada nas aulas anteriores, parece que você pulou alguma aula.

Muito obrigado, Jefferson ! Vou dar uma olhada nisso !