【问题标题】:Java,Tomcat,Sessions - JSessionId disappearsJava,Tomcat,Sessions - JSessionId 消失
【发布时间】:2010-04-01 21:06:40
【问题描述】:

我在使用 java 会话时遇到问题。

我正在开发一个简单的网络应用程序,我必须在其中使用会话和会话属性。在我关闭浏览器之前一切都很好。当我关闭浏览器时,JSessionId 消失了。 这是我的代码:

request.getSession().setMaxInactiveInterval(30*60); //it's 30 minutes
request.getSession().setAttribute("someinteger", 10);

它工作得很好,但是当我关闭浏览器并重新打开它时,我找不到 jsessionId(在我关闭浏览器之前,我可以在“localhost”部分找到它)。奇怪的是我仍然可以找到“someinteger”cookie。问题是什么?我做错了什么?

我也在用这个:link text,它显示 JSESSIONID cookie 过期:“SESSION”,“someinteger”在 30 分钟后过期

提前致谢。

【问题讨论】:

    标签: java session tomcat


    【解决方案1】:

    会话 cookie 不会在浏览器重新启动后持续存在。因此,当您重新打开浏览器时,JSESSIONID cookie 将不存在。

    【讨论】:

    • 澄清一下:request.getSession().setMaxInactiveInterval(30*60);设置服务器端超时,不影响 jsessionId 的 cookie 超时
    【解决方案2】:

    其实原因是web.xml中定义的会话超时可能还是设置为默认值:

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

    如果浏览器已配置为(默认情况下全部执行),则会话 cookie 将在浏览器重新启动后持续存在。带有 JSESSIONID 的 cookie 对浏览器来说并不是一个特殊的 cookie,它只是另一个 cookie。

    如果您查看 cookie,您可以看到它何时设置为过期。 Cookie 过期和持久性与会话超时无关。除了 cookie 是连接浏览器和视觉的东西。

    如果 cookie 或会话丢失,则会话实际上丢失。

    【讨论】:

      猜你喜欢
      • 2016-07-17
      • 2012-02-13
      • 1970-01-01
      • 2014-01-05
      • 2015-01-09
      • 1970-01-01
      • 2014-08-24
      • 2011-08-04
      • 2021-10-10
      相关资源
      最近更新 更多