【问题标题】:How to delete the cookies when the tomcat server shuts down?Tomcat服务器关闭时如何删除cookies?
【发布时间】:2014-07-08 15:27:19
【问题描述】:

我想使用 jsp 和 java 存储 cookie,我想要的是 cookie 应该只存储到 tomcat 服务器运行时,并且一旦 tomcat 服务器关闭它就会过期。我知道 cookie 依赖于浏览器并且不依赖于服务器,所以我该怎么做?有什么办法可以做到这一点?
附言我是 cookie 部分的新手,所以不太了解。

【问题讨论】:

  • 你不能。就如此容易。但是,一旦服务器重新启动并且带有这样一个旧 cookie 的新请求进来,没有什么可以阻止您忽略或删除旧 cookie。你想达到什么目的?你为什么不使用会话,它的行为就像我刚才描述的那样?
  • 您是否手动关闭了tomcat,否则它可能会因某些内部错误而停止工作?
  • P.S.如果您对 cookie 不熟悉,那么您先研究它们怎么样。这就是你学习新知识的方式,而不仅仅是在 stackoverflow 上提问。
  • 您绝对无法控制断开连接的网络浏览器在服务器关闭时存储 cookie 的操作。
  • @JackMoore 都可能是关闭的原因......我的意思是我只对关闭 tomcat 感兴趣,而不是它的原因......

标签: java jsp tomcat cookies


【解决方案1】:

Cookies 存储在客户端,可以删除

  1. 通过调用 API
  2. 会话结束时自动
  3. cookie 过期时自动执行。

重新启动容器(在您的情况下为 tomcat)时,不会自动删除 Cooke。这很好。试想一下,每次 Google 执行一些维护时,所有用户都必须重新进行身份验证。顺便说一句,这就是为什么我认为你走错路了。

但无论如何,问题是如何解决问题。 答案是最简单的方法是使用会话cookie。当会话被删除时,此类 cookie 将被删除,当

  • 会话已过期
  • 容器已重新启动。 (但是为了安全起见,当tomcat关闭时,在您再次启动它之前删除位于您的tomcat主目录下的工作目录的内容。这是因为tomcat保持会话以便在重新启动后可以连接到同一个会话。)李>

如果这些解决方案对您有好处,那就去做吧。

如果没有,您可以通过编程方式进行管理。每次启动您的应用程序时,都会创建某种 ID。例如,这可能是服务器启动时间。将此开始时间保存在客户端的 cookie 中。该 cookie 将随每个用户请求(连同所有其他 cookie)一起发送到服务器。将此 ID 与存储在服务器端的 ID 进行比较,如果这些 ID 不相等,则使所有 cookie 无效。

这是可能的,将完全按照您的解释工作,但同样:我相信您遇到了架构问题。尝试在您解释您的要求(而不是 cokies 等 - 功能要求)时提出其他问题,建议您的设计并询问如何改进它的建议。

【讨论】:

    【解决方案2】:

    没有。但是,您可以使用会话存储您认为需要存储在 Cookie 中的任何内容。当服务器停止时,会话就会消失,除非你做一些事情来持久化它们。

    【讨论】:

    • 当服务器停止或用户退出应用程序时会话消失?
    • 当任何一种情况发生时。两者都会导致会话消失。
    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 2012-06-21
    • 2017-07-17
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多