gpt4 book ai didi

java - 如何在Servlet中完全消失session?

转载 作者:太空宇宙 更新时间:2023-11-04 13:24:39 25 4
gpt4 key购买 nike

我有两个 JSP 页面:登录和索引和三个 Servlet:LoginServlet、LogoutServlet、Profile。现在我只想在 session 中有内容时查看我的个人资料。在LoginServlet的post()中我编写了属性设置的逻辑,在LogoutServlet的get()中我调用了invalidate()方法来删除 session 。现在,当我直接进入个人资料网址而不调用登录页面时,如果执行 Profile.class block 而不是执行其他内容,而 session.getAttribute("name") 中没有任何内容。

Profile的获取方法:

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
req.getRequestDispatcher("link.jsp").include(req, resp);
HttpSession session = req.getSession(false);
if (session != null) {
System.out.println("Session is not null");
out.print("Hello " + session.getAttribute("name"));
} else {
out.print("Please login");
req.getRequestDispatcher("Login.jsp").include(req, resp);
}
out.close();
}

我需要做一些额外的事情才能完全消失 session 吗?

最佳答案

在登录类中使用类似:

if (isValidUser(userName, userPass)) {
request.getSession(true);
request.getSession.setAttribute("isLogged", true);
}

在 LogoutServlet 类中使用以下代码:

protected void doPost(HttpServletRequest request, ....

request.getSession().invalidate(); // Vanish session completely
....

在 Profile 类中验证用户是否已登录,请使用以下内容:

if ((Boolean) request.getSession.getAttribute("isLogged") != null) {
... // user is logged
} else
redirectToIndexPage();

关于java - 如何在Servlet中完全消失session?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32785475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com