00:00
来,那么接下来我们就来给大家去说一下这个三好,呃,然后首先的话,我们还是提到了这个cookie呢,有一些问题啊,比如说呃,如果cookie很多,那么无形的就增加了这个客户端与服务端的一个数据传输量,对吧?你想一下,如果这个数据量很大的话,他就每次都在传来传去,是不是无就这加上我们这个传输的数据量了吧,对吧?首先你不要去考虑那个流量有多大,你得考虑你这个传输起来这个效率是不是比较慢了,数据越大你肯定传输起来就比较慢了嘛,对吧?OK,这是很致命的一个问题啊,然后另外一个浏览器对cookie的这个数量是有限制的,我们不能在cookie中呢保存过多的信息啊,所以说呢,我们最终的session就出现了,Session呢,它是什么呀?它是在服务器端来保存用户的数据,也就是维护我们这个状态管理的,但是注意session是基于cookie这样的一个机制来去做的,能听明白吧,Session是基于cookie这样的一个机制来去做的。
01:00
啊,那么它是怎么做的呢?我来给大家去说一下这个session的一个工作原理啊,我们先看一下文字描述,呃,Session的创建时机是通过request去get session的方法,这个第一次被调用的时候,那么其实我们就获取到这个三对象了,然后session被创建后以后呢,同时会有一个session对象的一个ID,叫做解三生ID,就是每一个三生对象都会有一个自己的ID,叫做解三生ID,然后注意浏览器端呢,浏览器的这个服务器啊,会把这个解三生ID呢,作为一个cookie保存到你的浏览器端,然后呢,将来你的每一次访问浏览器都要把这个解三神ID传递到我的服务器端,进而去找到我们对应的这个三神对象,这就是一个三审机制。好,这是通过文字来描述,大家可能不是很清楚啊,那接下来还是给大家简单的画一个图来描述一下,首先呢,这是我们的一个浏览器端啊,这是我们的服务器端。那么大家要注意了啊,我第一次去访问的时候来,我第一次去访问的时候注意啊,那么这是我的第一次请求,第一次请求过来的时候呢,其实在我们的服务器端,它不仅要创建一个这个request对象,他还得帮你去创建一个session选对象,这个session呢,它叫做一个会画对象理解吧,那么创建好一个session声对象以后呢,这个session声对象其实就会有一个,我们叫做三声ID啊,我就写成sidd吧,每个对象都会有一个自己的session生ID,然后我服务器给你往回响应的时候,他做了什么事呢?他把这个session生ID呢?三生ID通过什么呀?通过这个cookie这样的一个机制,就是把这个三生ID当成一个cookie呢,给到这个浏览器端了。
02:47
听明白了吗?给到浏览器端了,那么我们浏览器下一次去访问的时候做什么事呢?诶,第二次访问的时候,他就得把这个三生ID呢,再给我带到这个服务器端,而在服务器端呢,他就可以通过这个三生ID去找到我已经创建好了这个三生对象,那么大家注意哈,这两次请求之间我用了几个三声对象,是不是还是这一个呀?OK,同样的道理,我在响应回去的时候呢,我又要把这个三声ID的再给他什么发回来,那么我第三次去请求的时候呢,我同样要把这个什么三声ID给他带过去,那么他也能通过这个三声ID再找到原来的这个session审对象,那么大家来看,在这个整个这个过程中,我们请求呢是有多次,也就意味着request对象我是创建了什么多次的,对不对,但是session对象呢,我只创建了一次,也就意味着我在多次请求期间可以共用一个session对象,那么我就可以。
03:48
把一些用户的数据呢,给你维护到塞里面。这样的话,我的数据一直保存在服务器端,而且呢,没有在这个过程中去传输,那你看一下是不是就解决了我们cookie的那些问题了。
04:02
能理解这个意思吗?我现在只需要传输一个三生ID就可以好,那么我们把这个过程呢,类比到我们刚刚说过的那个买东西的那个过程中,你看了啊,它就变成什么样子的呢,如果说这个。卖鸡排这个店发现了有这个漏洞了是吧?他发现了有人会盖戳是吧?OK,他就这么做,怎么做呢?你第一次来访问的时候,这是你的第一次请求啊,他会给你办一个什么呀,会员卡,或者叫什么积分卡,对吧?那么这个卡是注意哈,就是你第一次来访问,OK,他会给你办一张卡,这个卡是维护到我们的服务器端的,但是呢,这个卡呢,会有一个卡号,理解吧,诶他会回去的时候呢,诶就是他会告诉你啊,你把这个卡号记一下,下次你来的时候,你报这个卡号,我再给你累计一次,等你累计到十次以后,我免费送你一次,那么对于我们手里来讲,我是不是只有一个卡号啊,你能去操作这个卡吗?
05:04
操作不了吧,哎,这个卡是维护到服务器来的,然后呢,你下次再去去的时候呢,OK,第二次请求了,那么你只需要把这个卡号带过去,他就能通过这个卡号找到我对应原来的这个卡,我是不是在这个上面呢,再给你加上这么一次啊,对不对,同样再回去的时候呢,还得把这个卡号呢,给你发送回去,你还得记录下来。那么再来一次请求呢,第三次请求呢,那么同样你把这个卡号呢,再给他带过去,他呢又能通过这个卡号去找到我原来这个卡,我再把这个记录给你扎上一次,所以说呢,整个过程中我既维护了用户的一个状态,然后呢,我又保证了数据的一个安全性,因为这个东西是我自己来去管的,你就不可能再自己盖章了。能明白这个意思了吗?所以说我们类比到这个案例里面来讲的话,这个三省大家应该就能理解是什什么样的一个机制了吧,对不对,但是大家注意全程它都要基于一个cookie的机制来实现,因为什么呀,这个卡号,或者说我们刚刚说的那个三生ID,它得通过cookie的技术来进行什么呀,来回的这个传输的,也就意味着如果cookie不能用了,三省,也就原理上三省也就不能用了,真的是不是啊对吧,我就来给你想这个东西,你看看啊,假如说我第一次请求过来了啊,第一次请求人家给我办了一张卡。
06:26
是吧,发了一张卡,然后呢,回来的时候呢,把卡号给我了,但是呢,我就不进入你的卡号,那我第二次地球过去的时候,我能把这个卡号发过去吗。你你因为你没有记录下来嘛,也就相当于这个cookie不能用嘛,对吧,那么你没记录下来,你第二次过去的时候,你就没有这个卡号,也就意味着他就不可能再找到你原来这张卡了,他只能认为你是第一次来的,我再给你创建一个,再给你办张卡。是不是啊,所以说呢,你就不可能把这个状态维护下来了,每次都是一个新的状态,能明白这个意思了吗?哎,所以大家一定要注意了啊。三虽然说是在服务器端维护这个数据的,但是呢,它也要基于我们的cookie机制来去使用,你看简单来说session机制也是依赖于cookie来去实现的。
07:16
听懂这个意思了吧,OK,好,那么说了这么多,最终呢,给大家再去解释一下,这个session呢,我们把它叫成什么呀?叫成绘画对象,解释下这个概念,什么叫做会画呢?注意就是我们刚刚说过的这个过程,你看了哈,浏览器与服务器第一次建立上连接以后呢,就会创建一个三神对象,有了三神对象以后呢,我后续的几次访问啊,只要注意了啊,只要每一次我都有那个三生ID的存在,我是不是都能去找到我原来这个三生对象啊,那么大家注意绘画代表的就是什么呀,只要同一个三声对象,然后呢,在一次绘话中呢,我是可以有多次请求的,你想想是不是啊?哎,这个叫做会话对象,但是只要你把三生ID丢了,比如说我再来的时候呢,我没有那个三生ID了,怎么没了呢?比如说我把浏览器关了,浏览器一关,那我默认的那个库。
08:16
是不是没了,哎,浏览器一关,那么没有30ID了,你再过来的时候,你就不可能找到它了,那么你就是一个新的绘画。听懂这个概念了吧,能理解吗?OK,好,那么我们把这个说完以后呢,接下来我们就具体呢去使用一下这个赛事啊来怎么去使用呢?大家注意,我们回到我们的这个开发工具里面,然后呢,我还是不在昨天这个代码里面去给大加东西了哈,我们重新再拷贝一个,我叫WEB03。拷贝完工程以后呢,一定要去记得修改一个什么东西啊,哎,叫做什么web,你找到这个contact route我们改成WEB03就可以了啊,那么改完以后呢,大家注意啊,呃,现在我要使用这个三神做什么事呢?我先来给大家去演示一下这个三生机制啊,怎么去演示这个三生机制呢?大家注意啊。
09:18
我想想哈,呃,我们就拿这个昨天的一个是了,我们再来写一个吧,我们去用一个class啊,用一个class,我们叫什么呀,我们就叫什么session啊,我们不要扭class了哈,来,我们直接去拗一个什么东西呀,扭一个solve。好又一个solve,然后呢,我就叫什么呀,我就叫做solve,能看懂吗?看懂了吧?OK,那么在这个so里面呢,我来给大家去演示一下这个呃三的这个机制哈,啊怎么演示呢?大家注意啊,就是我进来以后呢,大家就在在这个位置,就是每一次请求进来以后,其实这个地方我们都会有一个新的request对象。
10:05
对不对,OK,你看我就做这样的事啊,就是我来先打印,比如说呃,CO,好,我来打印当前请求的request对象,好,我们来加上request,能看到吧,这是我的当前的这个请求啊,然后呢,我要获取我们的session对象,因为它以后帮你创建一个session对象,我们怎么获取呢?它叫做http session等于什么呀?就是request get session,这就获取到了,然后你来输出一下我们的这个session对象啊,好,我们来输出一下我们的这个session对象啊,就是呃,当前请求的session审对象啊,然后呢,加上我们的session审,并且呢,呃,我再给你加上一个什么呀,再来输出一下啊,就是我们的三声ID,那么就是加上什么呀,加上三声对象的里面有一个get。
11:06
ID能看明白这个吧,好,然后呢,呃,我们在因为我要模拟多次请求,所以说呢,每一次请求中间呢,我都给你打上一个这个分割线,看明白这个意思了吧,好,那么接下来大家注意,呃,最后的话呢,我给你比如说这个response.get right.print。随便写出一个东西吧,好吧,啊,比如说就是我们这个,呃,就写个success得了啊,就是相当于我访问一次呢,它就给你写回一个success,看懂了吧,来接下来我们就来测试啊,叫做session,好,我们把这个部署到我们的淘T中。来,下一步啊,把WEB02我们就给它移除掉,来finish OK,重启。注意不要使用火狐哈啊,关了它是吧,使用谷歌对不对,好那么就是WEB03,然后呢,访问谁来着3SO吧,哎,来注意了第一次啊,这个有点小是吧,成功了吧,我们看后台哈,你看当前我的请求对象是谁呢?叫做什么?大家记这个哈,就是F21什么6614什么什么,你看这是30对象法是什么4A23EE C,看到没有,有一个三星ID对吧?那么我刚才说过这个30ID它会以cookie机制,是不是给你发回到这个浏览器端啊来,那我们就到浏览器里面,我们去瞅一瞅哈,有没有所谓的这个session好设置里面,呃,找到我们的这个高级,高级里面呢,有一个内容设置,看到了吧,这里面呢,有一个cookie数据,好里面有一个查看所有的cookie和网站数据,有一个local host的点开,你看是不是有个解下的ID啊展开。
12:56
展开以后呢,我们来对比一下869开头的D82结尾的,来看869开头的D82结尾的,一样不一样一样吧,OK,好,那么接下来大家注意,我再来发送一次请求。
13:13
听好了哈,又一次己就来了哈,那我就刷新一下是不是可以了,刷新好来看这个位置,注意啊,这个地方呢,有一个假象,什么假象呢?就是你看这个request对象,你看的居然是一样的是不是啊,其实注意它不是同一个对象,能明白吗?哎,它不是同一个对象,听懂了吧,每一次都会创建一个request对象的,这个你一定要记清楚了,你不要被这个假象给干扰,你听懂了吧?哎,不要被他干扰啊,它每一次都是一个什么新的对象的啊,但是这个session呢,它就是一样的了,能明白吧,这个session声就是一样的了,然后呢,你看一下这个session ID是不是还都是一样的呀。能看明白吧,哎,三声ID都是一样的啊好,那我再来一次请求呢。
14:00
呃,再刷一下啊,大家来看这个位置是不是还是一样的呀,能看懂吗?诶这个还都是一样的啊好,那么假如说现在大家注意了,假如说呢,我把这个浏览器给关了啊,我把浏览器给关了,关了以后会出现什么现象啊,是不是cookie没有了,Cookie没有了以后,也就意味着那个解3ID没了吧,那么你这一次请求过去以后,你能通过那个session ID找到以前的那个赛对象吗?找不着,所以说现在你看我再来访问,我们看最下面这一次变了没变了吧,30变,但你发现这哥们还是那个东西,我告诉你他就是一个假象,但是呢,他每一次都不是同一个对象。听懂了吧,啊,你一定要注意request每次都会创建新的对象,但是30你看一下这一次确实是不一样的吧,而且你看30IDD69什么五一二零一样吗?不一样了。明白了吧,但是呢,我们在正常情况下,只要你的这个cookie没有失效啊,就是你cookie没有失效,那就是也就意味着解三生ID还在的时候,我是不是都可以使用我的同一个三生对象的,明白这个机制了吧,OK,那么也就意味着我们使用三省呢,主要是能完成什么效果呢?我可以让三省给你管理一个状态,并且呢,我接下来在多次请求期间,只要能保证我用的是同一个三省,那么我们就可以让他们当成一个具体的一个绘画。
15:30
啊,这是一个,呃,把这个说完以后呢,还需要给大家去说这样的一个问题,那你说这个session什么时候就会失效了呢?第一个浏览器一关是不就失效了,浏览器关了为什么会失效了,因为三生ID没了嘛,三车ID没了以后呢,你再一次就过去以后,你没有卡号,你就找不到那个卡吗?是不是OK,这是第一种情况,第二种情况,赛车对象有一个默认的失效时间,大家需要记一下30分钟,那么这个失效时间怎么就怎么就失效了呢?就是当我跟浏览器,当我浏览器与这个服务器建立了一次请求,这是我的第一次请求,我创建了一个三生对象,并且呢,把这个30ID的也给你发送回来了,它保存下来了,理解吧,但是我在下一次请求的时候,第二次请求,第一次请求与第二次请求期间呢,我超过了30分钟了。
16:30
明白吧,就是第一次发送请求与第二次发送请求的这个中间呢,我超过了30分钟了,那对不起啊,就算你有这个session审ID,服务器端你也找不到session对象了,因为服务器中默认session对象,就给你保存SESSION10分钟听懂了吧,OK,但是啊,有一个这样的问题。假如说我第一次访问的时候呢,诶,我把这个赛车对象给你保存下来了,ID呢也给你保存下来了,那么我在第二次访问的时候呢,我等了29分钟。
17:05
能理解吧,那我直接请求过来了,诶ID呢,我也给你带过来了,能找到他吗?可以找得到吧,OK,那么因为你没有超过三分钟啊,他就是在的啊,但是呢,大家注意,我第二次与第三次期间我还能等多长时间啊?诶还能等30分钟,因为它这个时间是按照你上一次访问完了以后来去记的,你上一次访问完了以后,我就要重新开始去记,记录那个时间了,总共是30分钟,明白了吧,而不是说它总共能保证30分钟,是每一次请求与请求期间我有30分钟的这个时效时间的。理解这个概念了吧,好,那么具体这个时间呢,我们是可以进行设置的,在哪设置的,在我们Tom cat里面去修改哈,我可以带着你简单的去看一眼,但是我们不要去改它,理解吧,来在。com下面呢,有一个呃,Con con里面有一个we部的叉ML啊,我们打开来瞅一瞅,在外部的插喵里面呢,我们来找找哈,其中有一个找找啊来在这你看见没有一个3CON,有一个什么3TIME up是不是30啊对吧?然后你看啊,Minutes不就是分钟吗?
18:25
看到了吧,诶30分钟,那么如果说你想让你这个30保存的时间更长一点,那你可以把这个时间呢,稍微的往大了改一改,但是基本上呢,我们是不会去改它的,可以改,但是呢,我们不要去改,除非说哎,你有特定的这个需求,你再去改它,理解这个意思了吧,啊那么这就是我们的一个筛选这样的一个机制,明白了吗?OK。
我来说两句