什么是Java中的会话管理?

时间:2010-06-18 05:28:32

标签: java jsp session servlets session-management

我也在面试中遇到过这个问题。我对Session Scope& amp;它在java中的管理。

在web.xml中我们有条目:

<session-config>
        <session-timeout>
            30
        </session-timeout>
</session-config>

它实际上是什么意思?是整个项目的范围吗?

令我困惑的另一点是,我们如何在同一个项目中分离多个请求的会话范围?意味着我是否从PC和PC登录在我从另一台PC登录的同时,它有区别吗?

另外,另一个令人困惑的事情是浏览器的不同之处。为什么不同的Gmails可以在不同的浏览器中打开? Gmail可以阻止会话从登录退出。如何通过我们的个人网络维护?

6 个答案:

答案 0 :(得分:26)

会话管理不仅限于Java和servlet。以下是它的大致情况:

  1. HTTP协议是无状态的,因此服务器和浏览器应该有一种通过多个请求存储用户身份的方式
  2. 浏览器将第一个请求发送到服务器
  3. 服务器检查浏览器是否已使用会话cookie识别(见下文)

    3.1。如果服务器“不知道”客户端:

    • 服务器创建一个新的唯一标识符,并将其作为密钥放在Map(粗略地)中,其值为新创建的Session。它还会发送包含唯一标识符的cookie响应。

    • 浏览器存储会话cookie(生命周期=浏览器实例的生命周期),包含唯一标识符,并将其用于每个后续请求以唯一标识自己。

    3.2。如果服务器已经知道客户端 - 服务器获得与会话cookie中找到的传递的唯一标识符相对应的会话

  4. 现在提出一些问题:

    • 会话超时是未被访问的每个会话映射条目的生存时间。换句话说,如果客户端没有发送30分钟的请求(来自您的示例),会话映射将删除此条目,即使客户端使用会话cookie中的唯一键标识自己,也不会出现任何数据在服务器上。

    • 可以在不同的浏览器中打开不同的gmails(以及任何网站),因为会话cookie是每个浏览器。即每个浏览器通过不发送唯一会话ID或通过发送服务器为其生成的一个来唯一地标识自己。

    • 从不同的PC进行日志记录实际上是相同的 - 您不共享会话ID

    • 注销实际上是删除了服务器上会话ID的条目。

    注意:也可以存储唯一的会话ID:

答案 1 :(得分:2)

  

它实际上是什么意思?

会话的生命周期。如果客户端和服务器之间没有事务处理30分钟(根据代码段)

,则会话到期
  

是整个项目的范围吗?

它有适用范围。为每个Web应用程序定义

  

令我困惑的另一点是怎么可能   我们将会话范围分开   同一个项目中有多个请求?   意味着我是否从PC和PC登录   在我登录的同时   另一台PC,它有区别吗?

是。会话ID(Apache Tomcat的JSESSIONID)将有所不同。

  

另外,另一个令人困惑的事情是   浏览器差异。为什么呢   可以打开不同的Gmails   不同的浏览器?

来自不同浏览器的同一用户的每次登录都是完全不同的会话。在一个浏览器中设置的cookie不会影响另一个浏览器。因此,在不同的浏览器中可以使用不同的Gmail实例。

  

Gmail可以阻止会话   登录退出。它是如何维护的   用我们的个人网络?

Persistent cookies

答案 2 :(得分:0)

Java中的Servlet有一个HttpSession对象,可用于存储用户的状态信息。会话由客户端通过cookie(JSESSIONID)管理,或者可以使用URL重写来完成。会话超时描述服务器在删除存储在HttpSession中的状态信息之前在最后一个请求之后等待的时间。

范围是每个浏览器实例,因此在示例中,您从两个不同的PC登录将导致两个会话对象。

答案 3 :(得分:0)

如果你在不同的窗口中打开相同的应用程序,我的意思是多个浏览器实例,它将为每个实例创建不同的会话。

答案 4 :(得分:0)

我建议Apache Shiro进行会话管理,身份验证和授权。

我把它拿回来。

正如@BalusC所述,只有servlet容器负责管理http会话。 Shiro正在使用它。它将通过您明确定义的过滤器挂钩到HttpSession。

答案 5 :(得分:0)

我们有4种方法来管理会话。

1.Cookies 2.URL重写 3.隐藏的表格字段 4.HTTP会议

第四个是强大的,现在大部分时间都在使用。