Quando eu dou Logout, estando ou não logado, ele me envia a mensagem do html, eu tentei alguns tratamentos para ele exibir outra mensagem caso não estivesse logado porém nada funcionou, o motivo é por estar usando Session?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Quando eu dou Logout, estando ou não logado, ele me envia a mensagem do html, eu tentei alguns tratamentos para ele exibir outra mensagem caso não estivesse logado porém nada funcionou, o motivo é por estar usando Session?
Oi Carlos, não necessariamente, a session funciona independente de você está logado ou não. Pra gente saber o por que de não ter funcionado, precisamos ver o código do que você fez.
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
if (req.getSession() != null) {
req.getSession().removeAttribute("usuario.logado");
RequestDispatcher dispatcher = req
.getRequestDispatcher("/WEB-INF/paginas/logout.html");
dispatcher.forward(req, resp);
} else {
PrintWriter writer = resp.getWriter();
writer.println("<Deslogado>");
}
}
}
Carlos, o problema é o req.getSession(), o método getSession funciona da seguinte forma: retorna a sessão associada a requisição, se não houver uma, ele cria uma nova.
Então, o if nunca vai ser false, por que ele sempre vai ter uma sessão disponível.
Você precisa verificar o atributo diretamente. Um exemplo seria:
if (req.getAttribute("usuario.logado") != null) {
//...
}
Ai sim, se o atributo não existir, ele vai retornar null.