第十三章Filter

发布时间:2024年01月12日

1.什么是Filter过滤器

在这里插入图片描述

2.Filter过滤器的基本使用示例

在这里插入图片描述

现在下面三个都是可以访问的,因为我们没有给他加上filter过滤器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面我们做到,只有在用户登录后,才能看到这些信息,那么我们如何判断用户有没有登录呢,我们可以看session域中有没有用户的登录信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果此时我没有登录,那么我就没法看见a.jsp的内容,他会跳转到login.jsp登录页面

这里有个问题,这种判断我们只能写在jsp页面中,html页面无法写,就算html页面可以写,但是图片没法写代码,这里我们就可以用filter来解决
在这里插入图片描述
我们先写一个类去实现这个Filter接口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在我们已经有了权限检查代码了,但他还不知道要对那些东西进行检查,
下面我们要到web.xml中进行配置

在这里插入图片描述
在这里插入图片描述

这样我们就可以进行拦截
这里我们没有登录,直接跳到了登录页面

在这里插入图片描述

但我们这里访问图片却直接显示出来了
在这里插入图片描述

因为这个图片有缓存,他直接从缓存里面拿这个图片,根本没有走服务器
第一种:我们清理掉浏览器全部的缓存
在这里插入图片描述
此时就会跳转到登录页面

在这里插入图片描述
第二种方法 :我们在后面加请求参数,我们在将验证码的时候讲过

3.完整的用户登录和权限检查

在这里插入图片描述

上面演示的步骤不太完整,因为它只有没登录情况下的拦截
我们下面先将登录的表单补充完整
在这里插入图片描述
在这里插入图片描述
下面我们写一个servlet来处理服务器的登录请求
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
此时我们输入正确的用户名和密码,登录成功
在这里插入图片描述
我们这时就能访问admin下面的页面了
在这里插入图片描述

4.Filter的生命周期

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当web工程启动的时候,1,2已经执行了
在这里插入图片描述

3在每次拦截的时候,就会执行
在这里插入图片描述

4在停止web工程的时候就会执行
在这里插入图片描述

5.FilterConfig类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个name就是在web-xml中配置的名称
在这里插入图片描述
我们现在配置文件中添加一些参数信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.FilterChain多个过滤器执行的细节

在doFilter中有一个filterChain
在这里插入图片描述
在这里插入图片描述

下面演示一下,注意导包不要导错了
下面我们先写一个Filter1
在这里插入图片描述
在这里插入图片描述
接着再准备一个Filter2
在这里插入图片描述
下面进行配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面的jsp页面,就是我们要进行拦截的页面
在这里插入图片描述
在这里插入图片描述
如果我们将Filter2去掉了,那么还能访问目标资源吗
在这里插入图片描述
在这里插入图片描述
结果如下
在这里插入图片描述

如果将Filter1去掉
在这里插入图片描述

先将Filter2恢复
在这里插入图片描述
再去掉Filter1
在这里插入图片描述
在这里插入图片描述

这个Filter1和Filter2,哪个是前面的过滤器是由web-xml中配置顺序决定的
下面我们将filter1和filter2换一个顺序
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
特点1:
这个是默认情况,不包括我们手动new一个线程的情况
这里是Filter1的线程
在这里插入图片描述
这里是Filter2的线程
在这里插入图片描述
下面是目标资源的线程
在这里插入图片描述
其中的线程是完全一样点的
在这里插入图片描述

特点2:
意味着他们之间的数据是共享的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们加个参数进行访问
在这里插入图片描述
在这里插入图片描述
甚至我们在Filter1中保存的数据
在这里插入图片描述

我们在Filter2中都可以取出来
在这里插入图片描述
在这里插入图片描述

7.Filter的拦截路径

在这里插入图片描述
这个后缀名我们可以随便写个字符串都可以
在这里插入图片描述
在这里插入图片描述

文章来源:https://blog.csdn.net/m0_72232218/article/details/135541201
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。