java session原理_java web开发—session的工作原理总结

session的工作原理总结

一、什么是session

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

二、session和cookie的区别

cookie数据存放在客户的浏览器中,session数据放在服务器上

cookie不是很安全,别人可以轻易的获取本地的cookie并获取相关信息进行欺诈

session有时间限制,会在设置的一定时间内保存到服务器上.

cookie有限制,单个为3k,一个站点在客户端存放的cookie不能超过3k

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

三、session的工作原理

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

简述一下工作的流程:

当浏览器访问服务器时,服务器根据需求设置session,并将会话的信息保存在服务器上,并将标志着session的session_id传递给浏览器.

浏览器会将收到的session_id保存在内存中,这个便是无过期时间的cookie,当浏览器关闭时,cookie会被清理,同理session_id也就没有了.

当每次浏览器访问服务器的时候,都会带上这个session_id,服务器根据这个id获取浏览器的状态返回数据.

session有一个超时时间,当浏览器因为一些原因被关闭的时候,服务器端的session不会马上被释放,只要我们知道session_id,一样可以获取到服务器端的应用数据.一般会给服务器端的session设置一个过期时间,保证了数据的安全性.

总结:

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

e49234b6433892548cd3073e84f9e06c.png

如上图:红框内的就是session_id

应用:

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值