00:00
好,我们来接着往后说啊呃,接下来呢,呃,我们想完成这样的一个效果啊,什么效果呢?就是给大家去解决一个问题啊,那么这个问题呢,我再来给大家去演示一下啊,就是现在呢,我们已经做成了,当他登录成功以后呢,去往我们的主界面,然后呢,还能看到我们的员工信息列表,你看了哈,就是按照我们正常的这个逻辑啊,先访问登录页面,然后呢,输入你的登录的这个用户名跟密码,然后呢点击登录,那么他过来以后是没有任何问题的,看到了吧。没有没有问题吧,OK,但是呢,现在有一个问题是什么呢?假如说有人猜到了你的这个登录页面是慢点JSP的话,那么他可能就直接去访问你的慢点JSP了,但是他直接来访问的话呢,那么一进来发现你的员工信息列表是没有的。
01:03
能看明白这个吧,诶它是没有的,然后呢,啊,虽然说这个是有的啊,但是如果说假如说我一上来以后,我就什么呀,直接打开浏览器,我就去访问你的慢点JSP,我来回车,你发现连这个用户名都没了,对不对,所以说这个呢,我们是不希望让这个用户看到的。能理解吧,这个就是你的系统的一个bug,系统的一个漏洞了啊,那么我们希望怎么做呢?就是你必须得登录,经过这个登录操作才能来到这个页面。理解吧,那么我们就就必须要就对它进行一个控制,怎么控制呢?就算你直接访问慢点JSP,但是呢,我不会让你进来,而是我要把你引导到我们的登录页面,让你进行一个登录,这个其实大家在实际的这个项目中也遇到过,比如说你在淘宝京东上面去浏览商品的时候,但是你提前是没有登录哈,你比如说你看到某一些商品你想去买了,那么你点加到购物车对不对,那么有些网站的话,就是你往购物车去加的时候,他就要去检测一下你有没有登录,如果没登录就会引导你去到登录页面。
02:13
遇到过这样的吗?遇到过吧,或者说有些人什么呀,加到购物车呢,还不会提示你登录,但是等你真正去结算的时候,就是你要付款了,他一定要让你登录的,他也会引导你去往一个登录页面,你登录成功以后才能接着去做后续的操作,那么其实这就是一个访问权限的一个控制,理解这个意思了吧?好,那么我们这个功能应该怎么去做呢?我们要通过一个过滤器来去做,那么下来给大家去解释一下这个过滤器。啊,过滤器呢,它也是我们的外部组件啊,就类似于我们这个som,它也是一个外部组件,但是呢,它可以拦截我们的客户端和web资源之间的一个请求和响应,也就意味着啥意思呀,你浏览器端与你的服务器端,诶你这个请求过来了以后,你正常情况下应该去往一个solve类,对不对,或者去往一个GSP,或者去往一个HTML是这个样子的,但是呢,在你去往这个之前呢,我可以有一个组件,这个组件叫做过滤器,我可以去拦截你拦截到你这个请求以后呢,我可以去做出一些处理,能明白这个意思吧,当然你将来比如说哎,我拦截到以后呢,我做完处理以后,我让你接着往后走,当你处理完成以后呢,你有一个响应吧,你响应给这个客户端的这个过程,我也要做一个拦截,我得看看你响应的数据合法不合法,所以说呢,大家要理解它的一个机制,它机。
03:42
这是什么呢?注意我在这里面再给大家画一下啊,就是正常情况下,我从浏览器端我发送了一个请求直接过来,那么来了以后呢,他应该访问的是我们的solve啊,就是我们的这个solve,或者说JSP,或者说HTML等等等等一些资源,能明白吧,这是我们现在,但是呢,诶我们可以在这个之前呢,加上一个组件叫做什么呀,叫做过滤器来去拦截你这个请求,然后做出一些处理,比如说我拦截到以后,发现你这个请求是非法的,那我就不再让你接着往后走,而是从这个地方就直接让你回去了,假如说你这个请求是合理的,那么我接着让你往后走,那么等你走完以后,在后续做了处理以后,处理好了这个结果,你要响应给我的客户端,那么在响应的时候,我也要给你做一个拦截,我看看你响应的这个数据合法不合法,能明白了吧,也就意味着这个拦截器呢,它是。
04:42
你来的时候我拦你一次,你走的时候我再拦你一次,明白它的机制了吧,能明白了吗?那么最重要的一个点,大家必须得记住,拦截器是在我们的so之前执行的,这是最重要的一个点,如果说你是在so之后执行的,那就没有必要了,你都来到so了,我都处理完了,你这拦截器还没工作的是不是啊啊,这是不科学的,所以说呢,它是在我们的so之前执行的,OK,那我们接着再回来看啊,呃,对他的一些这个拦截呢,我们就已经说完了,说完以后呢,大家注意哈,我们还需要给大家说的一个问题,就是什么呀,假如说诶,我有多个拦截器。
05:26
能明白这个意思吗?我有多个拦截器的时候啊,怎么一直说的拦截器啊,过滤器哈啊,我怎么一直我一直说的拦截器吗?啊啊过滤器是不是啊,它是起了一个过滤的一个效果啊,不是拦截器啊啊说反了哈,来吧,那我们纠正一下啊,过滤器不是拦截器哈,然后呢,呃,但是当然刚才说的这个原理是没问题的哈,就是这个东西说错了哈,叫做过滤器啊,那么当我有这个多个过滤器的时候。
06:03
大家要注意了啊,请求过来以后呢,它必须得经过我的每一个过滤器啊,就是只要我这个过滤器,我能拦截到你这个请求,我能过滤到你这个请求,那么你就得经过我的这个过滤器,听懂了吧,挨个过,如果说这个过滤器你都能过去,那么你去访问到你最终的这个外部资源,但是你回去的时候大家要注意了哈,你是怎么来的,你就得原路返回。什么叫做原路返回呢?就是比如说这是我的在这里面看哈,这里面我们能看得清楚一点,我有这么几个过滤器来,这是我的第一个,这是我的第二个,好,这是我的第三个过滤器,能听懂吧,哎,123,那么这假如说是我的一个sorry,我的这一次请求呢,希望去访问到我的这个sorry者,那么首先呢,假如说我的这些过滤器呢,都能去匹配到你当前的这个请求,那么你这个请求就得先通过它,再通过它,再通过它,只要其中有某一个过滤器觉得你这个请求是不合理的,那么它随时可以让你回去听懂了吧,假如说都能过得去,那么你就来到这个so了,你处理完成以后,你怎么响应啊,注意你来的时候是123,那么你回去的时候,你就是321,你得原路回。
07:26
能明白这个意思吗?你得原路往回走,所以说你过来的时候是123,那么你回去的时候就是什么呀,321就得这么去走了。听懂了吧?哎,这也是过滤器里面的一个机制啊,那么大家也必须要把它记住了啊,这就是我们的过滤器啊,如果是多个的话呢,那就是一个过滤器的一个链啊,叫做过滤器链。听懂了吧?OK,那么把这个机制给大家说完以后呢,接下来我们要说一下这个过滤器具体怎么使用啊,我们只需要去实现一个filter接口,这也是人家帮我们提供好了的,然后呢,去实现它里面的三个抽象方法就可以了,其实最主要的我们是关心的一个度filter这个方法,这才是我们真正的一个过滤逻辑的一个处理。当然过滤器我们也需要在web的插L中进行一个配置,那么这个地方还是要给大家提到一个,当有多个过滤器的时候,那么每一个过滤器与过滤器之间,它就有了一个优先级的问题,就是顺序的问题,哪个过滤器先执行啊,那就得看你的配置顺序了,先配置的就是配置到上面的先执行啊,配置到下面的那就是后执行了,所以说呢,配置顺序会决定过滤器的一个执行顺序。
08:45
听明白这个意思了吧,一会配置的时候给大家来去说一说啊好,那么我们先把这个知道一下,具体的我们就来通过具体的代码来去实现,结合上我们当前的这个业务来去给大家做,OK。
我来说两句