【问题标题】:Creating and loading cookies in Java在 Java 中创建和加载 cookie
【发布时间】:2011-06-11 15:35:46
【问题描述】:

我正在用 Java 编写一个小型网络服务器,使用 HttpCore 处理大多数 Http 请求/响应等。
现在我希望能够创建、存储和加载 cookie。我在HttpCore 中找不到任何东西,而且我对其他库也不是很熟悉。是否有现有的库(最好有工作示例)来处理 cookie?

编辑:我知道我对 cookie 的使用有点困惑。我不完全确定它是如何工作的,但我想保持一个会话,并从 Web 服务器访问会话变量。我怎样才能做到这一点?如果浏览器保存了 cookie,它是否会将它们发送到服务器?我如何访问它们?

【问题讨论】:

  • 我希望你已经阅读了"What HttpCore is NOT"。除非被告知,否则服务器本身不会创建、加载和存储 cookie。您需要为您的服务器构建一个 API,该 API 将由开发人员调用(例如)。如果需要帮助,请查看 Tomcat 的底层工作原理。
  • 好吧,那么我很感激你指点我处理 cookie 的库的方向。
  • 我已经编辑了我的评论。看一下 servlet 容器,这是了解其工作原理的最简单方法。避免查看 HttpClient 以获取场景的客户端视图。

标签: java http cookies apache-httpcomponents


【解决方案1】:

服务器中的会话支持通常使用对象存储构建。一个简单的对象存储将是一个 Map 或一个 Set。此存储中的对象(Map 中的值)具有与逻辑会话概念的一对一映射,即对于服务器创建的每个会话,存储中将有一个项目。

由商店管理的会话可能允许属性与它们相关联。此类属性的列表可能事先不知道,因此您需要另一张地图来实现此目的;键是属性名称,值是属性值。

就会话存储的管理而言,当对您的服务器进行 API 调用时,您需要在存储中创建一个新会话。简而言之,如果 Web 应用程序决定它需要创建会话,则服务器的 API 必须提供必要的接口来执行此操作。单独创建会话对象是不够的;首次创建会话时,您还需要将会话 ID 作为 cookie 写出。 API 必须允许在这种情况下编写适当的响应。您可能想查看 Servlet API,特别是 HttpServletRequest 和 HttpSession 类,以及为此目的的 servlet 容器实现。

关于从请求中访问 c​​ookie 的主题,您需要解析传入的 HTTP 请求标头以检查浏览器发送的任何 cookie。为此,浏览器和其他 HTTP 客户端应使用 Set-Cookie 请求标头。您需要确保只有在请求中提供了有效的 cookie 时才能将会话对象返回给 Web 应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多