Session技术解析

引入:

提到Session技术的出现,就得想下之前的Cookie技术,这两种技术都是针对无状态的HTTP协议的短板,用于有状态的会话。那有了cookie为什么还玩session技术。由于cookie保存的信息在客户端,每次通过cookie发送给web服务器,那算上状态信息容量应该不小吧,这样就降低了网络传输的效率,并且传到web服务器那边,解析也是一个问题。而且cookie信息的容量不能超过4KB。不能传中文信息,不能传过去对象,只能是字符串。短板太多所以就出现的Session域对象。


Cookie和Session之间的区别:

如果我们拿会员卡去大超市,顶上只能有卡号和剩余金额,因为卡存储信息是有限的,所以我们去大超市买东西直接刷卡就ok了,虽然这种方式很方便,通过卡号就知道了对应的剩余金额(类似于cookie中的键值对的形式),但是短板也很明显,只能存这两样,如果还要记录每次消费的金额,每次消费的时间,以及对应这张卡的使用者信息,这张卡根本没这么多容量,这样如果卡丢了,都查不到使用者信息,就没法冻结了,为使用者产生很大不便。其中最主要的原因是卡容量小,信息多了,机器扫描卡信息会多花时间。这也就是类似于cookie,把信息都存在浏览器是不行的。然而使用另一种方式,就把卡存储一个卡号,机器里面存储卡号对应的其他信息。使用者拿卡去刷卡号就行了。这就是session技术,浏览器通过session的ID号与web服务器进行身份识别,来交互信息。所以session的信息是存储在服务器端的。


Session原理:

1.如果第一次访问session对象的话,就给session分配一个唯一的ID(也就是标记号),JSESSIONID。

2.就把JSESSIONID作为cookie的值发送到浏览器保存。

3.然后下次再去访问,浏览器拿着带有JSESSIONID的cookie访问服务器就完事了。

4.服务器收到JSESSIONID,就在服务器的内存中寻找是否有JSESSIONID对应的session对象。

5.如果找到了对应的编号的session对象,那么直接返回就完事了。

6.如果要是没找到对对应的编号的session对象,那么就创建新的session对象,然后就走步骤1的方式创建session对象。


Seesion的销毁:

Session的销毁并不是浏览器关闭时销毁的(根本八竿子打不着),要不就是你通过调用setMaxInactiveInterval(intinerval)方法,设置有效时间,到期失效。要不就直接调用invalidate()方法关闭它。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值