java web开发——session简介

因为一直做的都是java后端,对于这些偏前端的知识有点模糊,昨天面试的时候被问到session的工作原理,一脸懵逼,今天整理一下。

一、什么是session

session是一次浏览器和服务器交互的会话,在jsp中,作为一个内置对象存在。我的理解,就是当用户打开网页时,程序会在浏览器中开辟一段空间来存储作为session的存储,可以对一些用户信息进行保存。session就是一个会话级别的cokkie,外加服务器内存中的一组散列表。当关闭浏览器时,cookie会消失,session也就消失了,这个cookie不写在磁盘上,而是写在浏览器的缓存中。


二、session和cookie的区别

  1. cookie数据存放在客户的浏览器中,session数据放在服务器上
  2. cookie不是很安全,别人可以轻易的获取本地的cookie并获取相关信息进行欺诈
  3. session有时间限制,会在设置的一定时间内保存到服务器上。
  4. cookie有限制,单个为3k,一个站点在客户端存放的cookie不能超过3k

所以一般将登陆的用户信息保存到session上,以防被盗,如果是其他信息,可以放在cookie里面,如果考虑到服务器的性能,减轻压力,应该使用cookie


三、session的工作原理

服务器和浏览器采用的是http无状态的通讯,那么如果多客户对服务器进行访问的话,服务器怎么区分呢,那就是使用session。在session的机制中,有一个session_id,作为一个独一无二的标识,来对客户端进行区分。每次浏览器请求的时候,就会带上这个标识。这个标识由服务器生成。
简述一下工作的流程:

  1. 当浏览器访问服务器时,服务器根据需求设置session,并将会话的信息保存在服务器上,并将标志着session的session_id传递给浏览器。
  2. 浏览器会将收到的session_id保存在内存中,这个便是无过期时间的cookie,当浏览器关闭时,cookie会被清理,同理session_id也就没有了。
  3. 当每次浏览器访问服务器的时候,都会带上这个session_id,服务器根据这个id获取浏览器的状态返回数据。
  4. session有一个超时时间,当浏览器因为一些原因被关闭的时候,服务器端的session不会马上被释放,只要我们知道session_id,一样可以获取到服务器端的应用数据。一般会给服务器端的session设置一个过期时间,保证了数据的安全性。

总结:

正常的web中的C/S模式下,在两端都会保存session,两者通过一个唯一的session_id相关联。client端的session保存在cookie中,当关闭浏览器的时候,cookie清空,session也同样没有了。server端的session保存在内存中,在client端关闭后,还会存在一段时间,到达超时时间后,生命周期完成被回收。在被回收前的这个过程中,只要知道这个唯一的session_id,就可以获取到session中存储的信息。
这里写图片描述

如上图:红框内的就是session_id
应用:

大部分的web开发,session都用来保存用户的登录状态以及用户名密码等信息

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值