【问题标题】:Logout servlet doesn't work: first last name and logout button are still visible after logout注销 servlet 不起作用:注销后仍然可以看到名字和注销按钮
【发布时间】:2020-07-13 03:50:14
【问题描述】:

我有一个似乎不起作用的注销 servlet。在我转到/logout 页面后,它确实重定向回/home,但是用户的名字和姓氏以及注销按钮仍然存在:

注销前:

注销后:

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>

【问题讨论】:

  • 我认为这是来自您浏览器的缓存,清除它并检查一次。另外,打开新标签,看看是否还有会话,因为您的代码似乎没问题。
  • @Swati 打开一个新标签没有帮助; (
  • 检查this 以及this 希望这能解决您的问题

标签: java jsp session servlets


【解决方案1】:

忘记放了

@WebServlet("/logout")

LogoutServlet 类之上。

【讨论】:

    猜你喜欢
    • 2020-02-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 2014-06-23
    • 2017-02-19
    • 2021-11-21
    • 2012-11-05
    相关资源
    最近更新 更多