Servlet 中的 Cookies

2025 年 3 月 24 日 | 阅读 3 分钟

cookie 是一小段信息,它在多个客户端请求之间保持不变。

cookie 有一个名称、一个值和可选属性,例如注释、路径和域限定符、最大生存时间和版本号。


Cookie 的工作原理

默认情况下,每个请求都被视为一个新请求。在 cookie 技术中,我们将 cookie 添加到 servlet 的响应中。因此,cookie 存储在浏览器的缓存中。之后,如果用户发送请求,则默认情况下 cookie 会添加到请求中。因此,我们将用户识别为旧用户。

cookies in servlet

Cookie 的类型

Servlet 中有 2 种类型的 cookie。

  1. 非持久 cookie
  2. 持久 cookie

非持久 cookie

仅对单个会话有效。每次用户关闭浏览器时,它都会被删除。

持久 cookie

对多个会话有效。 每次用户关闭浏览器时,它都不会被删除。只有在用户注销或退出时才会删除它。


Cookie 的优点

  1. 维护状态的最简单技术。
  2. Cookie 在客户端维护。

Cookie 的缺点

  1. 如果从浏览器禁用 cookie,它将不起作用。
  2. 只有文本信息可以设置在 Cookie 对象中。

注意:Gmail 使用 cookie 技术进行登录。 如果你禁用 cookie,gmail 将无法工作。


Cookie 类

javax.servlet.http.Cookie 类提供了使用 cookie 的功能。 它为 cookie 提供了许多有用的方法。

Cookie 类的构造函数

构造函数描述
Cookie()构造一个 cookie。
Cookie(String name, String value)构造具有指定名称和值的 cookie。

Cookie 类的有用方法

下面给出了一些常用的 Cookie 类的方法。

方法描述
public void setMaxAge(int expiry)设置 cookie 的最大生存时间(以秒为单位)。
public String getName()返回 cookie 的名称。 创建后无法更改名称。
public String getValue()返回 cookie 的值。
public void setName(String name)更改 cookie 的名称。
public void setValue(String value)更改 cookie 的值。

使用 Cookie 所需的其他方法

为了添加 cookie 或从 cookie 中获取值,我们需要其他接口提供的一些方法。 它们是
  1. public void addCookie(Cookie ck): HttpServletResponse 接口的方法用于在响应对象中添加 cookie。
  2. public Cookie[] getCookies(): HttpServletRequest 接口的方法用于返回浏览器中的所有 cookie。

如何创建 Cookie?

让我们看看创建 cookie 的简单代码。


如何删除 Cookie?

让我们看看删除 cookie 的简单代码。 它主要用于注销或退出用户。


如何获取 Cookie?

让我们看看获取所有 cookie 的简单代码。


Servlet Cookies 的简单示例

在此示例中,我们将用户的名称存储在 cookie 对象中,并在另一个 servlet 中访问它。 众所周知,会话对应于特定用户。 因此,如果您从具有不同值的太多浏览器访问它,您将获得不同的值。

cookies in session tracking

index.html

FirstServlet.java

SecondServlet.java

web.xml

输出

servlet cookie servlet cookies servlet cookies example