【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了, 就可以进行后续的操作了
相关推荐
WaaTong1 分钟前
Java反射
java·开发语言·反射
九圣残炎34 分钟前
【从零开始的LeetCode-算法】1456. 定长子串中元音的最大数目
java·算法·leetcode
wclass-zhengge36 分钟前
Netty篇(入门编程)
java·linux·服务器
Re.不晚1 小时前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
雷神乐乐1 小时前
Maven学习——创建Maven的Java和Web工程,并运行在Tomcat上
java·maven
码农派大星。1 小时前
Spring Boot 配置文件
java·spring boot·后端
顾北川_野1 小时前
Android 手机设备的OEM-unlock解锁 和 adb push文件
android·java
江深竹静,一苇以航1 小时前
springboot3项目整合Mybatis-plus启动项目报错:Invalid bean definition with name ‘xxxMapper‘
java·spring boot
confiself2 小时前
大模型系列——LLAMA-O1 复刻代码解读
java·开发语言
Wlq04152 小时前
J2EE平台
java·java-ee