【问题标题】:Will session.invalidate() remove the attribute set to the session?session.invalidate() 会删除会话设置的属性吗?
【发布时间】:2011-09-20 12:05:27
【问题描述】:

如果我在请求中设置了属性值,然后我调用session.invalidate(),属性值会发生什么?他们还会在那里吗?

【问题讨论】:

    标签: jsp servlets


    【解决方案1】:

    它们仍会在内存中,但它们不再被有问题的HttpSession 引用。 IE。 HttpSession 不再无法访问了。

    一旦垃圾收集器运行并且这些对象没有任何其他类/实例的任何其他引用,那么它们最终将被销毁并释放内存。

    【讨论】:

      【解决方案2】:

      请求和会话是两个不同的东西。请求中设置的属性将可用,直到您为请求提供服务。完成后,所有值都将消失。

      会话中的属性将一直存在,直到会话过期或您显式调用无效。其中任何一个都将终止当前会话并在下一次请求时创建一个新会话。

      【讨论】:

      • 好的,谢谢。请让我知道 Sesssion 对象将具有以下正确的会话 id、哈希码、有效会话。如果我们调用 session.invalidate() 是否会进行会话为 null 还是只是将有效会话标志更改为 false?非常感谢!!!!!!!!!!!!!!!
      • session.invalidate() 将清除会话中的所有内容。什么都不会留下。从下一个请求中,您将获得具有不同 ID 的新会话对象。如果客户端还不知道会话或者客户端选择不加入会话,session.isNew() 方法将返回“true”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2013-08-04
      • 2014-06-16
      相关资源
      最近更新 更多