java session的工作原理_Session机制的基本原理

Session是Web开发的一个重要内容,Web服务器通常都会使用session来记录和识别用户。

1. Session的基本机制

session机制是这样运行的:

客户端浏览器访问Web服务器,那么,由于是第一次访问,用户的请求头信息将不包含sessionid:

5c204b989ba3c29d3ef5bf5dc0ffa112.png

此时,从图中可以看出,服务器返回的Response Headers中,set-cookie要求浏览器设置一些cookie信息,

其中包含了sessionid。这里,对于tomcat,sessionid的名称为jsessionid。

当用户第二次访问的时候,将附带将jsessionid发送给服务器:

9b72ae59f31dd5b9bcff1759c2328c34.png

服务器拿到这个sessionid之后,会查找是否存在这样一个id,如果存在,则可以从request对象中取出这个session对象。

由此,可以看出,用户和服务器之间的识别,就通过这个sessionid来实现。

2. session失效

如果用户在session有效期内没有访问,比如,第一次是10:00,第二次访问是10:40,而服务器设置了session过期时间为30分钟,那么用户再次访问的时候,它的sessionid将会失效。如果仍然使用request.getSession(),拿到的将会是一个新的session。这里,有一点很重要,这里的过期时间,是两次访问之间的间隔时间。如果第一次访问在10:00,第二次是10:20,第三次是10:40,那么用户session将一直有效。

如下代码中,设置session有效期为1分钟,前五次访问,持续了一分多钟,但是,每次访问之间的间隔都小于一分钟,所以一直是同一个session。

2e463e11e5e07cb24b3fcde4e9a81fb1.png

但是,当用户在最后一次访问之后,间隔了大于一分钟的时间再次访问的时候,用户的sessionid发生了变化,原来的session已经失效,用户绑定的是新的session:

8ff8f0ec573e3e105b8a5751183ab142.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值