Java Web,会话是自动设置的

时间:2019-05-31 05:25:11

标签: java session servlets jsessionid

我正在尝试在Java Web项目中创建一个登录过滤器。问题是,当我调用request.getSession(false)时,返回的会话对象不为null,换句话说,该会话处于活动状态。但是我确定我没有在代码的任何其他地方调用getSession()。 即使我删除了此过滤器,它也不起作用。如果打开浏览器开发工具,则在“网络”选项卡中,它将显示一个jsessionid集。会话是自动设置的吗?

1 个答案:

答案 0 :(得分:0)

如果您想跟踪“登录用户”,那么我想您正在寻找的是使用HttpSession进行跟踪,如下所示:

{
  "data": {
    "opt1": {
      "id": "1"
    },
    "opt2": {
      "id": "1"
    }
  }
}

只要需要,Ypu可以从会话中检索它,

HttpSession session = request.getSession();
session.setAttribute("loggedInUser", userObject);

然后,当用户需要“注销”时,请从会话中清除存储的用户:

Object loggedInUser = session.getAttribute("loggedInUser");

要在评论session.removeAttribute("loggedInUser"); 中回答您的问题:HttpSession表示与特定客户端的对话,因此可以识别并正确处理来自同一客户端的后续请求。它根本不表示“登录用户”,这是域中的特定要求-并非所有服务都需要身份验证。

最后,如果您需要有关何时创建JSESSIONID cookie的更多详细信息,请阅读this question