00:00
我们来学习监听器。监听器专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象。当被监听的对象发生情况时,立即采取相应的行动,呃,比方说去抓小偷是吧,然后很多警察在那蹲点,看见小偷一出现,呃,他一犯事,我马上就给你实行抓捕,有点这个意思。监听器规范里边定义的一种特殊的类,它用于监听外部应用程序里边看这样的三个对象啊,Context http session跟request在里边是不是一共有四个预对象啊,他监听三个。分别是application session跟request,而没有那个配置contact contact生命周期是什么呀?是不是当前页面啊,我监听那个意义不大。
01:10
但request是有的,等对象的创建和销毁,以及监听这些预留项中属性发生修改的事件。看监听器的分类,按监听的事件类型,设备的监听器可以分为三种类型。第一种类型。监听与对象自身创建跟销毁的事件监听器。就是说这三个对象被创建,被销毁,我有一个监听器去监听,还有一个监听对象中属性的添加和删除的视角监听器,还有一个是专门监听session的,监听绑定到session域中某个对象的状态的视角监听器。我们先来看第一类。
02:11
叫监听与对象的创建和销毁。预对象的创建和销毁呢,就是监听这三个对象什么时候被创建,什么时候被销毁,那这三个对象什么时候被创建,什么时候被销毁了,比方说service context。这个什么时候被创建,外部应用被加载的时候创建这个对象是吧,外部应用被卸载的时候销毁这个对象,我们一会我们可以看见这个效果哈,那个应用被加载的时候啊,这个对象被创建,那个应用被卸载的时候,这个对象被销毁它呢。Session,我们当时讲session的时候呢,详细的讲过,Session什么时候被创建,Session什么时候被销毁,一会儿的话呢,我们还可以得到验证,还有一个是呃,Request,那第一个叫contact。
03:17
这个是用来监听service contact对象的创建和销毁的事件两个方法,一个是创建的时候调用这个方法,销毁的时候调用这个destroy的方法,两个方法同样。监听session被创建和销毁的也是两个方法,还有一个什么呀?呃,Request被创建和销毁的都是相类似的,那说完这三个之后的话呢,我们看如何创建一个监听器呢?创建的方式需要这样是吧,我们首先需要去实现一个接口,这个接口刚才我们已经看到了哈,有对应的接口,然后我们需要在这个web文件里边进行这个,呃,注册就可以了,好,我们来写一下。
04:16
写一个监听器class吧,第一个hello。Con。两个方法,第一个创建的方法。这个是对象被。
05:19
销毁第一步,我们创建了一个什么呀,我们创建了一个。A contactener。这个类本身的创建的话呢,很容易,只需要实现这个接口,而且实现这两个方法就可以了,第二步我们需要把它在外部软件里边配置一下。C。Listener,这就没事,然后。
06:20
启动服务器,大家看哎。我们没有发现这句话被打印40过来啊,43,这不是哈。需要看他。大家看我这个对象是不是被创建了,看被销毁哈,服务器关闭。
07:06
那我们看到这个对象被销毁了,同学会说,老师,你这个不是服务器启动和。关闭的时候才调对应的方法吗?实际上呢,不是实际上大家再看啊,我再把这个服务器我再启动。好了,我启动之后呢,我重新来加载当前的这个外部应用,怎么重新加载呢?呃,最好最好的一个方式就是我把这个类重新编译一下,这个时候它就会自动的来卸载外部应用,然后的话呢,再加载大家看一下,你看被销毁又被创建,所以说创建service contact时机是。当前外部应用被加载到服务器里边,它就创建了,当前外部应用被卸载的时候,那个对象就被销毁了,那回来,那到这个里边我们感兴趣的是什么呀?那在这个里边我总应该能够访问到service context吧。
08:13
大家看是不是有个CE呀,CE叫什么survey contact事件,这里边一定能够访问到sub context不在这儿呢吗?这个道理也是一样的啊,这就是我们的service contact listener,那这个listener是我们。学习八个listener里边最常用的一个listen,它真的是在当前外部应用启动的时候,帮我们对当前外部应用来做一些初始化的工作笔记s context。
09:08
啊,第一个我们需要知道这个listener是什么,说监听context对象被创建或销毁的事件监听器,没有事件的S监听器,啊,S监听。咱这个用的好了,那我如何去开发呢?好开发的话呢,只需要分两个步骤,非常非常的容易,第一个步骤。创建一个实现了ER的。
10:00
并且。实现其中的两个方法好看一下。这个写法呀,就是这样。CTRLC拿过来,然后呢,在web.XML文件中。配置这个立在哪审配啊这样写,三他能干什么,我们这个我们认为是外能干什么呢?这个listener是我们学习八个listener里边最常用的,这个是。
11:07
最常用的listener干什么呀?可以在当前web应用被加载时加载。对当前web应用的相关资源进行初始化操作。哪些算初始化操作呢?比方说创建数据库连接值。再比方说创建spring的LC容器,哎,等等等等都在这个里边看,或者是呃,读取当前外部应用的初始化参数。
12:25
好了,呃,至于说这个具体使用的话呢,我们在后边我们会详细的来用,比方说我们在做下一个项目的时候,我们会发现我在这个listener的这个方法里边。初始化这个方法里边我来干什么呀?我来创建这个数据库连接池,我们学的时候,我这个跟web集成,我们会发现我spring给我们提供了一个,呃,Service contact listener,它在那个里边去创建spring的LC容器,那同样也在那个里边去读取当前外部应用的初始化参数,那个初始化参数是spring配置文件的位置等等等。好了第四个API,那既然我们有这个了,是吧?里边有哪些新的API值得我们看呢?
13:24
Contact的是吧。再来截图意义的,大家看是不是就这两个方法呀,这两个方法本身很容易,这个是当前外部应用被创建的时候,呃,当前外部应用被加载的时候调这个方法,或者是说service context对象被创建的时候到这个方法。Service contact对象被销毁之前教这个方法,这两个我们也说一下吧。他俩。
14:14
这个是context对象被创建的时候,然后呢容器调用该方法。Contact什么时候被创建啊,就是当前外部应用被加载的时候被创建,G当前web应用被加载时,好了,那这个呢,就是w the contact对象被销毁之前。
15:07
当你外部应用被卸载的时候,这个方法都是容器来调用的,这两个方法本身看上去很简单,还有什么呀?不,有个参数啊,Service context event就是事件吗?呃,里边只有这么一个方法,叫获取service context,说一下吧,你说C拿过来。可是这个对象里面只有这个方法,这个中的这个方法干什么用啊,获取行了,这样的话呢,我们关于这个contact listener,整个的这个过程的话呢,就都OK了,那跟他类似的。
16:02
四。我们说有三个监听器啊,是监听预对象被创建和销毁的,还有一个叫我这看也行哈,叫request listener,这个是监听service request被创建和销毁的对象。好了,和HTTP。好了,这两个对象呢,跟着我们刚才讲的这个service相类似,大家首先来测试一下它,然后的话呢,来测试一下这两个listener,这两个listener跟这个相类似,说一和这个类似。
17:03
好了,其他的话呢,我就不说了,是吧,大家既然跟这个类似的话呢,那比方说呃,如何来这个它是什么呀,如何来写呀,包括有什么用啊,包括API是什么呀,你都可以进行参照,OK,大家写一下吧,我们一起来写一下,后两个接听器怎么写呢?我直接写了啊,我一个类是不是可以实现多个接口啊,所以说来request isn http。Listener实现所有的方法,看这个是三神被创建和销毁。
18:06
被销毁。Request被销毁。被创建OK看一下。创建一个JSP。
19:05
One。有看到什么了,看到我当前外部应用才当前外部用被这个加载的时候,是不是创建这个solid contact啊,然后你看这个页面我刷一次。我第一次,我第一次刷的话呢,Request被创建30分创建request被销毁吧,然后我再刷的话,怎么了,是不是每次都是request被重新销毁啊,因为现在我是不是一个三神呢,我这是一个三神来我复制。好,我开一个。新的页面大家看这个时候这个页面已经显示了啊,这个时候是个什么情况。
20:05
是request被创建,Session被创建,Request被销毁吧,为什么?因为我这是不是一个新页面啊,这个新页面应该是对应的一个新的session吧,所以说我们看到了啊,请求被创建,Session被创建,请求被销毁,好,我把这个页面关掉,大家看这页面一关的话,我没有看见任何不可打印吧,说明光把页面关掉是不会导致单身销毁的吧,什么时候导致单身销毁啊?得是我们去调了三神的隐外,这些方法或者三身过期,或者是大型外部运动被卸载,都会导致筛神被销毁,于是呢,我来写一个JSP。我写一个taste.vip。
21:03
好了,我从那个页面连过来。这OK,来这个页面,我来这个页面的话,我不干别的是吧,哇赛神销毁了大家看。Session身点是三身失效。保存好我再刷这个页面来家看这刷这个页面的话呢,永远都是request,这个我点它过来看三是不是被销毁了,我在访问这个页面,我刷这个页面它会怎么样,是不是request被创建,S创建,三创建之后是不是马上被销毁了,马上被销毁,然后request被创建啊我们可以利用这三个监听器,哪三个呢?分别是。
22:13
Request listenerttper跟application contact contact listener,利用利用这三个呢,把这三个预对象整个生命周期搞得非常清楚,我们下午的时候的话呢,我们就来详细的就来说那个吧,我们来看一下他们对应的API吧,Ad session listener,这里边的话呢,有两个方法,两个方法不用说了吧,Session被创建之后马上掉这个方法,塞身被销毁之前就这个方法好了,看这个类里边应该只有一个方法,就是返回塞身,跟我们想的一样哈,别看这个。
23:11
好了,过来这里边也是request被创建掉这个方法,Request被销毁掉这个方法,这么说不确切啊,这么说应该说request被创建之后马上教这个方法,Request在销毁之前教这个方法,好,我们点进来看,这个里边应该只有一个方法,就是返回request是不是多了一个,还有一个返回solid contact怎么样?这个用不用都行。哦,看这个这个访问的是什么,是啊,对so request是吧,那我从request里边我是不是可以返回session啊,我从session里边我是不是还可以返回这so contact呀,所以说这个方法有没有都行,但是这个方法的话呢,已经在我们的预料之中了,OK,到这块的话呢,我们关于呃,这三个listener的来龙去脉的话呢,我们就讲清楚了,那么那么呃,利用这三个,我们可以很好的看到这三个预对象的生命周期过来,我们这个我们要说一下。
24:19
二利用第三个利在哪啊?以及。嗯,可以把。Session及application的生命周期,进一步要注意了解。
25:12
这个的话呢,我们下午再说行,上午就行,到时。
我来说两句