HttpSession

时间:2020-01-09 10:36:22  来源:igfitidea点击:

HttpSession对象代表一个用户会话。用户会话包含有关多个HTTP请求的用户信息。

当用户首次进入网站时,会为该用户提供唯一的ID来标识其会话依据。此ID通常存储在cookie或者请求参数中。

这是我们访问会话对象的方式:

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

    HttpSession session = request.getSession();
}

我们可以将值存储在会话对象中,并在以后检索它们。首先,让我们看看如何在会话对象中存储值:

session.setAttribute("userName", "theUserName");

这段代码设置了一个名为" userName"的属性,其值为" theUserName"。

要再次读取该值,请执行以下操作:

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

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

会话和集群

如果体系结构在群集中具有2个Web服务器,请记住,存储在一个服务器的会话对象中的值可能在另一服务器的会话对象中不可用。因此,如果用户的请求在两个服务器之间平均分配,则有时会话值可能会丢失。

解决该问题的方法之一是:

  • 不要使用会话属性。
  • 使用会话数据库,将会话属性写入其中,并从中读取会话属性。
  • 使用粘性会话,在整个会话期间始终将用户发送到同一服务器。