00:00
好来,接下来我们就回到我们的开发工具中啊,我们去写出一个具体的监听器来,呃,那么我们在写的时候大家注意啊,我们先来去创建一个包啊,就是这个package,然后呢,我们就叫做log listener啊listen OK,那么在这个包下面呢,我们其实直接去用一个类就可以,然后呢,你再去自己去实现那些接口,但是呢,因为那些接口呢,它比较多啊,又有什么request,又有session的,又有什么solid contextest,以及呢,每一个呢,都有一个生理周期相关的,也有这个数据绑定相关的,所以说大家可能记不清楚,那么我们就不用去记它了,那我就教给大家你看了哈,我们再去new的时候呢,就不要去new一个class了,而是去new一个直接就是一个listener,你去搜索一下。在这啊,这其实不是手出来了,我觉得我这个好像又坏了,你看到没有是吧,又没用了哈,啊,那就就这个东西是吧,Listen看到了吧,来其实呢,你在这方你搜索一下呢,然后就能搜索到这个listen,那么你来选中这个listen来选中它下一步好,你先给它取一个名字,比如说我就要去鉴听我的session创建,那我就叫做my session listener,这是我自己取号的一个名字,能看到吧,然后呢,注意再点击下一步,那么就来到我刚才看到的那个图了,在这里面你要监听谁?我要监听的是session,你要监听session什么事件呢?我要监听的是它创建销毁的事件,那么就是life cycle,所以说我们只需要把这个勾给它打上,打上这个勾的原理是什么呢?就是帮你去实现了这样的一个接口,所以说呢,我们就不用去特意的去把这个接口给它记住啊,来下一步啊。
01:59
基本上呢,已经没啥要选的了,直接分进去就行了,那大家来看它就是创建了一个类,然后呢,帮我们去实现了这样的一个接口,那么这个东西呢,就是我们的,哎,一个什么鉴定器啊,就是监听三生生命周期,好生命周期相关的这个事件,OK,那么在其中呢,就有一个有一个什么东西啊。
02:26
哎,这个多造器我们不需要,我们就把它干到了啊,然后呢,其中就有两个方法,你看一下,一个是session created,一个是三的destroy,那你能知道是什么意思吗?这个就是什么呀,当将听到三对象被创建好,则会执行该方法,那么同样的道理,下面呢,哎,当监听到我们的三审对象。
03:00
好,三审对象被销毁了啊,被这个销毁,那么则会执行概念方法,这就是我们的一个监听器,它这样的一个效果,那么其实这个监听器它属于我们这个设计模式里面的什么设计模式呢?知道设计模式吧,那么你都听说过哪几个呀?大力是吧?还有呢?啊,工厂是吧?嗯,还有呢,没了,嗯,观察者,观察者公式是不是?诶有人知道,好,来听我说啊,如果说你将来面试的时候,人家问你说,诶你用过设计模式没?你说用过,好那你给我随便说几个,比说单利模式啊,基本上5000块钱啊。是吧,这是最基本的一个,你一定要说出几个很高大上的东西来是吧?嗯,这个工厂模式我觉得怎么着也要比那个单利好一点是吧,因为单利太简单了,也好理解,对不对啊,你一定要去说出几个这个比较高大上的来,总共有20几个,23个是吧,你从今天开始下去,以后一周看一个设计模式时间够不够不够。
04:23
不够啊啊,你一周看上一个设计模式,你一个月你还看四个呢,对吧,你面试的时候,他需要你说出23个来吗?我告诉你说出五个来,你能把五个说的很明确。就已经很厉害了,听懂了吧,抽时间下去以后把这个当成一个任务,一周你就看上一个设计模式,当然哈,你不能只知道它的这个含义,你就你得知道他在实际的项目中,实际的案例中应该怎么去设计,应该怎么去用。听懂了吧,所以说呢,一周你去学会一个设计模式。听懂了吗?OK啊,那么接下来我们这个家庭地就属于什么呢?它就属于其中的一个,叫做观察者模式,能理解吗?什么叫做观察者模式啊?我偷偷的看着你是吧?我就看你做啥,我看到你创建三省了,行,那我就要去做一件事,对吧?我看到你销毁三省了,行,那我就要也要去做一些事。
05:17
理解了吧,啊就是呢,大家注意这个地方呢,它其实就属于一个观察者模式,好,但是我们这个降低剂大家注意啊,你写好这个监低剂以后呢,我们现在呢,就可以去来分析一下我们这个业务了,那也就是呃,当我降低到你这个双三审被创建了,那么这个方法会执行对不对,那也就意味着只要这个方法执行一次,代表的就是。有一个新的赛事对象被创建了。对吧,那我就可以在这个方法里面做什么事啊。我是不是做一个统计就可以了,嗯,能明白吧,但是我们还要去想的就是什么呀,呃,我统计好了这个人数,是不是得给想办法把把它保存起来啊。
06:03
能明白什么意思吗?而且在线人数的话呢,你得告诉每一个用户,比如说我登录上去了,我要看到当前在线多少多少人,你登录上来以后,你也得看到当前在线多少多少多少人,也就意味着这个在线人数我必须是得共享给所有的用户的。能明白吗?啊,那怎么共享给所有的用户啊。注意,这个地方我们得用到一个新的对象,叫做con,也就是我们四大作用于里面的最后一个,也是最大的一个叫做的上下文对象。好,这个东西我就在这给你去说了啊,上下文对象,上下文对象是吧,然后呢,呃,它是个什么东西呢?大家注意哈,我们再回头给大家去看一下,我们在讲这个EL的时候。
07:02
啊,我一定要把这个问题给你说一下,要不你到时候真的就不知道他是个啥了哈,来EL在哪讲的来着,这里应该就在这了,在这看到了没有一二百达式啊来注意它取值的这个四个作用域,大家注意前三个我们是不是都见过了,对吧?最后一个它叫做application scope,那么其实它对应的就是我们的solid contact,能明白吧,为什么叫做application scope呢?因为这个东西我们E样本达是是在JSP里面去用的吧,是在JSP里面去用的,OK,好,大家注意在JSP里面他把那个so contact呢叫成了application,其实本质上就是我们的so contact对象,这就是一个东西,只不过是叫法不一样了。记住了吗?就是叫法不一样了啊好,所以说呢,这个doing意我们说的这个application scope就是代表着我们当前正在使用的这个solid con,那么这个对象我需要给大家解释一下,它叫做solid的上下文对象。那么比如说在我的tocad中,我有一个应用,就是我们的WEB03能理懂吧,那么他会为你整个的这个应用创建唯一一个solid contact对象,而这个solid contact对象在整个应用中我都是可以进行共享的。
08:29
明白这个意思吗?而且它有一个机制就是什么呀,Top服务器启动。就要创建,什么时候这个对象就没了呢啊,我陪着他们看去啊,到天荒地老是吧,只要你服务器不关,我这个对象一直都在。那你来想一下,那我就可以把我的在线人数我就放到这个solid contact里面了,因为他对我的整个应用都是共享的,那我的每一个用户过来是都能共享到这个对象,对不对,而且有个什么好处啊,就算你下线了,这个东西是不是还在啊,对不对?诶这个东西还在,还能给别人去用,能明白这个意思了吧?好,那我就把这个简单给大家写一下啊好,它是我们S的上下文对象,就是呢,我们的web应用服务器。
09:22
好外B应用服务器啊,会为每一个啊每个什么呀应用啊,每个这个web应用的创建唯一一个啊唯一一个solid contract对象,明白这个意思了吧,而且呢,这个solid contact对象呢啊就是在整个应用中啊就是呃在整个web应用中作用欲啊最大,且什么呀可共享。啊,且是什么呀,且是所有的什么呀,用户可共享的,明白这个意思了吗?OK,然后呢,呃,再一个的话,大家记住啊,就是sum。
10:10
好在什么呀,在我们的这个web应用,服务器启动则被创建,然后呢,服务器销毁啊,此对象才会什么呀,此对象才会被销毁,好所以说呢,大家一定要把这个solid contact记住,因为这个东西在我们后面讲框架的时候也会用到它,理解了吧?啊那么这个呢,我给大家强调一下,好,那我们知道了这个以后呢,接下来的事就是什么呀,比如说我监听到有一个用户啊,有一个三被创建了,那我就可以尝试着从这个solid contact里面去找一下当前有没有人在线,如果没有人,那说明这是第一个人了。对吧,你就把在线人数为一绑定到这个对象里面,如果说我取出来人了,说明我不是第一个人,我就要在已有人数的基础上是再加上一,啊能理解这个意思吗?啊,因为你降低到这个三生框架的时候,你也不确定这到底是不是第一个用户。
11:15
你就得尝试着到那个so站里面去看一下有没有绑定过一个用户,对吧,有没有这个在线人数,在线人数如果说我取不到,那说明我就是第一个人,我就把当前在线人数一绑定到它里面就行了,假如说我能取到了,那说明当前的这个在线的创建不是第一个用户,我就在取到的这个用户的基础之上再加上个一,是不是相当于又一个新人来了,明白这个流程了吧?OK,那我们就来写一下,所以说第一步我们要做的就是什么呀,首先我们得想办法获取谁呀,你得获取到这个家伙吧,啊,这家伙怎么获取啊?因为它整个这个外部应用服务器中只有这么一个对象,所以说获取它的方式是特别多的,你在solid里面能获取,你在JSP里面能获取,而且你在solid里面获取的时候,你可以通过request获取,你可以通过这个session获取,你可以通过当前的so对象来获取,基本上都能获取得到它,那么在这个位置的话呢,我们需要用到一个叫做你想用别人也用不上哈,因为它只有这么一个对象,叫做事件对象。
12:28
竞争的事件对象啊,那么我们直接通过它的SE,你看这里面有没有一个get solid contact有没有没有,那我就先get上三声来三声里面不就有一个盖的吗?对不对啊,反正我是能获取到你的,获取到以后呢,来假设啊,就是嗯,假设,那不是假设啊,就是我们会在solid contact中绑定一个在线人数,那么这个啊,通过什么呀,通过一个这什么操作好通过一个什么呀,啊通过一个啊比如说啊,靠着这个K啊,靠着这个K好这个K,那么这是我们的一个想法,那么所以说我们第一次,比如说我将听到这个3V创架了,那我就要尝试着从contract中获取谁呀。
13:26
好,从它里面的区域获取一下我们的count咋获取啊,sc.get和tribut,把你的countt放进去,那么它会返回一个,注意这个返回的是一个object,那你就直接object一个什么呀?啊,Count就行了,看懂了吧,那你来判断一下,判断能不能拿得到它,如果说count是等于等于空的,也就意味着我获取不到,那说明现在我是什么呀,第一个用户。是不是第一个呀,对吧?哎,第一个用户上线好,那我就要做什么事呢?哎,我就要做这样的事了啊同志们,那就是sc.site和t tribu怎么算的呀,把countt放进去,总共在线人数是一是不是行了,对不对?那么如果说它不等于空,那我要做什么事呀?那就是scr set attribute,我往里面放谁呀,放一个count,然后呢,把当前的这个count强转成,因为它是加强转成A的,我再加上个一啊写法了是吧。
14:37
能看明白吗?能看懂吗?可以吧,OK看得懂吗?对吧,就是你看看啊,假如说他是空的话,说明在我之前,在这个三项创建之前,是没有往它里面绑定过东西的,能理解吧,OK是没有绑定过东西的,好,那么如果它不等于空,说明之前绑定过,那我就在你原先的基础之上再给你加上个一嘛,因为我又来了一个人了。
15:07
明白了吗?可以吧,好,那这就写好了,来写好以后的话,大家注意这个监听记写好呢,我们还得做什么事啊啊,这个加妮给他写错了是吧,大致多了个O盟,没关系啊,然后呢,加妮你写好以后呢,我们还需要做一个配置,但是这个配置呢,人家已经帮我配好了,因为我们直接创建的是listen吧,对吧?这个配置怎么配呢?特别简单,就是这样的一个listen,你看一下,这就是我们监听器的配置,能看明白吗?好,这内的配置就是一个listener,然后呢,Listener里面呢,就是一个listener class。明白了吧,哎,就是怎么配好的,好,那么这个配好以后呢,那么我们现在呢,就可以去使用了,怎么使用呢?你看看啊,当我再来到你的谁呀,当我登录成功以后,我再去往这个慢点gfp的时候,我就可以在这个地方,比如说诶欢迎谁谁谁登录,那么我就再可以写一个当前在线人数,在线多少多少人能看到吧,哎,当前在线多少人啊,你看啊,在这个位置呢,我就写一个fo程,然后呢,我特意的了给他什么。
16:24
这样哈,我来这个。回个车哈。好,欢迎神仙登录当前在线,你看了哈,当前在线多少多少人啊,然后这个放程里面呢,我就给它加个颜色啊,就是我们重点的强调一下,好,这个人数怎么取啊,怎么取啊,是从我的那个sorry康站去取那个count吧,对吧,那你就可以指定成count就行了,明白了吧,这就好了。
17:01
难吗?你只要理解了这个思想,这个东西特别好做,好接下来进入测试啊,首先呢,我们回到这,把这个重新启动一下啊,搞错了这个是吧?啊这是个假象。来试一下啊,比方说然后呢,123456登录一个人了吧,你们不要登录哈,千万不要登录哈,要不就下不了课了哈,当下大家记得了。我登录了一次就一个人吧,对不对,好来注意啊,你再登录就假的,你再打开这个标签登录,那也是假的,因为你用的是同一个浏览器,说说我啊启用一下。这个哈啊四个八,然后呢,WEB003了是吧,Login到JSP啊,那我再通过这个浏览器登录一次,是不是又算另外一个人了,对不对,好那你看看啊,那我就使用这个这个用户名吧,123456,好,我又再登录一次,走是不是两个人了,但是这边的话,它是不可能及时刷新的啊,你必须得什么重新刷新一下,你才能看到当前是两个人的,看到了吗?OK,那比方说呢,我IE呢,我再来这么一次啊,IE呢我也登录一次。
18:29
好,那我给你讲加。好,大家来看密,然后呢,随便写个123456,好,我们来登录一下走。三个人了吧,是不是三个人吧,对吧,你总共登录了三次,那就三个人,你看这边的话,你再刷新一下,它也是什么样三个人,这边的话你再刷新一下,他是不是也是三个人啊。能看明白了吧,OK,那么这样的话呢,我们就把这个效果呢,就给它实现出来了。
我来说两句