00:00
好,下面我们来看对三大组件的动态入册,那我们知道啊,呃,Solidet协议的三大组件,Filter和listener。他们都需要进行注册。而这个注册呢,我们可以有两种方式实现,一种方式是通过在外边的叉mail里边进行注册。还有一种方式。我们使用注解对不对。那么我们今天说的是第三种方式什么呢?是动态注册。什么是动态注册?他说,我们web应用在运行过程中。我们通过代码,通过程序。对他们进行注册。这就是动态注册。在运行过程里边才注册。
01:02
不过需要注意啊,这个动态注册。它的使用是有限制的,它主要是出于对系统安全的考虑啊,只能在应用启动的时候进行注册。而不能是。应用在整个运行过程中随意进行注册,这是不行的。当然了,我们对于应用启动这个时间点可以通过谁。是不是这个contest listener这个监听器。来吧,我呀。对不对,好下边呢。我们就分别来说啊,这三大组件的动态注册。我们先来看第一个。直接写代码。Dynamic。
02:10
Dynamic动态注册是吧?吧。3.0。我们不需要外面的ma,所以直接finish。动态注册,那咱们首先这样吧,先定一个so。Com点北power not.s。呃,我们这个就叫some。这里边儿啊,这个呃,我们先不管它了,一会儿要给它删掉。
03:00
那么,Do get。看到没,这个注这个注释啊,我们给他删了,一删就相当于他现在是没注册的,对不对。紧接着呢。紧接着咱们这样。Response,点。Out out点。什么东西?这个。呃。SOME1。
04:02
动态注册,你能看见这句话说明这个运行了,运行了就说明什么,它肯定是动态注册过了。这儿没有。注解,也没有,外边的车没有。所以他肯定是没有被注册的啊。这肯定是没有被注册的。那好了,怎么样进行动态注册呢?进行动态注册。我们需要使用。我们的上下文。看着。啊。我们看着。找到solid上下文,也就是contest呀,就它呀。这里边儿的方法我们看着啊,诶就看这几个。
05:04
ADD filter。这干嘛的?动态注册filter。ADD listener。动态注册listener。ADD soet,这是动态注册。我们看一下它的参数啊,你像这个这什么solid name solid name name,第一个参数都是solid name对吧,这个呢。是的,Class是class这个。就是个累。这个对象啊,Somebody对象是不是。这个呢字符串。Class name,我们这样,我们用这个,我们用这个啊,我们再打开看一下。
06:01
你看这个方法。什么是不是3.0才开始有的呀。对不对?他干嘛的?As the with the given name and class name to this contest。就添加嘛。添加到当前的这个上下文里面。那好,现在我要动态注册了。动态注册当前的ET。啊。对呀,有个问题啊,我现在把这个代码就没没思考就直接写到这儿了,能写到这儿吗?你这个so。对,这个so的注册能写到这儿吗?啊,肯定不行啊,肯定不能写到这儿,你只有注册过了才能才能运行它啊,那写到哪。
07:05
那应该写到哪?我们刚才说了呀,它这个动态注册在什么时候,哪个时间点进行注册呀,应用启动的时候,所以我们需要来一个。来个listener。My servant contest。Listener。实验的接口。就他contest contest initial,就他吗?上下文初始化的时候干嘛,我现在要。
08:01
动态注册。So。好了。那动态注册你就得先获取到,获取到什么contest吧,获取solidt怎么获取?从事件里边啊点对吧,SC。先获取了,获取了以后就可以注册了ic.addso。So your name。起个名吧,Some。So class。那就是他呀,拷贝全名。
09:05
对不对。不过啊,这俩参数我们这样,我给你把它单独抽出来,抽成一个变量。这个也单独抽出来。Class name。那么。下面两个变量的值。我们可以或者说指一般是通过一般是。从page文件读取来的。我从配置文件里面读过来。
10:00
然后我就可以动态注册配置文件里边是不是这个呀,这就是真正的动态注册了。我在配置文件里面一配。哎,我就能给他注册了。当然了,你这个配置文件可以是什么配置文件,你这你自己定义吧,叉L也行是吧,Properties也行,什么文件都可以啊,一般从那里边读过来的,好,关键看在这儿啊。你看着它这个方法有没有返回值。有吧,这法这是什么?这这是写的什么东西啊?注意啊,这是个接口。Solid res。Registration,这是个接口,这个接口里边有一个子接口叫。Dynamic。
11:02
所以它返回值是这个接口的子接口。打开你看看。是个借口是吧。那么它里边啊。注册,你现在你注意啊,你现在这个注册了,他注册了以后。你怎么访问他的?我们得有相应的UR pattern对吧。那怎么就有了U2PATTERN了?看到这儿。它里边的方法啊,这儿没有,我们看着这儿。我们看着哪儿呢?这儿。ADD mapping。A mapping,也就是那个dynamic接口的接口,Subject registration里边有个叫a mapping的。他是干嘛的,添加映射呀,Service映射信息you pattern,所以。
12:06
我这儿要写这样一个东西,返回值啊。返回值。Registration dynamic。对吧,诶就是这个。然后S rd.at my,你怎么样访问他呀,杠,我就上。OK了。为。指定什么URL pattern?好啦,现在这个程序就写完了。我们的这个so动态注册。
13:00
Solid。就写这儿吧,这样写这儿吧。动态注册。代码就写完了,我们现在可以跑一下了。看看萨。能不能访问?Yeah。不行啊。这个是不行啊。是不是我们现在发现它是有问题的呀。我们看看这个执行了没有呀,忘了。肯定不行,为什么?这个是不是没注册呀,我们这个listener是不是没有注册呀。是不是你这。监听器啊。
14:00
那怎么注册?我可以艾特web?Listen。这是不是就注册了。OK,重新发布。好了。刷新。OK了吧?对不对,这这乱码问题好解决呀。乱码问题,这这有汉字是吧。Response。Test IL。等于utf杠。爸。好,重新发布过了,我这边直接刷新没问题吧,这就OK了,对于somebody动态注册就完成了。
15:11
不过人家我记得我们外边的里边啊,或者是我们的注解方式都可以添加动态参数啊。那这个动态注册能不能为这个注册的solid添加动态参数呢?那当然可以。怎么做,看着。看到这儿。这是不是有set in perter set inter?是吧,我们点开它。Set in parameter。它的参数name value。对吧,那就是你参数的名称,参数的值。
16:06
那OK了。那这个呢。Have said in perter4。存放了什么map map建支队啊?你把那个出来参数的名称和值存到map里边,然后把这个map放进来。就OK了。所以。我们就直接写了啊。呃。为Soviet。添加动态参数。SRD点。Set parameter。
17:05
这个呢?北京动力节点。再来一个,我可以添加多个呀,Teacher。OK。添加过了,你注意添加过了我solid是不是就可以解析呀,我可以给他解析一下啊,嗯,我要获取获取那就是。获取初始化参数怎么获取了呀?this.get init parameter names,我们这个叫names,我是不是便利,这不用多说是吧?names.has more elements,这都常规的啊,常规的写法,然后来个name,等于,诶,不是name names点。
18:14
Element,我们这个就叫。然后value呢?完了就可以get in permitter。这value。然后我们给它写到这儿吧。Name等于value。OK吧,这样。再给他换个行。
19:00
这个你也给他换个行。OK了。我这边儿刷新走。没问题吧,对不对。动态参数也就添加上了,那么这就是我们动态添加谁。动态注册。
我来说两句