【发布时间】:2017-09-22 04:22:29
【问题描述】:
作为 web 开发的新手,我需要一些帮助来理解 javax.servlet.http.Cookie 和 javax.ws.rs.core.Cookie 之间的区别。我假设后者可用于设置 cookie进入休息服务的响应。但是我们也可以将初始 Cookie 对象设置到 HTTPServletResponse 中吗?
【问题讨论】:
标签: cookies
作为 web 开发的新手,我需要一些帮助来理解 javax.servlet.http.Cookie 和 javax.ws.rs.core.Cookie 之间的区别。我假设后者可用于设置 cookie进入休息服务的响应。但是我们也可以将初始 Cookie 对象设置到 HTTPServletResponse 中吗?
【问题讨论】:
标签: cookies
这些对象代表相同的底层实体,即 RFC 定义的 HTTP cookie。两者都“做”同样的事情,表示 HTTP 响应中的 cookie 标头(请求 cookie 只是名称=值对,而响应 cookie 可以有几个附加属性,如 RFC 中所述)。你在哪里使用一个与另一个只是你编码的问题。如果您正在编写 JAX-RS 提供程序,那么 JAX-RS api 将使用 javax.ws.core.Cookie。如果您正在编写一个 HttpServlet,那么您将使用 javax.servlet.http.Cookie。 JAX-RS 实现还将允许您使用上下文注入,以便您可以直接访问 JAX-RS 服务提供者中的 HttpServlet 对象
【讨论】:
javax.servlet.http.Cookie 使用addCookie 方法创建并放置在 HTTP 响应对象上。
相反,javax.ws.core.Cookie 的描述为:
表示在请求中传输的 HTTP cookie 的值
...所以您希望 HTTP 请求对象上的 getCookies 方法返回一个该类型 cookie 的数组,但不,它返回一个 javax.servlet.http.Cookie 数组。显然javax.ws.core.Cookie 被一些methods in the javax.ws.rs packages 使用。因此,您将 javax.ws.core.Cookie 与 jax-rs Web 服务一起使用,将 javax.servlet.http.Cookie 与 HttpServlets 及其请求/响应对象一起使用。
【讨论】: