深入理解Cookie与Session

深入理解Cookie、Session、Token 深入浅出Cookie、Session、TokenCookie、Session、Token简介存在的意义CookieSessionCookie与Session的区别TokenSession与Token的区别验证流程HTTP Basic Auth验证流程Cookie机制的验证流程Token机制的验证流程Token机制相对于Cookie机制的好处OAuth&OAuth2.0结合Token(Acc... 阅读详情

1. 会话管理入门

1.1 生活中会话

我: 坤坤,你会打篮球吗?
坤坤: 当然会了,我可是咱们软件学院的篮球大使呢!
我:今年招新晚会你和壮壮一块上吧,你俩来个双簧
坤坤:没问题我最喜欢壮壮了!
我:很好,到时候安排小菊坐在前排给你俩打call♂
。。。。。。。。

在这次生活中的会话中产生通话记录(会话数据)

1.2 软件中的会话

一次会话: 打开浏览器 -> 访问一些服务器内容 -> 关闭浏览器

登录场景:
	打开浏览器 -> 浏览到登陆页面 -> 输入用户名和密码 -> 访问到用户主页(显示用户名)
														修改密码(输入原密码)
														 修改收货地址
														.......

	问题:在此处登录会话过程中产生的数据(用户会话数据)如何保存下来呢?

购物场景:
	 打开浏览器 -> 浏览商品列表  -> 加入购物车(把商品信息保存下来)  -> 关闭浏览器
	 打开浏览器->  直接进入购物车 -> 查看到上次加入购物车的商品 -> 下订单 -> 支付

	问题: 在购物会话过程中,如何保存商品信息??

会话管理: 管理浏览器客户端 和 服务器端之间会话过程中产生的会话数据。

域对象: 实现资源之间的数据共享。

request域对象
context域对象	
登录场景:
	小张: 输入“张三” (保存数据: context.setAttribute("name","张三")) -> 用户主页(显示“张三”)
	小李: 输入“李四”(保存数据:context.setAttribute("name","李四")) -> 	用户主页(显示“李四”)

			问题: context是所有用户公有的资源!!!会覆盖数据。

	小张: 输入“张三”(保存数据: request.setAttribute("name","张三"))- > 用户主页(显示“张三”)					问题: 一定要使用转发技术来跳转页面!!!

解决办法: 可以使用session域对象来保存会话数据!!!

1.3 会话技术

Cookie技术:会话数据保存在浏览器客户端。
Session技术:会话数据保存在服务器端。

2. Cooke技术

2.1 特点

会话数据保存在浏览器客户端。

2.2 Cookie技术核心

Cookie类:用于存储会话数据

  1. 构造Cookie对象
Cookie(java.lang.String name, java.lang.String value)
  1. 设置cookie
void setPath(java.lang.String uri)   :设置cookie的有效访问路径
void setMaxAge(int expiry) : 设置cookie的有效时间
void setValue(java.lang.String newValue) :设置cookie的值
  1. 发送cookie到浏览器端保存
void response.addCookie(Cookie cookie)  : 发送cookie
  1. 服务器接收cookie
Cookie[] request.getCookies()  : 接收cookie

2.3 Cookie原理

  1. 服务器创建cookie对象,把会话数据存储到cookie对象中。
    new Cookie(“name”,“value”);
  2. 服务器发送cookie信息到浏览器
    response.addCookie(cookie);
    举例: set-cookie: name=eric (隐藏发送了一个set-cookie名称的响应头)
  3. 浏览器得到服务器发送的cookie,然后保存在浏览器端。
  4. 浏览器在下次访问服务器时,会带着cookie信息
    举例: cookie: name=eric (隐藏带着一个叫cookie名称的请求头)
  5. 服务器接收到浏览器带来的cookie信息
    request.getCookies();

2.4 Cookie的细节

  1. void setPath(java.lang.String uri) :设置cookie的有效访问路径。有效路径指的是cookie的有效路径保存在哪里,那么浏览器在有效路径下访问服务器时就会带着cookie信息,否则不带cookie信息。

  2. void setMaxAge(int expiry) : 设置cookie的有效时间。
    正整数:表示cookie数据保存浏览器的缓存目录(硬盘中),数值表示保存的时间。
    负整数:表示cookie数据保存浏览器的内存中。浏览器关闭cookie就丢失了!!
    零:表示删除同名的cookie数据

  3. Cookie数据类型只能保存非中文字符串类型的。可以保存多个cookie,但是浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

3. Session技术

3.1 引入

Cookie的局限:

  1. Cookie只能存字符串类型。不能保存对象
  2. 只能存非中文。
  3. 1个Cookie的容量不超过4KB。

如果要保存非字符串,超过4kb内容,只能使用session技术!!!

Session特点:
会话数据保存在服务器端。(内存中)

3.2 Session技术核心

HttpSession类:用于保存会话数据

  1. 创建或得到session对象
    HttpSession getSession()
    HttpSession getSession(boolean create)
  2. 设置session对象
    void setMaxInactiveInterval(int interval) : 设置session的有效时间
    void invalidate() : 销毁session对象
    java.lang.String getId() : 得到session编号
  3. 保存会话数据到session对象
    void setAttribute(java.lang.String name, java.lang.Object value) : 保存数据
    java.lang.Object getAttribute(java.lang.String name) : 获取数据
    void removeAttribute(java.lang.String name) : 清除数据

3.3 Session原理

  问题: 服务器能够识别不同的浏览者!!!
  前提: 在哪个session域对象保存数据,就必须从哪个域对象取出!!!!
	浏览器1:(给s1分配一个唯一的标记:s001,把s001发送给浏览器)
			1)创建session对象,保存会话数据
					HttpSession session = request.getSession();   --保存会话数据 s1
	浏览器1	的新窗口(带着s001的标记到服务器查询,s001->s1,返回s1)	
			1)得到session对象的会话数据
				    HttpSession session = request.getSession();   --可以取出  s1

新的浏览器1:(没有带s001,不能返回s1)
		1)得到session对象的会话数据
			    HttpSession session = request.getSession();   --不可以取出  s2

浏览器2:(没有带s001,不能返回s1)
		1)得到session对象的会话数据
			    HttpSession session = request.getSession();  --不可以取出  s3


代码解读:HttpSession session = request.getSession();
	
1)第一次访问创建session对象,给session对象分配一个唯一的ID,叫JSESSIONID
		new HttpSession();
2)把JSESSIONID作为Cookie的值发送给浏览器保存
		Cookie cookie = new Cookie("JSESSIONID", sessionID);
		response.addCookie(cookie);
3)第二次访问的时候,浏览器带着JSESSIONID的cookie访问服务器
4)服务器得到JSESSIONID,在服务器的内存中搜索是否存放对应编号的session对象。
		if(找到){
			return map.get(sessionID);
		}
		Map<String,HttpSession>]
		<"s001", s1>
		<"s001,"s2>
5)如果找到对应编号的session对象,直接返回该对象
6)如果找不到对应编号的session对象,创建新的session对象,继续走1的流程

结论:通过JSESSION的cookie值在服务器找session对象!!!!!

3.4 Sesson细节

  1. java.lang.String getId() : 得到session编号
  2. 两个getSession方法:
// 创建或得到session对象。没有匹配的session编号,自动创建新的session对象。
getSession(true) / getSession() 
//得到session对象。没有匹配的session编号,返回null
getSession(false):              
  1. void setMaxInactiveInterval(int interval) : 设置session的有效时间

    session对象销毁时间:
    (1) 默认情况30分服务器自动回收
    (2) 修改session回收时间
    (3) 全局修改session有效时间

<!-- 修改session全局有效时间:分钟 -->
<session-config>
	<session-timeout>1</session-timeout>
</session-config>

(4)手动销毁session对象

void invalidate()  //销毁session对象
  1. 如何避免浏览器的JSESSIONID的cookie随着浏览器关闭而丢失的问题
/**
 * 手动发送一个硬盘保存的cookie给浏览器
 */
Cookie c = new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60);
response.addCookie(c);

4. 总结:

  1. 会话管理: 浏览器和服务器会话过程中的产生的会话数据的管理。

  2. Cookie技术:

new Cookie("name","value")
response.addCookie(coookie)
request.getCookies()
  1. Session技术
request.getSession();
setAttrbute("name","会话数据");
getAttribute("会话数据")
【详解】深入理解Cookie,Session会话,图解Session原理 双11就要来了,你准备好剁手了吗?现在我们思考一个问题:当你用电脑登陆淘宝网后,当你下次再打开淘宝网,你发现网页会记住你的用户名和密码,并且可以自动登陆。网页是怎么做到的呢?使用的技术是Cookie和Session。下面让我们一起研究Cookie和Session是怎么做到的。 初识Cookie,Session 做过Web开发的朋友们都应该知道,在开发过程中经常和Cookie,Session打交道。个人理解如下: Cookie,Session可以说都是容器,容器的存在具... 阅读详情

相关推荐

微信聊天记录丢失原因与恢复方案详解

SQLite数据库作为移动应用常见的本地存储方案,其加密机制和存储结构直接影响数据安全性。以微信为例,聊天记录存储在EnMicroMsg.db等SQLite文件中,采用AES加密保护。当手机清理工具误删这些文件时,会导致特定时间段记录丢失。理解数据恢复原理需要掌握文件系统删除机制和闪存特性,其中关键点包括TRIM指令的影响和数据块覆盖风险。通过专业工具如DiskDigger或iMyFone D-Back,配合ADB调试和SQLite数据重组技术,可在黄金时间窗口内恢复记录。日常维护建议结合自动化备份方案和存

weixin_32612263的博客 386

Cookie-2(通过用户登录来对比session与cookie的区别)

session 存用户信息 session.setAttribute("username",username); 取用户信息 session.getAttribute(name); 生命周期 服务端只要web应用重启就销毁,客户端只需浏览器关闭就销毁。 退出登录 //获取session销毁 HttpSession session = req.getSession(); //销毁session的方法 session.invalidate(); cookie 存用户信息 Cookie cookie = .

weixin_46218456的博客 400

智能车轮腿组‘定点排雷’科目全解析:从雷区识别到姿态控制

本文深入解析了智能车竞赛轮腿穿越组‘定点排雷’科目的核心技术。从构建鲁棒的视觉识别系统,到融合编码器与IMU进行厘米级定位,再到实现框内高精度旋转的姿态控制,提供了一套完整的从感知到执行的闭环技术方案,助力参赛队伍攻克这一高难度科目。

weixin_29161719的博客 639

cookie2

Cookie (二) 一、Cookie细节 1、一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。  2、一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。 3、浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小

xueshuangshuang123的专栏 1609

上网第二课:办了百兆宽带,为什么测速只有一半?

最慢的那一环。

qq_36765170的博客 106

别再手动盘点了!教你给微信小程序仓库系统加个‘扫码枪’:完整扫码入库与查询功能实现

本文详细介绍了如何为微信小程序仓库系统添加扫码入库与查询功能,实现零硬件成本的智能仓储管理。通过优化摄像头参数、增强动态识别算法和深度整合业务逻辑,提升扫码精度和效率,同时提供混合查询方案应对复杂场景。这套方案显著提升入库效率,降低错误率,适用于各类仓储管理需求。

weixin_30844577的博客 298

Session与Cookie2

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。 1.1  Cookie机制 在程序中,会话

hao_hl1314的博客 977

【从零开始学习 SystemVerilog】1.1、SystemVerilog 概述

【从零开始学习 SystemVerilog】1.1、SystemVerilog 概述

努力,加油每一天鸭~ 1037

会话 session 和 cookie(2)_cookie 和 cookie 的读取和写入

会话 session 和 cookie cookie 和 cookie 的读取和写入 **● 保存 Cookie 到客户端 ** 这是响应工作的一部分,所以这个方法是 response 对象的。并且 Cookie 是 HTTP 协议中的内容,所以保存 Cookie 是 HttpServletResponse 类的方法。 void addCookie(Cookie c):添加 Cookie 对象到...

魏宇轩 1079

Claude Code 分布式并行开发最佳实践:1中枢+10Worker跨多Git仓库全流程落地

本文介绍了一套基于Claude Code和Git Worktree的分布式并行开发方案,解决多仓库、微服务开发中的核心痛点。方案采用"1个决策中枢+10个并行Worker"架构,中枢负责任务拆解和调度,每个Worker绑定独立仓库实现完全隔离开发。关键优势包括:任务并行效率提升10倍、跨仓库依赖自动编排、版本统一管理、零第三方依赖。文章详细提供了环境准备、架构设计、中枢搭建和初始化脚本等全流程落地指南,特别适合多仓库协同的全栈开发场景。

AI天才研究院 243

真题库系列之 CCF GESP 2025年12月认证 Python 1级真题含正确答案与解析

学生通过计算机基础知识的学习,了解计算机的构成与操作,以及计算机的发 展历程。通过编程基础知识以及语句的掌握,可以独立完成简单功能的顺序结构、 分支结构、循环结构的程序。

iCloudEnd的博客 315

session依赖于cookie --- 深入理解cookie和session

https://blog.csdn.net/fairyhawk/article/details/7992732 session和cookie两种方法存储区别基本都很清楚了。 但是面试中问到客户端是怎么知道打开浏览器的时候是如何知道去取服务端那个session的? session的内容是存在服务端的。客服端怎么知道是取那个的呢? 看下session存储的执行过程: 当用户请求serv...

happylzs2008的专栏 5092

【NVIDIA GR00T N1 从入门到精通】第1章 环境搭建与基础配置 第2章 数据准备与格式转换

针对新型机器人形态的适配,需完成从硬件接口到数据模式的完整配置流程。创建modality_config.py文件自定义形态配置通过继承基类实现。配置类需实例化以下组件:状态模态定义(观测空间)、动作模态定义(动作空间)、相机模态定义(视觉输入)、可选的标注模态定义(语言指令或成功判定)。每个模态配置指定数据类型、形状、归一化统计量以及时序采样策略。状态模态配置状态配置的核心参数包括与。定义策略观测的历史时域窗口,对于高动态操作(如投掷、击打),需扩展历史窗口以捕捉运动趋势;

VectorShift的博客 95

深入理解cookie及session

http://www.xuebuyuan.com/zt/7306583.html

yinbucheng的博客 216

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

深入理解Session和Cookie的作用与联系

Session和Cookie是两个至关重要的概念,它们共同构成了用户与服务器之间的状态管理机制。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 6906

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

深入理解cookie和session

cookie和session在java web开发中扮演了十分重要的作用,本篇文章对其中的重要知识点做一些探究和总结。(转发自https://www.cnblogs.com/roy-blog/p/8250519.html) 1.cookie存在于浏览器 随意打开一个网址,用火狐的调试工具,随意选取一个链接,查看其请求头。你就会看到cookie的信息。如下图所示。 如上图所示,我们访问了新...

GarfieldEr007的专栏 787

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Session与Cookie深入理解

Session与Cookie深入理解 1.解释 会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话,常用的技术一般为Session与Cookie. Cookie通过在客户端记录信息确认用户的身份,Session通过在服务器端记录信息确定用户身份. 通俗的讲,当浏览网站时,Web服务器会先松一些资料在你的计算机上,Cookie会帮你在网站上所打的文字或是一些选择.都记录下来 当下次光

奔跑的蜗牛 594

深入理解Session和cookie原理

一、概述Session 与 Cookie 的作用都是为了保持访问用户与后端服务器的交互状态。它们有各自的优点,也有各自的缺陷,然而具有讽刺意味的是它们的优点和它们的使用场景又是矛盾的。例如,使用 Cookie 来传递信息时,随着 Cookie 个数的增多和访问量的增加,它占用的网络带宽也很大,试想假如 Cookie 占用 200 个字节,如果一天的 PV 有几亿,它要占用多少带宽?所以有大访问量的时

想作会飞的鱼的博客 8382

深入理解Session与Cookie

Session与Cookie可以说是面试中被问频率最高的两兄弟了,我是谁?我在哪?我在干什么?让我们带着这三个疑问去学习一下这两兄弟。 Session与Cookie的作用都是为了保持访问用户与后端服务器的交互状态。使用Cookie传递信息,随着Cookie数的增加占用的网络带宽增大;所以大访问量时需要使用Session,但是Session存在本地,又不容易在多个服务器共享。哎~该怎么权衡呢,接着往...

weixin_41676282的博客 292

深入理解java中的 Session 和 Cookie

在 Web 开发中,Session 和 Cookie 是两个重要的概念,它们在实现用户认证、状态管理等方面起到了关键作用。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 6905

深入理解 cookie,session,token

很多技术博客讲到 session,cookie 和 token 的区别和联系 ,但是介绍的不够清晰,因此参考了一些博客,在这里总结记录一下。 众所周知,HTTP 是一种无状态协议,即每次客户端发送请求时,对于服务端来说接收到的都是一个全新的请求,因此服务器并不知道客户端的历史请求记录。 比如不同的用户登录退出一个网站,每个人的会话状态都是不同的,所以网站需要对这些会话进行管理,而我们今天要讨论的 cookie,session, token 就是用来管理会话的手段。 1. cookie cookie 是什么

盛夏温暖流年 1096

深入理解Session和Cookie的区别

深入理解Session和Cookie的区别 转载自:深入理解Session和Cookie的区别 Cookie简介 Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。 目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。 由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。 怎...

nsjlive的博客 264

深入理解session和Cookie

Session和Cookie的作用都是为了保持访问用户与后端服务器的交互状态。 10.1 深入理解Cookie Cookie是一个用户通过HTTP访问一个服务器这个服务器会将一些key/value键值对返回给客户端浏览器,并加上一些限制条件,当条件符合时用户下次访问服务器时,数据又被完整待会服务器。 为了解决http是无状态的协议的问题,让服务器识别两次访问是同一个用户。 如果设置了ver

hughtw的专栏 617

深入理解Web开发中的Cookie和Session管理

Cookie是一小段存储在浏览器(客户端)的文本信息。它由服务器在HTTP响应的Set-Cookie头部中发送给浏览器,并被客户端保存,并在后续的HTTP请求中发送回服务器。通常情况下,它被用来跟踪用户的状态、记录用户的偏好和实现购物车等功能。Cookie通常包括:名字、值、过期时间、路径、域和安全/HttpOnly属性。

qq_55482652的博客 3125

深入理解session和cookie

深入理解session和cookie 1.他们本身只是HTTP的一个配置项 2.我们每次创建Cookie时是否都创建一个以NAME为set-cookie的MimeHeaders? 答案是肯定的。实质上,在构建HTTP返回字节流的时候讲Header中所有的项顺序的写出,而没有进行任何的修改,所以可以想象浏览器在接受HTTP返回的数据时是分别解析每一个Header项的。 分布式sesssion框架!!...

小胖的博客 302
上一篇: 详细分析Sevlet的生命周期与线程安全问题
下一篇: 深入理解Http协议
金心靖晨
博客等级 码龄9年 460粉丝 211原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值