代码之家  ›  专栏  ›  技术社区  ›  danny.lesnik

关闭浏览器时会话丢失

  •  8
  • danny.lesnik  · 技术社区  · 15 年前

    我设置了会话超时。

     <session-config>
    <session-timeout>11520</session-timeout>
    

    </session-config>

    每次当我关闭浏览器并通过调用servlet再次打开它时,我都会看到创建了新的会话。每次重新打开浏览器时,都可以从httpsessionListener中执行的sessionCreated方法中看到。

    我在Tomcat/Java中是新手,但如果我在ASP.NET环境中工作,我会在它周围工作,设置与会话名称相同的Cookie。

    在Tomcat中解决这个问题的最佳实践是什么?

    提前谢谢。

    丹尼。

    2 回复  |  直到 13 年前
        1
  •  9
  •   BalusC    15 年前

    每次当我关闭浏览器并通过调用servlet再次打开它时,我都会看到创建了新的会话。

    这符合规定的行为。会话cookie没有年龄,因此只要客户端打开Webbrowser实例,或者客户端没有访问网站的时间(如 session-timeout 在服务器端设置。

    你基本上想要一个比会话cookie寿命更长的cookie。你可以用 Cookie API,使用 Cookie#setMaxAge() ,将其添加到HTTP响应中,使用 HttpServletResponse#addCookie() . 在随后的HTTP请求上,可以使用 HttpServletRequest#getCookies() .

    顺便说一下,这不是Tomcat特有的。您可以对每个其他servletcontainer执行相同的操作。

        2
  •  11
  •   Community Mohan Dere    9 年前

    我发现了 in a similar question ,现在servlet 3.0支持:

    <session-config>
      <session-timeout>11520</session-timeout>
      <cookie-config>
        <max-age>11520</max-age>
      </cookie-config>
    </session-config>
    

    (有点晚了,但我希望这对其他人也有用)