1

I have a logout servlet that doesn't seem to work. After I go to /logout page it does redirect back to /home, however the user's first and last name as well as the Logout button are still present:

Before logout:

enter image description here

After logout:

enter image description here

LogoutServlet.java:

public class LogoutServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request,
                          HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response)
            throws ServletException, IOException {
        try {
            HttpSession session = request.getSession(false);
            if (session != null) {
                session.removeAttribute("user");
                session.invalidate();
            }

            response.sendRedirect(request.getContextPath() +
                    "/home");
        }
        catch (Exception e)  {
            e.printStackTrace();
        }
    }
}

header.jsp:

<%@ page import="comediansapp.entities.main.User" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<div class = "header-container">
    <div class = "header">
        <%if(session.getAttribute("user") == null){%>

        <div class = "header-buttons">
            <a href="${pageContext.request.contextPath}/login">Login</a>
            <a href="${pageContext.request.contextPath}/signup">Signup</a>
        </div>

        <%
        } else {%>

        <div class="user-email">
            <%
                User user = (User) session.getAttribute("user");
                out.println(user.getFirstname() + " " +
                                user.getLastname());
            %>
        </div>

        <div class="button logout-button">
            Logout
        </div>

        <%
            }
        %>

    </div>
</div>

home.jsp:


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<jsp:include page="../shared/header.jsp" />

</body>
</html>
parsecer
  • 4,758
  • 13
  • 71
  • 140
  • I think this is coming from cache of your browser ,clear it and check onces .Also ,open new tab and see if still session is coming because your code seems ok . – Swati Apr 01 '20 at 12:13
  • @Swati Opening a new tab didn't help ; ( – parsecer Apr 01 '20 at 13:41
  • Check [this](https://stackoverflow.com/questions/27516425/jsp-servlet-session-invalidate-does-not-make-session-null) as well [this](https://stackoverflow.com/questions/11337785/how-to-clear-browser-cache-programmatically-in-jsp) hope this will solve your problem – Swati Apr 01 '20 at 13:48

1 Answers1

0

I forgot to put

@WebServlet("/logout")

on top of the LogoutServlet class.

parsecer
  • 4,758
  • 13
  • 71
  • 140