JSP 中的 Cookie 示例
⚡ 智能摘要
JSP Cookie 是存储在客户端浏览器上的小型文本文件,有助于 JSP 应用程序的运行。 trac使用 javax.servlet.http.Cookie API 和标准响应标头,可以管理 k 个会话、记住用户偏好并跨多个 HTTP 请求个性化响应。

什么是JSP Cookie?
JSP Cookie 是基于 JSP 的 Web 服务器请求客户端浏览器存储在用户设备上的小型文本文件。由于 HTTP 是一个无状态协议,JSP Cookie 提供了一种简单且基于标准的方式来记住请求之间的信息,例如登录状态、语言选择、主题或商店信息。ping 购物车标识符。
- JSP Cookies 是浏览器存储在客户端计算机上的纯文本文件。
- 他们习惯于 trac用于会话管理、个性化和分析的 k 信息。
- JSP 通过底层 Servlet 技术和 javax.servlet.http.Cookie 类支持 HTTP cookie。
- JSP Cookie 是 transmit在每个匹配的请求中,将 ted 包含在 HTTP 请求和响应标头中。
- 当浏览器配置为接受 cookie 时,它会将 cookie 存储在磁盘上,直到 setMaxAge 设置的过期日期为止。
为什么要使用 JSP Cookies?
JSP开发者依赖cookie,因为HTTP请求彼此独立。如果没有JSP cookies,服务器就无法知道两个请求是否来自同一个访问者。JSP cookies以最小的服务器端状态变更解决了这个问题。
- 时间 trac国王: JSESSIONID cookie 将多个页面浏览连接到一个逻辑会话。
- 个性化: JSP Cookies 可以存储语言、主题或布局偏好设置。
- 身份验证辅助函数: 记住我令牌和登录状态通常存储在启用了 HttpOnly 和 Secure 标志的 cookie 中。
- 统计分析: JSP 中的 Cookie 会记录回头客、引荐来源和转化路径。
JSP Cookie 的类型
- 持久性 Cookie: 持久性 JSP Cookie 会在设备上保留 setMaxAge 设置的时间。它可以帮助应用程序在浏览器重启后记住用户的偏好设置和登录信息。
- 非持久性 Cookie: 非持久性 JSP Cookie(也称为会话 Cookie)仅存在于浏览器内存中,并在用户关闭浏览器时被删除。它主要用于短生命周期会话。 trac王。
JSP Cookies 方法
javax.servlet.http.Cookie 类公开了以下在处理 JSP Cookies 时最常用的方法。
-
public void setDomain(String domain)
此 JSP 设置 cookie 方法设置 JSP Cookie 适用的域。
-
public String getDomain()
此 JSP 获取 cookie 方法返回 JSP Cookie 适用的域。
-
public void setMaxAge(int expiry)
它设置 JSP Cookie 过期的最长时间(以秒为单位)。值为零时,Cookie 将被删除;值为负数时,Cookie 将成为会话 Cookie。
-
public int getMaxAge()
它返回 JSP Cookie 的最大有效时间(以秒为单位)。
-
public String getName()
它返回 JSP Cookie 的名称。
-
public void setValue(String value)
设置与 JSP Cookie 关联的值。
-
public String getValue()
返回与 JSP Cookie 关联的值。
-
public void setPath(String path)
此 JSP 方法中的 set cookie 设置 URL cookie 适用的路径。
-
public String getPath()
它返回 URL JSP Cookie 适用的路径。
-
public void setSecure(boolean flag)
它会对 JSP Cookie 进行标记,使其仅通过加密的 HTTPS 连接发送。
-
public void setComment(String cmt)
它描述了 JSP Cookie 的用途。
-
public String getComment()
它返回描述 JSP Cookie 的注释。
如何处理 JSP Cookie
使用 JSP Cookies 涉及三个可重复的步骤。登录状态、主题切换和商店都使用相同的模式。ping 推车。
- 使用 Cookie 构造函数创建 JSP Cookie 对象。
- 配置 cookie 属性,特别是最大有效期、路径和安全标志。
- 使用 response.addCookie 通过 HTTP 响应头将 cookie 发送到浏览器。
如何创建 JSP Cookie
通过实例化 javax.servlet.http.Cookie 并为其指定名称和值来创建一个新的 JSP Cookie。然后,该 Cookie 会被附加到响应对象中,以便浏览器将其存储。
如何读取 JSP Cookie
在后续的每个请求中,浏览器都会将匹配的 JSP Cookie 发送回服务器。页面通过调用 request.getCookies 来读取这些 Cookie,该方法返回一个 Cookie 对象数组。然后,应用程序遍历该数组,按名称查找每个 Cookie,并使用其值。
如何删除 JSP Cookie
要删除 JSP Cookie,服务器会创建一个同名的新 Cookie,将其值设置为空字符串,调用 setMaxAge 函数并传入零值,然后将其添加到响应中。浏览器会在下一个响应中移除已存储的 Cookie。
JSP 中的 Cookie 示例
在这个 JSP Cookies 示例中,应用程序创建了两个 cookie,分别用于用户名和电子邮件,并将它们保留 10 个小时,然后在名为 action_cookie_main.jsp 的第二个页面上读取这些值。
动作_cookie.jsp
<%-- Action_cookie.jsp: input form for JSP Cookies demo --%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Cookie</title> </head> <body> <form action="action_cookie_main.jsp" method="GET"> Username: <input type="text" name="username"> <br /> Email: <input type="text" name="email" /> <input type="submit" value="Submit" /> </form> </body> </html>
动作_cookie_main.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <% Cookie username = new Cookie("username", request.getParameter("username")); Cookie email = new Cookie("email", request.getParameter("email")); username.setMaxAge(60*60*10); email.setMaxAge(60*60*10); // Add both the JSP Cookies in the response header. response.addCookie( username ); response.addCookie( email ); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Cookie JSP</title> </head> <body> <b>Username:</b> <%= request.getParameter("username")%> <b>Email:</b> <%= request.getParameter("email")%> </body> </html>
的解释 Code
动作_cookie.jsp
Code 第10至15行: 该页面声明了一个表单,该表单将提交至 action_cookie_main.jsp。表单包含两个输入字段:用户名和电子邮件,用于收集用户数据,并配有一个提交按钮。
动作_cookie_main.jsp
Code 第6至9行: 使用 request.getParameter 读取表单提交的值,创建两个 Cookie 对象:username 和 email。
Code 第12至13行: 调用 setMaxAge 方法时,传入 60 乘以 60 乘以 10,这将每个 JSP Cookie 的生命周期设置为 10 小时。
Code 第16至17行: 这两个 cookie 通过 response.addCookie 添加到响应中。浏览器随后会在后续请求中将它们发送回服务器,服务器则使用 request.getCookies 或 request.getParameter 读取当前请求中的 cookie。
输出
执行上述代码后,您将得到以下输出。
当 action_cookie.jsp 执行时,浏览器会显示用户名和邮箱两个字段。用户填写完毕并点击“提交”后,action_cookie_main.jsp 会在服务器端创建对应的 JSP Cookie,将其存储在客户端,并显示 Cookie 的值,确认 Cookie 已成功创建。
JSP Cookie 最佳实践
现代 Web 应用程序应将 JSP Cookie 视为安全敏感数据。以下实践符合当前的 Servlet 4.x 和 Servlet 5.x 部署规范。
- 使用 HttpOnly: 将身份验证 cookie 标记为 HttpOnly,以防止客户端脚本读取它们。
- 使用安全措施: 通过调用 setSecure(true) 仅通过 HTTPS 发送 cookie。
- 使用 SameSite: 通过容器或响应标头配置 SameSite 属性(宽松或严格),以缓解跨站请求伪造。
- 数值要小: 在 cookie 中存储标识符,并将数据保存在服务器端存储中。
- 设置明确的过期时间: 使用 setMaxAge 可以确保在不同浏览器中的行为一致。


