Session与Cookie的概念原理
前言:
本文没有任何代码,内容全部都是概念与运行原理,在使用一个技术前一定要弄清他的本质,下面会讲Session、Cookie、ServletContext的概念与他们的联系区别
Session概念
1.Session是什么?
服务器开辟了一块空间专门存放Session,这个空间叫做Session池,Session池中可以存放多个Session,每个Session对应一个客户端(浏览器),比如你打开360浏览器与IE浏览器这就是2个客户端,此时在Session池中会存在360浏览器对应的Session与IE浏览器对应的Session,而每个客户端都会去找自己对应的Session。
2.Session能做什么?
上面说了Session是什么,但是它能做什么,Session主要做的事情就是存储资源(数据),因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户客户端(浏览器)对应的session中,当用户使用客户端(浏览器)访问服务器程序时,客户端(浏览器)对应的session中取出该用户的数据。
3.Session的获取流程原理图:

1.服务器中会有个专门储存Seesion的空间Seesion池
2.用户打开了一个浏览器发送请求访问项目
3.请求的时候,服务器会根据你这个客户端(浏览器)创建对应的Seesion在Session池中
从上图可以很明显的看出,获取Session不会受Servlet(服务连接器)影响,只会受客户端影响,Session与客户端是一对一的关系,你360浏览器的Session1数据你通过火狐浏览器肯定是取不到,火狐取的是自己对应的Session2,说到这里另一个问题出现了,服务器是怎么把客户端(浏览器)与Seesion对应起来的呢?在回答这个问题前先了解下Cookie吧
Cookie概念
1.Cookie是什么?
Cookie是客户端(浏览器)上储存数据的文件,是存放在客户端(浏览器)里面的。
2.Cookie能做什么?
存储数据,与Session不同的是,Session是存放在服务器上,Cookie是在存放在客户端,
每次客户端(浏览器)发送请求的时候,会把客户端(浏览器)里面所有的Cookiec都发送到服务器去,服务器响应回来的时候会把数据储存到Cookiec发送给客户端(浏览器),其中里面会储存SessionId,从而进行 session 跟踪,把客户端与Seesion关联起来。
3.Cookie的流程原理图

1.客户端(浏览器)发送请求时会把客户端里面所有的Cookie全部传到服务器
2.服务器接收到请求后,服务器响应客户端(浏览器),会把数据储存到Cookiec发送给客户端(浏览器),其中里面会储存SessionId
3.客户端(浏览器)接收到后又储存起来
4.每个客户端(浏览器)都会有属于自己的Cookie。
注:Cookie的生命周期默认是浏览器会话期间,浏览器关闭后,Cookie清空,除非你手动设置Cookie生命周期时间
Session与Cookie的联系、区别
Session与Cookie合并运行原理图:

1.首先客户端(浏览器)发送请求到服务器
2.请求里面会把客户端(浏览器)所有的Cookie带上
3.服务器接收到请求
4.内部开始处理,首先从客户端(浏览器)带过来的Cookie里面获取SessionID
5.拿SessionID去Session池中查询
6.如果没有查询到对应的Session或SessionID是空,重新新建一个Session到Session池中
7.如果查询到了直接获取对应Session
8.把数据存入客户端(浏览器)带过来的Cookie,其中就有SessionID,响应给客户端(浏览器)
9.客户端得到响应并把Cookie储存起来
10.接着从1-9循环
Session与Cookie的联系区别:
联系:客户端获取Session需要通过Cookie里面的SessionId,Cookie就是客户端与Session的中间桥梁。
区别:同样是存储数据,但是一个是服务器端,另一个是在客户端
ServletContext概念
ServletContext是什么?
ServletContext是Web容器给每个应用程序创建的一个公共空间,每个应用程序都会对应一个ServletContext上下文(公共空间),他的公共范围在对应的应用程序之内。
ServletContext能干什么?
存储数据、提供一些Web容器的功能。
ServletContext与Session的区别:
ServletContext与Session都可以存储数据,但是他们最大的区别则是范围区别,Session的访问范围受限客户端而ServletContext的访问范围受限应用程序。
举个例子:
360浏览器访问项目往ServletContext与Session分别存储了number : 1( 键值对应),在360浏览器中ServletContext、Session通过key值number获取到value值1。
打开火狐浏览器,用ServletContext通过key值number获取到value值1,用Session通过key值number获取到null。
Session与Cookie的概念原理的更多相关文章
- 关于token,session,cookie的概念和区别
记录几篇讲的比较好的文章 https://www.cnblogs.com/moyand/p/9047978.html https://blog.csdn.net/wabiaozia/article/d ...
- Jmeter之处理session、cookie以及如何做关联
具体描述问题之前,我们先了解下session.cookie session.cookie的概念 1.session是放在服务器上的,过期与否取决于服务期的设定,cookie是存在客户端的,过去与否可以 ...
- cookie&session的Q&A故事[原理篇]
引语:cookie和session在网站开发中,起着无可厚非的重要作用,但是我们平时往往都只是通过某种语言作为介质,通过某些接口函数进行cookie和session的操作,而对其原理可能不了解或一知半 ...
- session和cookie的作用和原理
session和cookie作用原理,区别 Cookie概念 在浏览某些 网站 时,这些网站会把 一些数据存在 客户端 , 用于使用网站 等跟踪用户,实现用户自定义 功能. 是否设置过期时间: 如果不 ...
- cookie、session和token的概念
Cookie.Session和Token都是为了解决Web身份校验而产生的,这里对它们的概念做一个简单了解. Web身份校验的发展 很久很久以前,Web基本上就是文档的浏览而已.既然是浏览,作为服务器 ...
- Session和Cookie的原理
1.session和cookie的存储 session一般保存在服务端文件中,php.ini中有个配置项--session.save_path='';这个里面填写的路径,将会使session文件保存在 ...
- Session与Cookie的原理以及使用小案例>从零开始学JAVA系列
目录 Session与Cookie的原理以及使用小案例 Cookie和Session所解决的问题 Session与Cookie的原理 Cookie的原理 Cookie的失效时机 小提示 Session ...
- Session与Cookie概念
摘:一.Session机制session是一种服务器端的状态管理技术,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息.当程序需要为某个客户端的请求创建一个session的时候,服务 ...
- [Java] Servlet工作原理之二:Session与Cookie
(未完成) 一.Cookie与Session的使用简介 1 Cookie Cookie 用于记录用户在一段时间内的行为,它有两个版本:Version 0 和 Version 1,分别对应两种响应头 S ...
随机推荐
- Game of Connections
Game of Connections Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 呵呵哒,LNMP下通过fread方式下载文件时,中文名称文件找不到文件
哎,整整折腾一个下午. 本来好好的,thinkphp 自动的uniq方式保存的文件名,非要使用原文件名,真心蛋疼~~ 然后就只好写个脚本 把原来的所有文件都重新命名一下 - - 然后把数据库对应字段也 ...
- SpringAop源码情操陶冶-JdkDynamicAopProxy
承接前文SpringAop源码情操陶冶-AspectJAwareAdvisorAutoProxyCreator,本文在前文的基础上稍微简单的分析默认情况下的AOP代理,即JDK静态代理 JdkDyna ...
- Linux常用命令100个用法
平时用linux时,我有一个习惯就是把遇到的,比较有用,并且容易忘的命令,放到一个文本文件中,没事的时候可以拿出来看看,这样可以加深映像,时间长了这些命令的用法基本上都能掌握了.以下是100个用法,有 ...
- hibernate flushMode 错误
1 十一月 15, 2017 10:13:36 上午 org.apache.struts2.dispatcher.Dispatcher error 2 严重: Exception occurred d ...
- python的Windows下的安装
1.先打开网址http://www.python.org/download/: 2.在下载列表中选择Window平台安装包, 找到最后 web-based installer 是需要通过联网完成安装的 ...
- [转载] 2 分钟读懂大数据框架 Hadoop 和 Spark 的异同
转载自https://www.oschina.net/news/73939/hadoop-spark-%20difference 谈到大数据,相信大家对Hadoop和Apache Spark这两个名字 ...
- configpraser模块
configpraser配置文件,example.conf [data] #节点 username = Jason password = 123 [public] comment = stuff pu ...
- 有没有必要参加IT培训
近几年,IT培训机构可谓是琳琅满目,稂莠不齐.培训Java的,培训PHP的,培训大数据的等等吧,不一而足. 自己也算是IT技术圈子待了好多年了,面试过一些机构培训出来的学生,也有几个好哥们在培训机构做 ...
- 盘点一下立过的flag并立几个flag
暑假前说了,要学opencv3,要看完冰火,要健身,要家教挣钱. 好样的,全都没落下. opencv3几乎是把80%的demo码了一遍. 冰火看完,还顺带学了一波知识,收获颇丰,搞到了马丁老爷子的几本 ...