00:00
当用户第一次提交请求。服务器执行到request get session以后。那么服务器会为我们生成一个新的session对象。然后呢,我们就可以根据。每一次请求中所携带的这个j session ID。来对这个session。进行多次的数据读写。但是从生命周期角度来说啊,我们说session的创建知道了,Session的使用也知道了,那么。这session什么时候被销毁呢?这里边儿引入了一个叫做session失效的。
01:00
这样的概念。那么session可以设置它的。超时实现。默认情况下,Session的超时时间是30分钟。这超时时间是什么意思呢?这超时时间是指啊,从你最后一次访问。开始计时。你注意是最后一次访问这个session啊,开始计时。然后。如果达到30分钟了。那么这个session就失效了。这个。咱们大家如果你留意过的话啊,应该有这种体验。我们在。淘宝或者京东。在那买东西是吧,购物诶,一会儿往里边,往购物车里边放个东西,一会儿往购物车里边放个东西。
02:05
那么,如果。你后来接了个电话。就一直没操作这个电脑。这电话打的时间比较长。一人打了四五十分钟再回来,然后你继续逛是吧。再点。这个加入购物车,你会发现它是不是让你重新输入。这个账号和密码呀。有过这种体验吗?可能你还不知道为什么,原因在哪,原因就在于session。你长时间不操作它,它已经超过了它的超时时效。所以他要求你重新登陆。因为这时候这个session已经失效了。那这个失效是什么呢?
03:00
我们一会儿通过代码让大家看一下时效到底是什么啊,那么对于这个超时时限。默认是30分钟。当然我们也可以进行设置,在外边的XL里边只要配上这个东西就可以了,注意这里边这个是个时间单位是分钟啊,可不是秒,是分钟。这120分钟。那好,我们看一下。还在原有。例子的基础上来改了啊。我们来看。就直接这样吧,你这样写。给这后边写了啊。哎,我们。
04:02
Sunshine。Con。Session timeout。写一个,那不默认是30分钟吧,我这个时间短。十分钟。十那么它的超时时效就是十分钟,一般情况下啊,像我们做这种购物类的。电商类的网站,那么这个session的时间呢,要长于30分钟,为了什么?为了让顾客这种体验比较好啊,你让他长时间待在。你的这个平台上买东西啊。这是刺激消费呢,对不对,如果你一会儿超市时间到了,让他登录一下,一会儿让他登录一下,这个用户体验非常不好。但如果是。
05:00
你要做的是比如说。网上银行。类似于这样的系统,这个超时时限一般设置时间比较短。为什么?操作完了就结束了。如果期间你离开电脑了。那么。一会儿你又回来了,就需要重新登录,这为了账户的安全。所以啊,这个时间的设置,设置多长时间合适,当然这个和将来甲方的要求。是有关系的。你这里可以改啊,这里可以改。啊,这个是。设置。Second。石象。时长。好。
06:01
不过啊,这个失效失效我们要给大家演示,这个不好演示等十分钟吗?其实也不用我们代码里边啊。有一个API可以。让这个session提前失效。我们可以看一下文档。找到三神。Session里边有个方法叫invalid。In validate。这,Invalidate dates this session then I bun any object bounce to it。就解绑任何解绑所有的绑定大台上面的对象。就是使的失效了呀。使session是当前session失效。
07:01
并且。解绑所有的对象。什么对象绑定在它上面的所有的对象,那我们看一下啊。咱们先这样测试一下,先让大家看一下这个三神失效到底是个什么东西。我在这儿创建了一个session,对吧。午餐的。有老的用老的,没老的建新的。反正经过这个语句以后,这个session肯定是有的,它肯定是不空的,对吧,紧接着session.set tribute给代表里面是不是放东西了,好。我这写上一句话,session.in validate这干嘛的?10SESSION失效,就写这么一句话。
08:00
好。随便。走,看到没?看到没?他说什么?Illegal state exception,非法状态异常,Set attribute session,哪个session人给你告诉你了,就这个session,这是32位长度的那个j session ID。Has already been evalitated,他已经被怎么被失效了,他已经失效了,然后他已经失效了,你又往里边放东西,这是不允许的。明白吧,这是他失效了。好。
09:01
那失效了,它是不是空的。我们从这个运行结果可以看到失效并不是空,因为如果是空,他俩应该报控制人异常啊。大家想想是不是,所以我们这样。我给这。加个输出语句。Session。这样。把控制台清一下。早。看到没?空不空?并不空吧?
10:01
是不是,呃,这是大家需要注意的啊。嗯,是30失效。但失效的session并不为no,这是大家需要注意的啊,好。我把这句话注释掉,这个也注释掉吧,紧接着再让大家看什么看这。我仍然往里边放数据在这儿呢。这是不是要读啊,对不对,我这样获取这个session,我获取这个session以后。这不,按理说我获取到这个session了。三页不空,我是不是应该从它里边读这个username了?那么在获取到三审之前,我干嘛还是10SESSION?
11:04
失效session in validate。这是谁?这是。这样。我们还给它写上三啊。还给他,哎,怎么闹了,筛选啊,好,还给他写上它。好,重新发布过了。这次往里面放肯定是没问题的,对吧?放过以后呢,我要读了other solid。走。
12:00
是报的和刚才那个一个意思啊,Such invalidated对吧。再看看。空不空?不空嘛,对不对,它是不空的啊。那这。这就说明一个问题。Session失效以后。Session失效以后,你还能不能从它里边读取数据了?不能了。他已经不能从里边读数据了,当然了它里边有没有数据了,我们从人这个API就可以看到。它里边已经没数据了,你看。这是使当前的三神失效。然后解绑所有的对象。绑定在它上面的所有的对象,这就说明它里边已经没有数据了。
13:00
已经没有数据了啊。它能够使它里边所有的数据全部解绑,当然了,如果说你想解绑某一个属性,这我们大家知道是用什么。是不是remove attribute可以啊,我就不演示了。好,这就是我们说的session的失效。
我来说两句