00:00
好,前面呢,我们说了一下,用咱们这个嵌入式的select容器定制器来帮我们修改嵌入式的select容器的配置,它的这个使用呢,就是给里边传入一个可配置的嵌入式的容器,我们都可以通过调用它的API,在这里边呢,我们来设置端口,设置访问路径等等等等。那么呢,接下来我们来说一下如何来注册的三大组件filter list,说这个呢,也是由于我们现在我们看到我们创建的这个through boot应用,默认呢是以炸包的方式来启动嵌入式的tomcat。而我们不是创建一个标准的咱们这个web应用的目录结构,如果是一个web应用的目录结构,那么呢,我们这个src下的这个慢下会有一个web APP文件夹,Web APP下呢,有我们web info,诶web info下有我们的web插,我们可以把三大组件都注册在web插中,而没有了这个web插,我们想要注册这些组件行不行呢?那当然也可以,所boot呢给我们提供了三种方式,如果要注册so用so regration b,如果要注册filter用filter registration being和咱们这个listener,这是来注册listener的g being,所以呢,这都是咱们这三个啊g being,好,我们就来把它用一下。
01:35
我呢,写上我们的,我给我们这个filter listener里边来写一些东西。我来写一个我自己的so,我们就放在so包下,我们就叫MYSO好,要成为一个标准的so,我们可以来继承HTTP。好,我来继承它,继承它呢,我就来重写一个do get方法,哎,我们来处理get请求。
02:04
处理get请求,其如果要还能处理do post的请求,那我们就来写,我们要处理post请求,那我们就来再来重写do post方法好,那我们就这么来一重写,我们在do get里边,我就来调用一下do post,哎,它两个的执行逻辑都是一样的,不管是get请求还是post请求,那最终呢,把这个响应我们来写在这。我们的response,我呢就直接get write,我们给浏览器来输出一句话就行了,我们就叫hello my。好,这是我们写的一个标准的,So,它要能起作用,哎,我们现在写在这还不行,我们得利用boot提供的方式来把它注册在容器中,我们要注册要用GB,这个怎么用呢?我们来看把这个配置呢,哎,比如我们把跟我们这个服务器有关的配置,我们都放在my server con里边啊,首先呢,我们来说这是一个配置类。
03:11
我们包括呢,把我们之前配的咱们这个啊,配的咱们这个服务器的相关代码我也扣过来,好,这个呢是来配置服务器的,配置嵌入式的so容器的,来我们呢,再来在上边我们来注册三大组件,注册三大组件那怎么注册呢?首先我们来说你要注册solid,要返回一个叫solid reg being,把它放在容中,我们就把它拿来导进来,我们比如就叫MY,我们第一个那么B我们点进来,我发现呢,它其实是一个class,那我就直接出来就行了。New,一个so reggistration being,那拗出来它以后好,我们把它返回过来,我们来看拗它的时候呢,它这主要呢,有一个有参构造器,这有参构造器呢,能让你传入一个标准的,并且呢,你来说一下你拦截哪些路径,诶这个so呢,就是我们标准的Java X,哎,So规定的好,那我们呢,就用它的有参构造器,我们传一个码MYSO,把我们自己的so传过来,他要映射哪些路径,哎,我就写一个杠,MYSO。
04:36
我们就映射MY请求,当我们发这个请求就会来到我们这个,当我们这个映射做好以后呢,我们接下来return。哎,Return一个这个being就行了,我们把它加在容器中,哎,一定要加在容器中,然后呢,我们来启动我们的项目,我们看一下访问my sole是不是我们的能给浏览器写出我们这个hello my so这句话。
05:08
好,我们来访问浏览器。Local host卡八零我们看一下啊,端口我们之前定制过了,现在叫8083了,好我们就用8083,我们来访问c rud下的,我们叫MY,诶车哎,我们看到我们这个就生效了,那so是这么注册的,那其他也一样,我把这个复制来。哎,我们来说在这儿,哎,由于由于spring boot默认是以炸包的方式。炸包的方式启动嵌入式的。嵌入式的咱们这个容器来启动咱们这个web boot的web应用。
06:02
到web应用。啊,我们没有这个web插这些目录结构。插啊咱们这个文件,所以呢,我们注册啊,要注册三大组件。组件以下方式。就是我们提供的这几个GB,我把它复制来,复制来,比如说呢,第一个哎,我们要注册一个,So,那好,我就把这段注册代码我复制来非常简单,我们自己把我们的扭出来,诶给它放进去就行了。这是第一个,包括呢,如果我们要注册filter,那也就是同理,那接下来呢,我就把这两个直接写出来,我们来测一测就行了,好,我们在里边有写,那我们再来写一个my filter,放在filter包下,就叫my filter,这都是咱们这个的原生组件,要成为filter,我们就得实现filter接口。
07:05
Filter接口,注意是Java XL下的filter,我们来添加它未实现的方法,CTRL加O,我们把这三个方法拿过来,Init,这是菲尔的初始化,这是菲尔的过滤,这是菲尔的销毁。来前两个我就不写了,我们就在这啊。filter过滤请求,这只要filter执行了,我们就来输出一句话叫my filter。啊,我们的filter执已经执行了,执行完了以后呢,我们就把这个请求放行出去。点do filter,那就直接放行request response,好,所以说呢,我们来看我们的这个filter能不能得到执行,我们把它注册进来,哎,那这是注册注册filter,那就有一个叫filter b,诶这些都是同一个模式的东西。
08:01
你记住一个就行了,好,我们就来拗一个filter。Being,那我们用它的时候呢,点进来它呢,可能跟之前也一样,诶我们能看到这呢,能传一个filter,而这个还能还要传一个叫这个意思呢,就是我这个filter来拦截哪些,这是第一种,但是呢,我们可以来直接来指定我们这个filter要来哪些请求。好。把这个registration being我们先注册在这,我们来分布来写这两个。第一个registration being,我们先来set filter,我们来先设置我们的filter,我们来一个my filter,这是我们的filter,而拦截哪些请求呢?我们还一样可以set,我们来看一下有没有set什么UR,诶,我们看到这有设置我们要拦截的,咱们这叫URL路径,好,它还是一个集合,这个集合呢,我们就给它转过来用一个。
09:06
A race工具把它转成一个list a.and list来给它转一个集合,我们要拦截这几个路径,我们来来hello请求,哎,这是一个,再来来MYSO请求,这也算是一个。好,我们把这个filter就配好了,这个配好以后呢,我们来返回过来。Return,然后呢,我们叫register version b,好把它加在容器中,我们看这个filter能不能进行工作,我只要发送MY请求,或者发发送hello请求,我们这个控制台呢,都会打印filter已经拦截到的这句话。好,我们就发MY回车,我们看响应了再来看控制台,诶my filter process没问题,包括呢我们来来哈。
10:02
南汉路来我们看见也响应了,包括呢,我们这个my process也打印了,没问题,所以呢,这就是哎,我们说的这个filter注册,那么listener也一样,我再来写一个简单的listener来右键创建一个,我们写一个listener,放在listener包下,就叫my listener listener有很多,你就来实现能监听contest启动和销毁的咱们这个listener。好,我们来把这两个方法加上,这个方法呢,就是so context对象的初始化,这个一般呢,也就代表外表应用启动了,我就叫conest initial,咱们叫web应用启动。好,咱们这个叫conest destroy,这就是我们这个关闭web应用以后,哎,我们这个selectest就销毁了,这相当于就是来监听,哎,我们这个服务器。服务器关闭,哎,准确的来说应该是我们当前web项目,当前外B项目销毁。
11:08
也就是说我们这个服务器停止,或者把当前项目从服务器里边移除,那都算外部项目的销毁,那么这个listen呢,我们写了,我们就给它注册进来,放在my com,这是filter,我们再来注册一个listen listener呢就要用人家的listen b,诶,他这呢,刚刚看到还带了一个泛型,能注册这些listener,而listener能注册哪些listen的类型也都在这,这就是我们里边学的这几个listen我们都能用好,那接下来呢,我们来把我们的listener注册进来。我们的listener呢,我们就来一个serve listenerg好,然后范型呢,我就写MY,我们要注册它啊,我们可以把MY丽呢,我就直接new传进来,哎,因为它这个构造器啊,啊,大家点进来看,会有一个能传入listen的这个构造器,好这个写完了以后呢,我们把它这个变量返回al英特尔让它返回我们这个变量,好我们只需要把我们这个。
12:21
注册在容器中,我把这个返回出去。注册在容器中,当然对于这三大组件的一些属性设置,我们都可以在这个B里边,比如我们设置它的启动顺序啦,昂斯达拉等等等等,也就是说相关于这些的设置都能在这设。Listen我们注册完以后,我来测试一下,看我们这个项目启动的时候,我们写的这个listener能不能在控制台打印应用启动项目销毁的时候呢,能不能监听到销毁。来看好这个启动了,我们刚才看到了这句话,哎,我们这个监听器已经生效了,它监听到外B应用启动了,那么我们这个销毁呢,我比如在这儿停一下,可千万不能在这停,这一停整个控制台就停了,就没有输出了,也不要在这停,这就跟拔电源是一样的,你们在这听这有一个叫exist,这是退出正常方式,退出项目,好,我退出,退出以后呢,我们发现,哎,它也监听到我们这个外部项目的销毁了,这就是我们如何在我们BOO应用里边来注册这三大组件,把这个filter呢,也放在这,Filter呢,跟其他的呢,注册方式都是一样的,知道吧,包括我们这个listen。
13:47
啊,我把这个复制来。好,这就是我们要说的,哎,我们只有注册的这三大组件。而这种方式注册最好的例子其实就是我们这个spring boot spring boot。
14:03
Boot,他要帮我们自动配置spring VC的时候,哎,自动的咱们这个注册了spring VC的前端控制器,就是我们的那个Dis。Thispa,以前我们需要手动写的,看到把我们自动注册了,我们可以参照这张代码,这张代码呢,就在dispa thispature serve autoation dispat的自动配置里边来往下翻,这呢有一个dispat对象,我们再来往下翻看,我们看到这一块呢,有一个叫OL registation being,它呢就是这样给我们容器中注册了一个dispature,而这个dispature so呢,就是我们说的这个方式,诶,它用了一个registerg being对象就用刚才的,而他要拦截的路径来源于哪呢?诶,这我们还看到了。
15:08
默认拦截。默认。拦截,拦截哪呢?拦截我们要从server properties里边取值,而server properties我点进来来看,它默认是拦截pass杠就是默认来拦截这个所有的路径的,所以说呢,我们也能推论到使用server.pass能修改spring mvc默认拦截杠,也就是所有请求然包括。包括静态资源。但是呢,但是不拦截GSP请求,这就是杠的意思,以前大家可能写拦截所有请求都是杠星,但是杠星的话会拦截GSP,哎注意杠芯会拦截GSP,哎,这是一点区别,然后呢,他在这呢,我们通过这种也发现了,哎,我们可以通过可以通过server。
16:09
可以通过server点有一个叫pass来修改,来修改spring mvc前端控制器。控制器默认拦截的。拦截的请求路径啊,这就是呢,来我们说的注册组件。
我来说两句