跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Java Web 会话管理:Cookie 实战详解

综述由AI生成Java Web 会话管理依赖 Cookie 解决 HTTP 无状态问题。通过 Servlet API 的 HttpServletResponse 和 HttpServletRequest 接口,开发者可在客户端存储少量数据以实现状态保持。代码演示了 Cookie 的创建、读取与删除流程,重点在于设置有效期与路径。需警惕 Cookie 容量限制及安全性风险,敏感数据应加密或采用服务端 Session 配合。

CryptoLab发布于 2016/1/15更新于 2026/6/1218 浏览
Java Web 会话管理:Cookie 实战详解

会话与状态

HTTP 协议天生无状态,服务器没法天然认出连续请求是不是同一个用户。这就引出了会话管理的必要性。简单说,从你打开浏览器到关掉,这一连串操作算一次会话。期间产生的数据,比如登录状态、购物车,服务器得想办法存下来。

Cookie 机制原理

Cookie 就是服务器发给客户端的一小段文本。浏览器收到后存起来,下次再访问时自动带回去。靠这个,服务器就能认出来你是谁了。

Java Servlet 中的实现

在 Java Web 里,主要用 javax.servlet.http.Cookie 类来搞定。

设置 Cookie

登录成功后,把 Cookie 塞进响应头就行。

// 建个 Cookie 对象
Cookie cookie = new Cookie("username", "admin");
// 设有效期,单位秒,这里给 1 小时
cookie.setMaxAge(3600);
// 设路径,默认当前应用根路径
cookie.setPath("/");
// 写入响应
response.addCookie(cookie);

实际开发中要注意,别把敏感信息明文存进 Cookie。

读取 Cookie

每次请求过来,从请求头里把 Cookie 数组取出来。

Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for (Cookie cookie : cookies) {
        if ("username".equals(cookie.getName())) {
            String value = cookie.getValue();
            // 接着处理
        }
    }
}

要是没拿到,要么没登录,要么过期了。

删除 Cookie

删 Cookie 其实就是发个同名的,把有效期设成 0。

Cookie cookie = new Cookie("username", null);
cookie.setMaxAge(0);
cookie.setPath("/");
response.addCookie(cookie);

注意事项

Cookie 虽好用,但也有局限。一来容量小,单个一般不超过 4KB;二来不安全,容易被改,密码这种绝对不能放;三来用户能禁掉 Cookie,光靠它做关键逻辑不靠谱。高安全场景下,建议配合 Session 一起用。

目录

  1. 会话与状态
  2. Cookie 机制原理
  3. Java Servlet 中的实现
  4. 设置 Cookie
  5. 读取 Cookie
  6. 删除 Cookie
  7. 注意事项
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • MixAIHub:主流 AI 模型聚合访问平台
  • 纯 CSS 实现简洁名片卡片设计实战
  • ONLYOFFICE AI 功能详解与使用指南
  • 前端国际化实战:i18next 与 react-intl 使用指南
  • OpenClaw 架构原理与落地实战:AI Agent 执行网关底层逻辑
  • 基于 Java 与高德地图的县域烟花销售点 GIS 盘点实践
  • 什么是 llama.cpp:本地高效运行大语言模型的核心框架
  • 手搓简易 Linux 进程池:基于管道实现任务分发
  • RabbitMQ 常见工作模式及发布确认实现
  • Web Components 核心原理与实战指南
  • GPT-4o 多模态能力深度解析与应用前景
  • C++ 网络版斗地主多人在线游戏开发实战
  • 前端 WebSocket 实时通信实战:替代轮询方案
  • AI 提示词核心方法论:从无效提问到精准输出
  • Windows WSL Ubuntu 环境安装配置 Conda 指南
  • 玩客云边缘 AI 模型本地部署:llama.cpp 与 Qwen
  • FPGA 面试题目汇总含解析
  • LLaMA-Factory 统一框架实现大模型高效微调
  • 本地部署 Stable Diffusion 3.5 教程
  • 前端地图 SDK 集成指南:高德百度腾讯 Google Maps 初始化与配置

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online