第十三章Filter

news2024/12/22 18:48:11

第十三章Filter

  • 1.什么是Filter过滤器
  • 2.Filter过滤器的基本使用示例
  • 3.完整的用户登录和权限检查
  • 4.Filter的生命周期
  • 5.FilterConfig类
  • 6.FilterChain多个过滤器执行的细节
  • 7.Filter的拦截路径

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的拦截路径

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1376061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PPT插件-大珩助手-《提取选中的幻灯片》-选中新建

选中新建 提取选中的幻灯片到新的幻灯文稿中。PDF编辑器可以提取指定的页面到新的PDF文档中,PPT没有这个功能,因此开发。 软件介绍 PPT大珩助手是一款全新设计的Office PPT插件,它是一款功能强大且实用的PPT辅助工具,支持Wps Wo…

Docker介绍安装及使用

目录 引言一、什么是Docker?二、Docker的优势三、Docker的架构四、Docker的安装五、Docker的基本使用六、Docker与传统虚拟化的比较七、Docker的应用场景八、总结 引言 在现代的软件开发和部署中,容器化技术已经成为了一种趋势。Docker作为容器化技术的领先者&…

im6ull学习总结(三-五)freetype显示正行字

知识补充 笛卡尔坐标系 这里笛卡尔坐标系就是初高中学的直角坐标系的第一象限 lcd坐标系则不同 这两个坐标系如何转换 观察两个坐标系 点(x,y)的x坐标在两个坐标系中相同,纵坐标(y)存在着yV-yV V是整个屏幕的行数的像…

基于RNN的模型

文本数据是一种典型的具有序列结构的数据,因为文本通常是由一系列的词语或字符组成的序列。每个词语或字符在文本中都有特定的位置和顺序,这种有序的结构对于理解和处理文本的含义至关重要。因此,多数情况下需要使用时间序列建模来完成相应的…

C/C++ 堆排序

个人主页:仍有未知等待探索-CSDN博客 专题分栏:数据结构_仍有未知等待探索的博客-CSDN博客 欢迎大家来指教! 一、前言 今天要介绍的是堆排序。 首先什么是堆?简而言之,堆就是二叉树的数组形式,用数组来存…

【C++】类和对象之匿名对象友元内部类

目录 一、匿名对象 1、基础格式 2、使用场景 二、友元 1、友元函数 2、友元类 三、内部类 1、概念 2、特性 四、拷贝对象时的一些编译器优化 1、函数传参 2、对象返回 一、匿名对象 1、基础格式 【注意】 🟢匿名对象的声明周期只有当前行,进入…

推荐熊猫电竞赏金电竞系统源码

熊猫电竞赏金电竞系统源码,包含APP、H5和搭建视频教程,支持运营级搭建,这套源码是基于ThinkPHPUniaapp框架开发的。 系统是一套完整的电竞平台开发源码,包括赛事管理、用户系统、竞猜系统、支付系统等模块。源码结构清晰&#xff…

OpenGL排坑指南—贴图纹理绑定和使用

一、前言 在OpenGL学习 的纹理这一章中讲述了纹理贴图的使用方式,主要步骤是先创建一个纹理的对象,和创建顶点VAO类似,然后就开始绑定这个纹理,最后在循环中使用,有时候可能还要用到激活纹理单元的函数。然而&#xff…

【漏洞复现】先锋WEB燃气收费系统文件上传漏洞 1day

漏洞描述 /AjaxService/Upload.aspx 存在任意文件上传漏洞 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作…

【算法】增减序列(贪心,差分)

题目 给定一个长度为 n 的数列 a1,a2,…,an,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一。 求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种…

如何下载 DEM数字高程数据(SRTM和COPERNICUS)

数字高程模型(Digital Elevation Model,DEM)是地球表面的数字表示,以地形高程信息的形式存在。DEM通常以栅格或点云的形式存在,其中每个单元(栅格或点)都具有对应的高程数值。DEM可以使用各种技…

MYSQL篇--锁机制高频面试题

Mysql锁机制 1对mysql的锁有了解吗? 首先我们要知道,mysql的锁 其实是为了解决在并发事务时所导致的数据不一致问题的一种处理机制,也就是说 在事务的隔离级别实现中,就需要利用锁来解决幻读问题 然后我们可以聊到锁的分类 按锁…

Windows安装和使用kafka

一、安装kafka 由于kafka依赖jdk和zookeeper,安装kafka之前需要先安装jdk和zookeeper,也可以使用kafka自带的zookeeper。安装jdk可以参考:Windows和Linux安装jdk,此处使用kafka自带的zookeeper,不单独安装。 下面在Wi…

Python列表(list)

目录 列表列表的创建与删除访问列表元素index() 方法 列表的遍历添加,修改和删除列表元素添加修改删除 对列表统计和计算count() 方法如需确定列表中有**多少元素**,请使用 len() 方法:检查项目是否存在**复制列表****合并两个列表****list()…

Win10安装配置Redis,修改密码

一、下载Redis tporadowski 提供了 支持 Windows平台的 Redis 安装包,目前仍在维护,目前最新版本是 5.0.14,更新速度跟Redis官网也相差好几个大版本。 下载地址:https://github.com/tporadowski/redis/releases 二、Redis 安装 …

极客时间-如何降低用户鉴权的流量压力

背景 内容是极客时间-徐长龙老师的高并发系统实战课的个人学习笔记,欢迎大家学习!https://time.geekbang.org/column/article/596644 使用Session方式实现用户的用户鉴权 优点 信息都在服务端储存,对客户端不暴露任何用户敏感的数据信息 缺…

SQL-修改表操作

目录 DDL-表操作-修改 添加字段 (方括号内容可选) 修改字段 修改指定字段的数据类型 修改字段名和字段类型 删除字段 修改表名 删除表 删除指定表,并重新创建该表 总结 🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦…

Window平台安装MongoDB

在部署前需要在官网先确定系统对应的Mongo DB版本。 本机电脑为Window10,所以这里以MongoDB 6.0版本。 1 在官网下载安装包 2 安装MongoDB MongoDB Compass 是一个图形界面管理工具,如果勾选了安装会花费长一点时间,可以取消掉勾选&#xff…

[UI5] ODATA V4中的CRUD

文章目录 前言一、Read二、Create三、Update四、Delete 前言 ODATA V4在CRUD方面与V2截然不同。 这篇文章简单介绍V4中是如何进行CRUD操作 一、Read Model不再有read方法, 一般是把Path绑定到View中进行读取, 如果需要额外的读取数据,可使用…

树状结构查询 - 华为OD统一考试

OD统一考试 分值: 200分 题解: Java / Python / C 题目描述 通常使用多行的节点、父节点表示一棵树,比如: 西安 陕西 陕西 中国 江西 中国 中国 亚洲 泰国 亚洲 输入一个节点之后,请打印出来树中他的所有下层节点。 …