【JavaEE】cookie和session

cookie和session

  • cookie
    • [什么是 cookie](#什么是 cookie)
    • [Servlet 中使用 cookie相应的API](#Servlet 中使用 cookie相应的API)
  • [Servlet 中使用 session 相应的 API](#Servlet 中使用 session 相应的 API)
  • [代码示例: 实现用户登陆](#代码示例: 实现用户登陆)
  • [Cookie 和 Session 的区别](#Cookie 和 Session 的区别)
  • 总结
  1. cookie的数据从哪里来?
    • 服务器返回给浏览器的
  2. cookie的数据长什么样?
    • cookie 中是键值对结构的数据, 并且这里的键值对都是程序员自己定义的
  3. cookie的作用是什么?
    • cookie就可以在浏览器这边存储一些 "临时性的数据"
    • 其中最典型的一种使用方式, 就是用来存储 "身份标识" -- sessionID
  4. cookie 到哪里去?
    • cookie的内容会在下次访问该网站的时候, 自动被带到HTTP请求中
  5. cookie 怎么存?
    • 浏览器按照不同的"域名" 分别存储 cookie
    • 域名和域名之间的cookie是不能干扰的
    • cookie 存储在硬盘上的
    • cookie存储往往会有一个超时时间

Servlet 中使用 cookie相应的API



使用示例


Servlet 中使用 session 相应的 API


代码示例: 实现用户登陆

login.html

IndexServlet

LoginServlet


代码获取仓库

  • Cookie 是客户端的机制. Session 是服务器端的机制.
  • Cookie 和 Session 经常会在一起配合使用. 但是不是必须配合.
    • 完全可以用 Cookie 来保存一些数据在客户端. 这些数据不一定是用户身份信息, 也不一定是token / sessionId
    • Session 中的 token / sessionId 也不需要非得通过 Cookie / Set-Cookie 传递.

总结

  • cookie是客户端的机制, session是服务端的机制;
  • 在第一次登录的时候, 用户输入账号和密码发送服务端, 服务器此时读取HTTP请求中的cookie中的字段, 发现此时的请求没有cookie字段, 服务器就会为这个新的用户创建新的session, 建立起sessionID和session对象的联系, 并将sessionID作为Set-cookie字段填充响应HTTP, 最后将HTTP返回给客户端;
  • 客户端的游览器收到服务器的响应HTTP报文, 从中解析出来Set-cookie字段, 并将其内容保存在cookie文件中, 下次如果客户端再次访问该服务器, 浏览器就会将该域名中的cookie内容提取出来, 作为cookie字段的内容, 作为HTTP中header, 向服务器发送请求HTTP报文;
  • 此时服务器收到请求HTTP, 从cookie字段中提取到sessionID, 这样就可以找到已有的session了, 就可以进行后续的操作了
相关推荐
日月云棠19 小时前
JAVA数据结构与算法 - 基础:常用集合简述
java·算法
噢,我明白了19 小时前
MyBatis-Plus的引入和配置
java·tomcat·mybatis
日月云棠19 小时前
JAVA数据结构与算法 - 基础:BlockingQueue
java·算法
哪吒编程19 小时前
GPT 5.5 Thinking深度思考了十几分钟,给我挖了一个排查一周的并发大坑
java
likerhood19 小时前
设计模式 · 享元模式(Flyweight Pattern)java
java·设计模式·享元模式
Royzst19 小时前
图书管理案例
java·开发语言
带刺的坐椅19 小时前
SolonCode v2026.5.21 发布,Web 能看项目,IM 能找队友
java·ai编程·数字员工·soloncode·终端智能体
dunky19 小时前
副本机制与 ISR 设计:为什么 Kafka 这么快又这么可靠
java
夕除19 小时前
spring boot 9
java·mysql·spring
执明wa20 小时前
从 T 到协变逆变
java·开发语言·数据结构