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?
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.