会话与会话管理:Cookie与Session的深度解析

一、什么是会话?

二、Cookie:客户端存储技术

[1. Cookie的工作原理](#1. Cookie的工作原理)

2、在后端设置cookie

3、在前端设置cookie

三、浏览器开启了cookie禁用怎么办?


一、什么是会话?

**会话(Session)**是指一个用户与服务器之间的一系列交互过程。从用户第一次访问服务器开始,到用户关闭浏览器结束,这个过程称为一个会话。会话管理的目标是让服务器能够"记住"用户的身份和之前的操作,从而实现有状态的交互。

会话分为两种类型:

  1. 有状态会话(Stateful Session) :服务器主动维护用户的会话状态信息(如用户登录状态、操作记录等),并将其存储在服务端。类似于"服务员记住你的喜好"。

  2. 无状态会话(Stateless Session) :服务器不存储用户状态信息,所有状态由客户端自行管理(如通过URL参数或客户端存储)。类似于"服务员不会记住你"。

由于HTTP协议本身是无状态的,需要借助CookieSession技术实现会话管理

会话管理:像http这种不会保存会话状态的需要 借助其他方法来帮助保存会话状态,让服务器能够"记住"用户的身份和之前的操作。cookie客户端技术【把状态存在客户端】、session服务端技术【把状态存在服务端】

二、Cookie:客户端存储技术

1. Cookie的工作原理

cookie由服务器创建,【所有第一次访问没有信息】然后通过响应发送给客户端,发送到用户浏览器并保存到本地的一块信息。他会在浏览器下次发起请求时携带并发送到服务器上

2、在后端设置cookie

① test: 创建一个设置co okie的服务器后端 SetCookie

查看cookie:

设置值:

设置cookie后任一请求都能携带cookie信息 :

② 获取cookie:创建一个GetCookie的服务器后端

后端输出

3、在前端设置cookie

++cookie作为一个客户端技术,在前端页面利用js技术也可以设置获取++

设置:

获取:

也可以使用jquery操作:jQuery Cookie 插件 | 菜鸟教程----👍

这里我是本地引入的

**获取所有cookie:**console.log($.cookie(''))

可以直接获取某个cookie console.log($.cookie('account'))

java 复制代码
 //删除某个cookie
 $.removeCookie('color');

**三、**Session:服务端的会话管理技术

1、Session的工作原理

Session是一种存储在服务器端的技术。服务器会为每个用户创建一个Session,并将Session ID存储在Cookie中发送给客户端。客户端在每次请求时会携带Session ID,服务器通过Session ID来识别用户。

2、服务器后端设置session----只能在后端设置,前端设置不了

可以看到JSESSIONID----每次访问都会更新

服务器后端获取session

删除session

输出就没有名字了

销毁session

三、浏览器开启了cookie禁用怎么办?

如果浏览器开启了cookie禁用,就彻底不能用cookie了,session也不能正常使用,但是session可以挽救一下:

在 session 这个地方,重写 URL,借助重定向直接跳到 get session。

相关推荐
掉鱼的猫1 分钟前
跳出 Fatjar 的束缚:Solon 插件的体外扩展(E-Spi)与热插拔(H-Spi)
java
Bill FANG34 分钟前
从原生Java NIO到Netty重构:充电桩Socket服务端高性能改造实战
java·重构·nio
2601_9557594135 分钟前
Claude API 成本审计:该看哪些指标,怎么分析更靠谱
java
带刺的坐椅44 分钟前
跳出 Fatjar 的束缚:Solon 插件的体外扩展(E-Spi)与热插拔(H-Spi)
java·jar·solon·plugin·fatjar
宁之明起(B服)1 小时前
Java 反序列化漏洞-xmldecoder/SnakeYAM
java·开发语言
禾高网络1 小时前
开启环保新潮流:回收小程序系统功能介绍
java·大数据·小程序
deviant-ART1 小时前
java stream 的 findFirst 及 findAny 方法遇到 null 元素时会出现 NullPointerException
java·开发语言
jjjava2.02 小时前
MyBatis动态if/trim/where/set标签详解
java·开发语言·数据库
gugucoding2 小时前
34.【Java】I/O流(下):NIO与文件操作
java·python·nio
tianyu2342 小时前
双指针循环匹配金额——打款记录与账单的自动对账算法
java·算法·双指针循环·匹配金额