Cookie和Session

Cookie是什么?

Cookie本质上是 浏览器网页提供的 本地存储数据 的机制
网页默认是不允许 访问计算机中的硬盘的(出于安全考虑),但同时我们也需要浏览器在本地能够存储一些信息.
Cookie 浏览器对于访问硬盘做出了明确的限制,相当于浏览器根据域名在本地硬盘上开辟一个Cookie大小的空间,浏览器可以在这个空间中存储信息,cookie通过键值对的方式来组织数据.

cookie从哪里来?

Cookie 是从服务器返回给浏览器的,服务器代码中由程序员决定把什么样的信息保存到客户端,通过HTTP响应的Set-Cookie字段,把键值对写回去就可以了

cookie到哪里去?

Cookie会在后续浏览器访问服务器的时候带到请求的header中,发给服务器,服务器不是只给一个客户端提供服务,同一时刻要处理多个客户端,此时服务器可以通过cookie中的值,来识别当前客户端是谁,当前客户端的服务提供到哪个环节了

 Cookie常见的应用

标识用户的身份信息

 session

getSession(true) 判定当前请求是否已经有对应的会话了(拿着请求中的 cookie里面的sessionId查一下哈希表),如果sessionId不存在,或者没有查到,就创建新的会话,并插入到哈希表中,如果查到了直接返回查到的结果
会话(session),就是一个键值对,key 是 sessionId,value 是一个 HttpSession 对象.每个客户端登录的时候,都会有这样的键值对(会话),服务器用哈希表这样的结果,把这些会话组织起来

getSession构造过程

1.构造一个 HttpSession 对象
2.构造唯一的 sessionId
(服务器自动生成)
3.把这个键值对插入到哈希表中(服务器自动生成)
4.把 sessionId 设置到响应报文 Set-Cookie 字段中(服务器自动生成)

setAttribute(key,value)

HttpSession对象本身也是一个map的结构

 

 Cookie和Session之间的关联

如上图所示,在网站的登录功能中,需要配合使用

Cookie和Session之间的区别

Cookie是 客户端 的存储机制,Session是 服务器 的存储机制

Cookie里面可以存各种键值对(除了身份信息,还可以存别的),Session则专门用来保存用户的身份信息

Cookie可以单独使用,不搭配session(实现非登录的场景下)

session也可以不搭配cookie使用,(手机app登录浏览器,服务器也需要session,此时没有cookie),

cookie属于 HTTP 协议的一部分

session和HTTP无关(TCP,websocket...也可以用session) 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值