【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了, 就可以进行后续的操作了
相关推荐
毕设源码-钟学长4 小时前
【开题答辩全过程】以 基于SSM的孤儿救助信息管理系统设计与实现为例,包含答辩的问题和答案
java
独自破碎E4 小时前
【曼哈顿距离】BISHI25 最大 FST 距离
java·开发语言
苏涵.4 小时前
Java三大集合:List、Set、Map
java·开发语言
存在的五月雨4 小时前
Spring Security认证流程
java·开发语言·mysql
树码小子4 小时前
综合练习:验证码案例(1)总体设计
java·开发语言·spring
一嘴一个橘子4 小时前
idea 执行 Maven 的 `clean`、`install`、`package` 等命令报错
java
Sylvia-girl4 小时前
线程通讯~
java
MSTcheng.4 小时前
【C++】C++异常
java·数据库·c++·异常
大模型玩家七七5 小时前
基于语义切分 vs 基于结构切分的实际差异
java·开发语言·数据库·安全·batch