会话保持 Session和cookie
Session是什么?
Session在网络中称为会话控制,是服务器为了保护用户状态而创建的一个特殊的对象,简而言之,session就是一个对象,用于存储信息。
Session有什么用?
session是存储于服务端的特殊对象,服务端会为每一个浏览器(客户端)创建一个唯一的Session。这个session是服务器端共享,每个浏览器(客户端)独享的。我们可以在session存储数据,实现数据共享。
session的存储形式
session类似于一个Map,里面可以存放多个键值对,是以key-value进行存放的。key必须是一个字符串,value是一个对象。
session的底层机制
session是每一个浏览器所唯一的,是怎么实现的呢?其实,在访问一个网站时,在http请求时往往会带一个cookie,这个名字是jsessionnid,这个jessionnid表示的就是jession的id,这个由服务器创建的,并且唯一。服务器在使用时,会根据jessionnid来进行不同的操作。
当服务端使用session时,首先获取session,这个session通过jsessionid进行获取。
session常用的方法
session和cookie的比较
cookie存储在客户端 ,session存储在服务端
cookie作用于他所表示的path中范围较小。session代表客户端和服务器的一次会话过程,web页面跳转时也可以共享数据,范围是本次会话,客户端关闭也不会消失。会持续到我们设置的session生命周期结束(默认30min)
我们使用session需要cookie的配合。cookie用来携带jsessionnid
cookie存放的数据量较小,session可以存储更多的信息
cookie由于存放在客服端,相对于session更不安全
由于session是存放于服务器的,当有很多客户端访问时,肯定会产生大量的session,这些session会对服务端的性能咋成影响。
总结: session是一个存储于服务器的特殊对象,通过session可以实现数据共享,session有一个jessionnid,这个是session的唯一标识,使用它可以查找到session。session是会话级别的,对于每一个客户端来说独享它所拥有的session的,我们使用session在页面进行跳转,session由服务器控制。session的创建和销毁都是服务器进行管理的,服务器会为每一个客户端创建一个session。
token
1.token是啥?
token,可以翻译为 令牌,本质上他是一个全局唯一的标识符,用来试别唯一的客户端。但它不像cookie和session一样是一种规范,他像是借鉴了他们的工作原理,进而延伸出来的一种维护用户状态的机制。
2.token解决了什么问题?
token解决了session依赖于单个web服务器的问题。单体应用用户的信息保存在session中,session存在于服务器的内环境中,前前后后用户只是针对一个web服务器,所以没啥问题。但是到了集群环境下, 遇到轮询 登陆了A 下次登陆B 用户体验不好。
我们也完全可以模仿它这种机制:我们可以在用户第一次请求该web服务器时或是用户登录该web服务器时,生成一个全局唯一的token返回给前端存储,同时将该用户信息存到redis中并设置有效期,之后每次请求中都在请求头中带着这个token,服务器端根据这个token到redis中查找对应的用户信息,即得到了我们所说的 "session"。
最新文章
- Javascript运用函数计算正方形的面积
- 通过JS检测360浏览器
- Matlab中的向量
- Oracel数据库连接时出现:ORA-12518:监听程序无法分发客户机连
- [整理][LaTex]小技巧之——首行缩进
- Swift游戏实战-跑酷熊猫 12 与平台的碰撞
- jQuery-瀑布流-绝对定位布局(二)(延迟AJAX加载图片)
- 集合(Collection,set,list,map)
- C语言——strlen()和sizeof的区别
- android媒体--图库与API层MediaPlayer的交互
- C# 三角形外心和外接圆半径计算方法
- Chrome DevTools 调研笔记
- 好久好久没写,,百度API逆地址解析以及删除指定marker
- java-包装类
- hive的使用
- 七、UART
- !HDU 1574 RP-dp-(重点在状态确定)
- [NOI 2016]优秀的拆分
- POJ1274 The Perfect Stall[二分图最大匹配 Hungary]【学习笔记】
- C#提高-------------------Module的使用