00:00
好,那接下来我们就结合上我们现在的这个业务,我不想让你直接进入到我的慢点JSP,也就意味着我现在是在去过滤你的这个请求啊,当我看到你发送这个请求了,那我就直接让你回到登录页面,是不是就相当于引导用户去往一个登录页面了吧,对不对,那我就希望去写一个过滤器呢?来,去过滤你的这个请求了,好,接下来我们来去写。怎么写啊,回到开发工具中,我们再去新建一个package,我就叫什么呀,logging.filterl呀,Filter就是我们过滤器的意思,然后在这里面呢,我就去用一个class,我就叫做logging filter就是登录的一个过滤器啊,然后让他呢去实现我们的一个接口,就叫做filter接口,注意导包的时候一定要注意它这个filter特别多,我们导的是Java X so,看到了吧,别导出包了啊,导出包也不行,好导的是它导入进来以后呢,它里面就有几个抽象方法,我们需要实现一下来,注意实现所有的抽象方法,OK,就这么几个,解释一下啊,第一个这是干嘛的呀,这是一个初始化方法,就是初始化谁的呀,初始化过滤器的,那么这里面我们可以啊。
01:28
给大家去输出一句话啊,就是我们的logging filter初始化完成啊,这里面我们不需要写什么逻辑的啊,然后呢,除了它之外呢,再来解释一下,下面有一个destroy,这是干嘛的?哎,销毁方法能理解吧,销毁方法啊,我们这里面呢,也给大家去输出一个Co,叫做什么呀,Rock fair,然后呢,销毁了好,那么其中最重要的一个就是我们的do filter,这才是我们真正的一个过滤逻辑啊,就是过滤处理,那么现在我想处理谁呢?我想处理你慢点JSP的一个请求,那么其实这个地方我们现在还没办法去写,因为什么呢?你得想办法让他什么能过滤到那个慢点GSP,因此呢,我们现在先去做一个配置,能听懂吧,先来做一个配置,我们来到我们的web点差秒。
02:29
钟好来到我们这个外面的插秒中,然后呢,注意一般情况下我会把过滤器呢,配到我们四的上面啊,不要问我为什么啊,就是我的一个习惯啊,因为我觉得过滤器先执行,所以说我就希望把它配到S上面。是吧?啊,我是有点强迫症的啊,那这是我们的log filter,那么这个filter怎么配置呢?其实跟solid的配置差不多啊,我们需要有一个filter这个节点,然后呢,它里面有一个filter name,有一个filter class,它也有一个filter many这个节点,它里面有一个filter name,有一个URL,拍成你来瞅瞅,一样不一样啊,一样的啊。那么这个filter class呢,就是我们的login filter,来,我们copy这个全类名好往这放,然后呢,这个就叫做login filter啊,这个也叫做login filter,问题是这个地方写什么呀?
03:29
你这个过滤器希望过滤什么请求,这个地方是不是写什么请求啊,对不对,那我现在希望过滤什么请求啊,哎,我希望过滤一个慢点GSP是不是这个请求啊,那么大家注意,如果我写了他以后,将来我请求到达以后,我会跟这个做一个匹配,如果你是慢点JSP的请求,那么你就进入到我的过滤器里面了,如果你不是慢点GP的请求,那么你就。不去听懂了吧,啊,这是一个做一个精确的处理,但是有些情况下,我们的过滤呢,是希望过滤大部分的一些请求的,明白吧,比如说诶,你进入到主页面,我希望你登录了,你进入到其他页面,我也希望你是一个登录操作,也就意味着我想通过一个过滤器呢,去做多个请求的一个过滤,那么其实这个地方我们还可以怎么写呢?我直接写一个斜杠星,这个斜杠星代表着什么意思呢?代表着所有的请求,你是一个请求,你就得进入到我的过滤器。
04:32
听懂了吧,但是这样的话呢,你看所有的请求都交给他去处理了,也不科学吧,对不对?那么如果你这个地方写上斜杠销,我们在过滤器里面,我们就得做一些处理了,们得先看一下当前的请求是谁,对吧?因为所有的情头都进来了,你这个地方你就能判断,只有你想过滤的你才能处理,你不想过滤的,你是不是不要再去处理了,你直接放行是不是采了对不对啊OK,所以说呢,这个地方我们得获取谁呀?我们得获取当前的请求,怎么获取呢?注意它会帮我们传进来一个request,但是这个request呢,它是一个负类型的,叫做solid request,但实质上呢,它就是一个我们一直在使用的那个http solid request,因此呢,我们需要先给它做一个强制转换啊,叫做http solid request等于什么呀?啊,不能叫request啊,这叫Iq吧,等于什么呀,等于。
05:32
Http so request,然后呢,把这个request给它强转一下,就是同一个负类型的强转,为什么子类型的吗?具体对象它本来就是子类型的,能理解吧啊,那么接下来我们就可以获取谁的呢?获取我们的请求就是request get什么呀,有一个request。
06:00
嗯哼啊IQ是吧,我说的啊,没有啊get什么request有一个哎,U还有一个什么呀。Get request什么URL,诶你说这俩有啥区别啊,不知道是吧?来我给你输出出来你就知道了哈,一个呢比较详细一点,一个呢就是比较这个简单一点哈,来把它输出出来,这是我们的UR。哎,好加上它,然后呢,我把这个也来搜索一下啊啊,其实我们呃,用哪个都行啊,原理上用哪个都行啊,来加上我们的。啊,把它加上能看懂了吧,OK,那么后续的处理呢,我先不处理啊,我就让所有的请求呢先进来,进来以后呢,我们来看它就行了,对吧,现在的话,我们这个东西既没有,那就是我现在是没有放行的,所以说呢,它走到这,他就不再往后走了,理解吧,啊,就停住了啊但是呢,每个请求都能进来,OK,把这个加上以后呢,我们也配好了,我们就来给他启动一下。
07:19
啊,启动的时候大家注意哈,这里面有一个东西叫做loging filter,初始化完成了,看到没有说明什么呀,说明这个loging filter它会在他CA的容器启动的时候就会给你创建出来,并且它会自动的调用我们的另一的方法能理解吧,好一会销毁的话呢,我们得关闭服务器它才会销毁啊好接下来我们就来看这个具体的请求,比如说我就先访问一个慢点JSD吧,那走一下没有反应吧,因为拦住了啊,你看这个地方。好看我们的这个地方大家注意,Uri就是。它URL呢,就是它。
08:00
能看出来区别了吗?一个就是我们具体访问的一个资源吧,另外一个就是什么呀,整个的一个是什么请求路径都给你展示出来了,但是对于我们使用来讲的话,我们是不是只关心后面的这个东西啊,所以用这两个谁都可以听懂了吧?OK,好,这是我们的第一个啊,你看那我再试一下别的请求呢,那我访问这个拉丁点JSP,你看一下他也给你拦住了,是不是进不去了,你看这个地方也给你拦住了,进不去了,就是像这种请求的话,我们是不应该拦的,你连登录页面你就进不去,你怎么登录啊,对吧,是不应该拦的,所以说我们就必须得放行的,那也就意味着这个地方我们就得根据啊,你获取到的这个值来做一个什么放行了啊,所以说呢,来注意你用谁都行啊,那我就使用这个URL啊URL啊等于什么呀,Request掉get request URL好拿到它,拿到它以后呢,大家注意了啊呃,它这是一个buffer,那我就再to string一下吧。
09:00
嗯。是不是变成一个字符串了,能听懂吧,OK,接下来判断判断什么呢?你想拦截什么请求啊,判断要拦截要什么呀,要过滤的啊,不要老说拦截是不是要过滤的请求什么请求呢?就是如果说诶你的这个URL中呃包含的还是and这样吧,End with对吧,什么呀,慢点JSP。这个东西吧,如果你是以这个来结束的,那我是不是就要拦呀,对吧,OK好,那就就是拦住了,那么else我就什么是不是放行了呀,对吧,这个就是什么呀,哎就是过滤啊,这个就什么呀,放行咋个过滤法呀。是到这你就不能往回走了吧,对吧,那我就是什么呀,引导去往什么呀,去往登录页面,而这个呢,放行就是什么,继续执行后续的处理吧,哎,继续执行后续的处理啊,那怎么去引导他去往登录页面呢?那我们有这个response,那我要做的事就是什么呀,response.send redirect。
10:20
啊,不能用它,我们是不是也得转一下啊,啊这个比较麻烦是吧。Response Rep等于http sage啊。啊,这么讨厌好sorry是什么呀,这个response啊,好,Re response,好把它找回来,找回来以后呢,这个位置我们就I SP send re,去往谁呀,你就去往登录页面,是不是行了,就给它引导过去了,那么假如说它是方形的,怎么方形的,那么这句方我们需要给大家提到一个对象,叫做filter chain啊,这个对象我们就用上了啊给大家解释一下。
11:04
这个filter train对象呢,我们把它叫成过滤器链对象,这是什么意思呢?大家注意啊,就是啊,假如说你有一个拦截器啊,是你一个过滤器或者什么呀,或者多个过滤器,对吧,那么将来执行的时候,你得挨个往后走,最终呢,你还得走到一个什么呀,走到一个这个消是不是啊,OK,像这些东西,那么来到这个以后,我怎么让它往后走呢?我们就是通过这个filter change这个对象,然后他什么接着往后走,一直最终呢走到我们的。消费者也就意味着相当于从从我当前的这个过滤器来讲,我让你往后走,要么呢,你还有过滤器,你就执行过滤器,如果说没有过滤器的你最终你要执行到你的骚age,或者说你的JSP能明白这个道理吧,说说这个东西怎么做呢?特别简单,就是吃。就这个对象吧,它那边有一个什么呀,叫做do,你看一下。
12:03
一样吗?就相当于去调用下一个的do filter这个方法了,如果说它这里面会自动判断,如果有过滤器,那我就执行下一个过滤器的do filter的方法,如果没有,那我就执行我solve听懂了吧,但是你注意了,你往后走的话,你看整个的这个不管是过滤器也好,或者solid也好,整个这个过程是都是一个请求阶段,那我就得保证你必须要使用同一个request,同一个response,因此我们过去的时候要把我们的当前使用的REQ以及我们的RESP给人家传到后面。保证你后面使用的也是我当前的这个request,以及我的能明白了吧,OK,那么这个我们就写好了,好写好以后呢,我们就来测试一下,看看能不能实现我们想要的这个效果。OK,来,接下来注意了,我先访问log加P走来,你看能进来了吧,来了没,没有来吧,OK,那我们正常走哈,比如说me,然后呢,123456好走一下,大家看是不是能过来的,没有任何问题吧,那假如说现在我要直接去访问你这个慢点加D呢,你看好了哈,我说的是慢点gsd看到了吧,我来回车一下,但是它来的是登录页面,你看到没有,是不是我就成功的把这个请求呢,给你引导着去往这个login这个页面了吧,所以说呢,你如果说你不经过登录呢,你就进入不到这个页面中,那么这样的话,我们就能控制住你啊,非法的什么请求了。
13:44
听懂这个意思了吧,这就是我们过滤器它的一个用法。理解了吧,OK。能听懂吗?这个好,那么最后的话呢,再来家大家看一下,那什么时候会销毁呀,销毁的话呢,你就得什么呀,啊,你不要去点它哈,你得正常把它关闭,比如说stop来关闭我们的容器,我们来看看它里面有没有这个销毁是吧,你看是不是lock filter的销毁啊,对不对,OK,那我顺带着呢,再来给大家去说一下,其实我们的每一个soul,它也有初始化跟销毁的过程,它和filter是一样的,因为soul是不是也是这个他开始帮我们创建的,对吧,所以说他也有初始化跟销毁的方法,只不过我们没有去研究而已。
14:28
听懂了吧,OK,好,这个大家知道一下就行了啊,知道一下就可以了,OK,那这就是我们的一个啊。
我来说两句