00:00
那么为什么是这样一种执行顺序?为什么说注册的顺序就决定了执行的顺序呢?它底层的执行原理又是什么呢?我们现在。可以对比着来来说谁呢?先来说一下,我们再来说。F。回顾萨里的。执行原理。我们想一下。它底层的执行原理是什么?So。
01:03
啊,或者这样说,Web容器中。存在两个map。你注意它是存在两个map。这两个map的key均为。So。注册时的URL值。但。7VALUE是不同的。
02:04
怎么个不痛法呢?第一个map。的value是什么?第一个map的value。是so。实力。对象的引用。第二个map的value为filter class的值G什么权限定性类名谁的?类的权限、内容类名。
03:03
雷明啊。哎,先说两个map。先说。两个卖,再说执行原理。那什么原理?当请求,当对solve啊的请求到达时,当对的请求到达,到达哪?Solid的容器啊,也就是我们的外部容器啊,到达solid的容器时。会先从。第一个map中查找。
04:03
当然了,他也不能说先从哪儿查找,会先怎么样,会先对请求进行解析,对吧,这个肯定没问题的,先对解解请求进行解析。那么。使用解析出的什么uri。作为。比较对象。从第一个map中查找。是否有?相同的key。
05:01
若。存在相同的K就找到了,那么。读取其value,它的value是什么?G对象的。引用。执行改service的方法对吧。那。若不存在相同的K,那么。在在干嘛。再从第二个map里边去查找,再从第二个map中查找是否。
06:07
有相同的K。是否有相同的key?若。存在。走读取其VALUE6 value6是什么G?要访问的。的全限定性类名,对吧?啊,读取这个全限定性类名。他是个字符串啊。然后。使用反射机制创建。
07:02
该萨里实例并将。该。失利。写入到第一个map中,诶,给它写到这个map里边,然后再执行该solve的方法。那这就是我们它的执行原理,也就是说什么呢。当我的请求到达的时候,解析出这个。UR是吧,然后拿这个U,哪个UR,你解析出来,比如说some solid。
08:00
你解除这个some,这个U,解除它以后,我就从。第一个map里边找找有没有一个key叫做萨。有没有第一次在第一个map里找没找到。这一次是没找到,没有没有怎么办?没有这说明这个对象没创建的呀。他没创建的。那怎么办,没创建我的创建呢,所以就到第二个map里边去找。找到没有,萨姆找到了,找到然后呢。找到萨以后,读取这个map的value value是value就是它呀。就是他呀。So class的值吗?诶,写错了,怎么filter啊啊solid class的值就是它呀。
09:08
那然后根据什么反射,反射哪个东西啊,根据反射,这不用多说吧。Class for name。这里面是不是放那个class name那个字符串。是不是根据这个点。New instance是不是就创建这个对象了?这不多说了啊,根据反射机制就把这个对象创建了,创建好以后紧接着干嘛再给它放到第一个map里边,说明什么?说明这个对象已经创建好了。然后你再执行它的service方法。好了,一会儿又来一个请求,谁呢?请求萨姆萨利。然后再到第一个map里边去找,有没有肯定找到了呀。
10:00
所以就不用再访问第二个map了。当然,如果你在第二个map里边啊,第一个map里没找到,就到第二个map去找,第二个map又没找到,那又没找到怎么办。那肯定404了,若第二个map中也没有找到同名没有找到。Yeah。同名的。K,那么。这个跳转到。系统错误。
11:00
处理页面。什么404。来,直接爆404了。这个东西啊,很重要。这是它的执行原理。第二个map是干嘛用的,是用于创建。这个Soviet对象用。OK,这是谁的?这是solid执行原理啊,那我们现在学的是谁?我们现在学的是F。Filter执行原理是什么呢?
12:04
哎呀,那直行,那是不是也是俩map呢。那我们得想想啊,Filter和有什么不同?他们同样都是单立多线程的。但是很关键的一点,他们的创建时机不一样。是什么时候创建访问的时候才创建而呢?应用启动的时候创建。也就是说,无论。哪一个?你只要用它肯定是创建好的,所以这里边儿第二个卖方。是不存在的。对于我直接来说了,它里边存在的是什么?一个数组。
13:01
与一个map。它里面存放的是一个数组,一个map。达拉这一个数组,一个map指的谁?他指的是谁?Map,先说map啊。一个map。Map的key为什么12L的值?Value是什么?他对象肯定都是创建好的呀。Value为filter实例对象的引用。哎,这是一个map,一个数组,又是干嘛的呢?你注意啊,这一个数组。
14:03
可是比较重要。这个数组。怎么写呢?啊。它里边。存放着,存放着这个。目标。存放着鱼。与请求相匹配的所有。Filter。它里边存放着与你发出的这个请求相匹配的所有filter。也就是说,这个数组的元素是什么是?
15:04
好。那下面我们。来说他的。执行原理。执行原理。当然,仍然是啊。啊,当对某资源的请求到达。So容器,那也就是我们的web容器是。这个请对当对某资源啊,不是不是。当对某资源,这个某资源指的什么,你可以是静态页面,也可以是动态页面,也可以是我们的等等吧。
16:04
当对某资源的请求到达web容器的时候。怎么样呢?还是会先对请求进行解析对吧。使用。解析出的。使用解析出的uri。注意。形态作为比较对象。从map,我们这里边就不说第一个第二个了,因为这里边就一个map呀,从map中查找。是否?存在你注意啊,我们这儿说这个相同啊,其实不好,把这个相同应该换成匹配,可能更合适一些,换成匹配吧,这样更好啊。
17:11
匹配。好,换成匹配更合适啊,那这里边从麦克中查找。查找是否存在。相匹配的。若存在。存在会怎么样?如果存在,那么读取其value,将其注意将其。
18:04
引用这个Y6就是引用啊,是不是读取7Y6G F对象的引用。对吧。将该引用。存入到数组中。存到数组数组里边,然后呢。那在这边找到这个引用,是不是直接就执行service方法了,那后面我加个说明不在。不搁这家了。读取value其serve serve对象的引用。
19:01
执行这个方法。还是往这儿写。不再。向后查找了,它是找到以后就不再向后查找了,而这是不一样的地方。这个是找到一个filter和它匹配了,怎么样把这个放到这个数组里边。然后继续向后插着。直到将该map查找。完毕。
20:00
那这样的话,我们这个数组里边,它是不是就会按照顺序。按照他查找到的顺序,一个一个。都是什么都是。这样。在数组中就会。存在。按照什么查找顺序。排好序的。按照查找顺序排好。旭的filter。应用。
21:00
那这个数组里边就有了,都是。紧接着做什么?这发已经存在了,所有的都有了,都在数组里边放着呢。数组。这个初始化完毕以后,所谓初始化完毕就是所有的filter都放进去了,对不对,所以可以执行的都放进去了。开始。按照。数组元素顺序。进行执行。所有。全部执行完毕,所有数组中的全部执行完毕后再干嘛?
22:06
在。跳转到。请求的目标资源,OK,整个执行流程完毕。所以它里边存放的什么是一个数组合一个map。他不是两个外婆。原因。是什么原因是?这两人是F的。创建时机与solid是不一样的。你注意啊,我把这俩给你放到一块儿,第一是让你对比的,第二也是很重要一点,这两个原理必须要理解,能够说清楚。这是面试。
23:03
最多的一个知识点。或者面试最多的两个知识点。这一定要能够说清楚。OK。
我来说两句