JSP 中的 Cookie 示例

⚡ 智能摘要

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

  • 🍪 定义: JSP Cookies 是存储在客户端设备上的键值文本文件,每次后续的 HTTP 调用都会通过请求对象读取这些文件。
  • 🔐 安全标志: 设置 Secure、HttpOnly 和现代 SameSite 属性可以保护 JSP Cookie 免受拦截、脚本访问和跨站请求伪造。
  • ⏱️ 终身控制权: setMaxAge 方法决定 JSP Cookie 是持久保存在磁盘上,还是在浏览器会话结束时自动删除。
  • 标准 API: javax.servlet.http.Cookie 类及其 response.addCookie 和 request.getCookies 涵盖了 Servlet 4.x 和 5.x 中的创建、传输、检索和删除。
  • 🧪 示例: 一个两页的用户名和电子邮件演示展示了如何创建、发送 JSP Cookie,使其保持 10 小时,并在下一个请求中读取。

JSP 中的 Cookie 示例

什么是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 的类型

  1. 持久性 Cookie: 持久性 JSP Cookie 会在设备上保留 setMaxAge 设置的时间。它可以帮助应用程序在浏览器重启后记住用户的偏好设置和登录信息。
  2. 非持久性 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 推车。

  1. 使用 Cookie 构造函数创建 JSP Cookie 对象。
  2. 配置 cookie 属性,特别是最大有效期、路径和安全标志。
  3. 使用 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。

输出

执行上述代码后,您将得到以下输出。

JSP Cookies 方法

JSP Cookies 方法

当 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 可以确保在不同浏览器中的行为一致。

常见问题

JSP Cookie 是存储在客户端浏览器上的小型文本文件。JSP 页面使用它们来管理会话。 tracking 能够记住用户偏好、支持登录状态,并为同一 Web 应用程序的多个 HTTP 请求提供分析支持。

将 cookie 标记为 HttpOnly,使脚本无法读取它们;调用 setSecure(true),使它们只能通过 HTTPS 传输;并将 SameSite 属性配置为 Lax 或 Strict,以降低现代浏览器中跨站请求伪造的风险。

创建一个同名同路径的新 Cookie,将其值设置为空字符串,调用 setMaxAge(0) 方法,然后使用 response.addCookie 将其添加到响应中。浏览器随后会立即删除匹配的已存储 Cookie。

持久性 JSP Cookie 具有正的最大有效期,并会一直存储在磁盘上直到过期。会话 Cookie 具有负的最大有效期,仅存在于浏览器内存中,并在浏览器窗口关闭时被删除。

人工智能驱动的分析可以实时评估 Cookie 流量,标记被盗的会话标识符,检测异常的地理位置跳跃,并触发更高级别的身份验证。机器学习模型还可以根据观察到的攻击模式,帮助调整 SameSite、HttpOnly 和 Secure 策略。

是的。AI 助手可以扫描旧版 JSP 和 Servlet 代码,将 Servlet 5.x 中的 javax.servlet.http.Cookie 调用重写为 jakarta.servlet.http.Cookie,添加 SameSite 和 HttpOnly 标志,并在不破坏现有应用程序逻辑的情况下,建议更安全地存储会话标识符。

总结一下这篇文章: