前言:

本文没有任何代码,内容全部都是概念与运行原理,在使用一个技术前一定要弄清他的本质,下面会讲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的概念原理的更多相关文章

  1. 关于token,session,cookie的概念和区别

    记录几篇讲的比较好的文章 https://www.cnblogs.com/moyand/p/9047978.html https://blog.csdn.net/wabiaozia/article/d ...

  2. Jmeter之处理session、cookie以及如何做关联

    具体描述问题之前,我们先了解下session.cookie session.cookie的概念 1.session是放在服务器上的,过期与否取决于服务期的设定,cookie是存在客户端的,过去与否可以 ...

  3. cookie&session的Q&A故事[原理篇]

    引语:cookie和session在网站开发中,起着无可厚非的重要作用,但是我们平时往往都只是通过某种语言作为介质,通过某些接口函数进行cookie和session的操作,而对其原理可能不了解或一知半 ...

  4. session和cookie的作用和原理

    session和cookie作用原理,区别 Cookie概念 在浏览某些 网站 时,这些网站会把 一些数据存在 客户端 , 用于使用网站 等跟踪用户,实现用户自定义 功能. 是否设置过期时间: 如果不 ...

  5. cookie、session和token的概念

    Cookie.Session和Token都是为了解决Web身份校验而产生的,这里对它们的概念做一个简单了解. Web身份校验的发展 很久很久以前,Web基本上就是文档的浏览而已.既然是浏览,作为服务器 ...

  6. Session和Cookie的原理

    1.session和cookie的存储 session一般保存在服务端文件中,php.ini中有个配置项--session.save_path='';这个里面填写的路径,将会使session文件保存在 ...

  7. Session与Cookie的原理以及使用小案例>从零开始学JAVA系列

    目录 Session与Cookie的原理以及使用小案例 Cookie和Session所解决的问题 Session与Cookie的原理 Cookie的原理 Cookie的失效时机 小提示 Session ...

  8. Session与Cookie概念

    摘:一.Session机制session是一种服务器端的状态管理技术,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息.当程序需要为某个客户端的请求创建一个session的时候,服务 ...

  9. [Java] Servlet工作原理之二:Session与Cookie

    (未完成) 一.Cookie与Session的使用简介 1 Cookie Cookie 用于记录用户在一段时间内的行为,它有两个版本:Version 0 和 Version 1,分别对应两种响应头 S ...

随机推荐

  1. eclipse禁用svg文件Validation

    1.打开window>preferences>validation找到xml validator 2.点击xml validator最右侧的按钮打开xml校验规则窗口,选中exclude ...

  2. 性能优化之-------少用iframe

     1.DOM开销高 使用iframe的开销是很高的,在主页面中加载同等数量的div和iframe(标签内容都是空),iframe的耗时会比div的高1~2个数量级. 2.阻塞onload事件 在典型方 ...

  3. MySQL数据库中文变问号

    原文参考:http://www.linuxidc.com/Linux/2017-05/144068.htm 系统是的Ubuntu  16,修改以下配置 1.sudo vi /etc/mysql/my. ...

  4. 谷歌浏览器Chrome播放rtsp视频流解决方案

    找半天,HTML5的可以支持RTMP 但是无法播放RTSP,flash也止步于RTMP,最后同事推荐了个开源的好东东 VLC ,请教谷歌大神之后,这货果然可以用来让各浏览器(IE activex方式, ...

  5. 使用NPOI导出导入导出Excel

    Excel2003 #region Excel2003 /// <summary> /// 将Excel文件中的数据读出到DataTable中(xls) /// </summary& ...

  6. 几种常用的ajax 跨域请求

      前 言 首先,我们要明白,什么是跨域,为什么要跨域. 由于JS中存在同源策略.当请求不同协议名不同端口号下面的文件时,将会违背同源策略,无法请求成功!需要进行跨域处理! 这篇文章就为大家详细介绍一 ...

  7. Python 面向对象基础知识

    面向对象基础知识 1.什么是面向对象编程? - 以前使用函数 - 类 + 对象 2.什么是类什么是对象,又有什么关系? class 类: def 函数1(): pass def 函数2(): pass ...

  8. Ajax之路

    第一部分: Ajax全称Asynchronous Javascript and XML,中文意思为"异步的Javascript 和XML".Ajax这组技术是web2.0的核心之一 ...

  9. org.springframework.web.filter.DelegatingFilterProxy的作用

    一.类结构 DelegatingFilterProxy类继承GenericFilterBean,间接实现了Filter,故而该类属于一个过滤器.那么就会有实现Filter中init.doFilter. ...

  10. Python PycURL 网络编程

    http://blog.chinaunix.net/uid-20544356-id-290882.html 在使用urllib的时候经常会死掉,以前debug过,是没有设置 timing out 所以 ...