HttpSession(会话类)

HttpSession对象表示一个用户会话。用户会话中包含了当前用户的相关信息,这些信息可以被同一个会话中多个HTTP请求访问。

当用户第一次进入某个站点时,将为该用户提供唯一ID来标识这次会话。这个ID通常存储在cookie或URL参数中。

下面示例是访问会话对象:

protected void doPost(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {

    HttpSession session = request.getSession();
}

可以在会话对象中存储信息:

session.setAttribute("userName", "老吴");

这段代码设置一个名为“userName”的属性,其值为“老吴”。

读取该值:

String userName = (String) session.getAttribute("userName");

会话对象中的值保存在servlet容器的内存中。

session和集群

如果你的站点有多台服务器,存储在某个服务器的会话对象中的值,在另外一台服务器中不能访问,如果用户请求在多个服务器之间平均分配(负载均衡),这会导致丢失会话。

这个问题的解决办法是:
– 不使用会话,无状态,如使用json web token
– 集中处理session,单点登录机制

进一步了解,可参考相关资料。



浙ICP备17015664号-1 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载