Cookie和Session重新认识
1. 什么是会话?
会话简单地理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,
然后关闭浏览器,整个过程称为一个会话; 我们可以类比打电话挂电话,这个过程为
一次通话;是一个道理;
2. 会话过程中要解决的一些问题?
每个用户与服务器进行交互的过程中,每个用户都会产生自己的用户数据,这个时候
程序就要想办法保存每个用户的数据;javaWeb中保存用户数据的技术有两种:
cookie 和 session;我们举个例子说明:比如用户登录时会有用户名和密码信息,
1. 我们可以创建一个cookie对象,然后将用户名和密码信息保存到cookie对象中,然后
添加到response响应中,返回给浏览器,浏览器接收到cookie信息后,将cookie存储
到浏览器缓存或者磁盘上,这样用户信息就保存到了客户端,这种技术实现就是cookie;
我们看cookie的set方法 :
setCookie(name, value, expires, path, domain, secure)可以知道cookie对象可
以存储 key-value 信息,设置cookie 过期时间,作用范围,以及安全设置;
2. 我们也可以在服务器端创建一个session对象,session是一个域对象,本质上是一个
map结构,所以我们可以将我们的用户名和密码做成一个User对象,然后作为value存储到
这个map中,至于key,由服务器自动生成一个key作为session的key ,并且服务器会同时
创建一个cookie对象,并给这个cookie的 “键” 设置为 :JSessionID,
cookie的 “值” 设置为 session的key ,然后返回给浏览器,这样真正的 User 信息其实是
存储到服务器端的session中,而浏览器端只是存储了获得Session中User信息的key,这样
实现了用户信息在服务器端的存储;这就是session技术;
3. 类比理发店会员卡的例子;
我们理发店办理会员卡200块钱可以理发10次,理发店要统计你理发次数有两种方案:
1. 第一种是理发店会给你提供一张卡,每次你去理一次发,在结账时理发店的工作人员会
在你的卡上打一个孔,然后将卡交给你带走,这样这个卡上的孔的个数记录了你的理发次数
信息;你剩余的理发次数就是:20-卡上孔的个数;像这样你与理发店之间的交互信息,由
你来保存管理,每一次交互由你来提供这个信息;跟cookie技术是一致的;
2. 第二种是理发店会给你提供一张卡,这个卡上有一个卡号,然后理发店会在后台根据你这
个卡号建立一个记录,记录了你理发的次数,当然这个时候还可以记录其他附加信息,比如你
名字,你的性别等信息;而给你的会员卡上边除了一个卡号,并没有其他信息,每次你去理发
需要出示你的会员卡,然后工作人员会根据你的卡号查询你已经理发的次数与剩余理发次数,
并且每次在你理发结束,会在你的会员卡号对应的记录里边将你的理发次数加1,剩余理发次
数减1;像这样,你的理发次数信息你不需要维护,你只需要持有你的卡号,就可以到理发店
里根据卡号调出你的所有信息,也就是说真正的业务数据保存到理发店,而你只需要记录一个
卡号就可以了;就是Session的实现原理;
4. 通过以上分析,我们可以清楚知道,cookie和session都是为了解决 浏览器与服务器交互过程中
用户业务数据保存的问题,根据业务数据保存位置不同:
1、 业务数据保存在客户端,就是cookie技术;
2、 业务数据保存到服务器端,就是Session技术,但是这个时候需要浏览器端保存一个
获得服务器端Session中业务数据的ID,这个id的保存是利用了cookie技术;
可以说,session的出现,减轻了cookie的负担,以前它要保存业务数据(数据量可能会比较大),
现在cookie只用保存一个 key-value 就可以了;
无论是cookie还是session都实现了客户业务数据的保存;
Cookie和Session重新认识相关推荐
- 你想了解的Cookie和Session就在这~
目录 1.会话的概念 2.保存会话的两种技术 3.Cookie 4.Session(重点) 1.会话的概念 我们知道session的意思就是会话,Cookie和Session 是两种会话技术,我们首先 ...
- Cookie和Session的区别与联系
Cookie和Session Session 会话的理解 Session的作用 HTTP协议的无状态特点 Session的实现原理(重点) Session常用方法: Cookie 基本介绍 经典案例 ...
- 前端页面——Cookie与Session有什么区别
我们在实际生活中总会遇到这样的事情,我们一旦登录(首次输入用户名和密码)某个网站之后,当我们再次访问的时候(只要不关闭浏览器),无需再次登录.而当我们在这个网站浏览一段时间后,它会产生我们浏览的记录, ...
- cookie、session总结
前几天在调试第三方支付接口时碰到一个session失效问题,用了几天时间才搞明白,现在回想一下,主要还是由于cookie和session这一块的一些基本概念没有搞清楚,现总结一下. 浏览器使用HTTP ...
- cookie 和session 的区别详解
转自 https://www.cnblogs.com/shiyangxt/archive/2008/10/07/1305506.html 这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者 ...
- web存储中cookie、session区别
http协议是一种无状态的协议,浏览器对服务器的每一次请求都是独立的.为了使得web能够产生一些动态信息,就需要保存"状态",而cookie和session机制就是为了解决http ...
- cookie和session的代码实现
cookie和session的代码实现 1.设置cookie 今天笔试题考的是cookie的设置,我竟然选了request也可以设置cookie,我的天呀. 我们来看如何在response设置吧 pu ...
- 还分不清 Cookie、Session、Token、JWT?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 转自:掘金 作者:秋天不落叶 juejin.im/po ...
- Token ,Cookie、Session傻傻分不清楚?
点击上方蓝色"视学算法",选择"设为星标" 作者 | 王菜鸟1993 来源 | cnblogs.com/JamesWang1993/p/8593494.html ...
- Flask之Cookie与Session
Cookie与Session 1 Cookie 设置 from flask import Flask, make_responseapp = Flask(__name__)@app.route('/c ...
最新文章
- 堆排序——HeapSort
- linux内核中符号地址的获取
- python使用缩进作为语法边界一般建议怎样缩进-python基础自测挑战题,适合刚起步不久的小猿!...
- Java 洛谷 P1219 八皇后
- 如何解决python爬虫requests.get()遇到的418问题
- java面试题二十七 多线程考题2
- 程序员如何与人打交道
- qdialog 只有点击才能获得焦点_4 个突破点,让你的 Banner 点击率提升10倍
- 简单易用的MongoDB
- oracle11g和12c安装区别,Oracle下载与Oracle安装图解(Oracle19c,Oracle18c,Oracle12c,Oracle11g)...
- android 通过图片url获取宽高_通过 URL 获取图片宽高优化
- KANO模型,一个能解决你工作中90%烦恼的需求分析神器
- zuul压力测试与调优
- 统计一个数字在排序数组中出现的次数。
- Rust: 如何与DLL文件进行交互?
- 信息论笔记(需要编辑格式)
- java entry的用法_Java ZipEntry setComment()用法及代码示例
- OpenWRT设置SmartDNS+ADGuardHome+小喵咪
- 怎么用python实现序列比对_生信学习笔记——Python+Mafft实现批量化多序列比对
- 会议panel是什么意思中文_topanel中文是什么意思