JavaWeb系列十五: JavaWeb三大组件之过滤器Filter

老韩-JavaWeb三大组件之过滤器Filter

  • 过滤器说明
  • 过滤器基本原理
  • 过滤器分析和实例
  • url-pattern
  • Filter生命周期
  • FilterConfig
  • FilterConfig应用实例
  • 过滤器链基本原理分析
    • 过滤链实例演示
    • 过滤链注意事项
  • 过滤器作业布置

在这里插入图片描述

在这里插入图片描述

过滤器说明

在这里插入图片描述

  • 过滤器说明
  1. Filter 过滤器是JavaWeb三大组件之一(Servlet, Listener监听器, Filter过滤器)
  2. Filter 过滤器是JavaEE的规范, 是接口
    在这里插入图片描述
  3. Filter 过滤器它的作用是: 拦截请求, 过滤响应
  4. 应用场景
  • 权限检查
  • 日记操作
  • 事务管理

过滤器基本原理

在这里插入图片描述

  1. 先画图, 清晰思路 => 2. 走代码
    在这里插入图片描述

过滤器分析和实例

1.先完成一个正确的流程, 看到一个效果 -> 写后面代码就可以验证

2.加入其它的功能[1.加入session, 验证合法性]

代码实现
1.创建 javaWeb 项目filter 参考 IDEA 2022.3开发JavaWeb工程

2.添加 filter项目所需jar包
在这里插入图片描述

3.先完成一个正确的流程, 同时添加session, 验证合法性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.配置Filter过滤器
import javax.servlet.Filter;
在这里插入图片描述
在这里插入图片描述

5.doFilter()方法
请求转发的内容并不经过过滤器
tips: 请求转发的内容并不经过过滤器
如果从login.jsp登录经过LoginCheckServlet请求转发到/manage/admin.jsp页面, 只会调用一次doFilter)(方法, 因为请求转发并不会经过过滤器(即使路径匹配), 但是admin.jsp页面内的图片资源会让浏览器发送获取图片资源的请求, 这时会经过过滤器
tips: 如何判断doFilter()中的servletRequest和admin.jsp中的request内置对象是同一个对象
实验设计: 在login页面登录成功后, 直接在地址栏访问admin.jsp页面, 这样即会走过滤器, 又会访问admin.jsp
在这里插入图片描述
在这里插入图片描述
实验结果:
在这里插入图片描述
tips:
在这里插入图片描述
在这里插入图片描述

url-pattern

  1. url-pattern: Filter的拦截路径, 即浏览器在请求什么位置的资源时, 过滤器会进行拦截过滤
  2. 精确匹配 /a.jsp对应的 请求地址http://ip[域名]:port/工程路径/a.jsp会拦截
  3. 目录匹配 /manage/*对应的 请求地址http://ip[域名]:port/工程路径/manage/xx, 即web工程manage目录下所有资源 均会拦截
  4. 后缀名匹配 *.jsp(后缀名可变, 比如*.action *.do)对应的 请求地址http://ip[域名]:port/工程路径/xx.jsp, 后缀名为.jsp的请求均会被拦截
  5. Filter配置一般在web.xml的最上面; 一个Filter可以配置多个url-pattern
  6. 对于要拦截的目录中的某些要放行的资源, 再通过配置指定
    在这里插入图片描述
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!--过滤器一般我们配置在上面--><filter><filter-name>AuthFilter</filter-name><filter-class>com.zzw.furns.filter.AuthFilter</filter-class><init-param><!--这里配置了后, 还需要在过滤器中处理--><param-name>excludedUrls</param-name><param-value>/views/manage/manage_login.jsp,/views/member/login.jsp</param-value></init-param></filter><filter-mapping><filter-name>AuthFilter</filter-name><!--这里配置要验证的url1.在filter-mapping中的url-pattern配置 要拦截/验证的url2.对于我们不去拦截的url, 就不配置3.对于要拦截的目录中的某些要放行的资源, 再通过配置指定--><url-pattern>/views/cart/*</url-pattern><url-pattern>/views/manage/*</url-pattern><url-pattern>/views/member/*</url-pattern><url-pattern>/views/order/*</url-pattern><url-pattern>/cartServlet</url-pattern><url-pattern>/manage/furnServlet</url-pattern><url-pattern>/orderServlet</url-pattern><url-pattern>/orderItemServlet</url-pattern></filter-mapping>
</web-app>

tips: 不能这么配, 这么配即使用户登陆成功也会被拦截
在这里插入图片描述

  1. Filter过滤器它只关心请求的地址是否匹配, 不关心请求的资源是否存在
  1. 在未登陆的情况下, 请求http://localhost:8085/filter/manage/xxx, 会被拦截器拦截到进入登录页面
    在这里插入图片描述
    在这里插入图片描述
  2. 登录成功后再次访问http://localhost:8085/filter/manage/xxx, 拦截器放行, 请求不到该资源, 将返回404
    在这里插入图片描述
    在这里插入图片描述

Filter生命周期

在这里插入图片描述
在这里插入图片描述
不同的浏览器调用这个filter, 次数会叠加
在这里插入图片描述

FilterConfig

在这里插入图片描述

  • FilterConfig说明
  1. FilterConfig是Filter过滤器的配置类
  2. Tomcat每次创建Filter的时候, 也会创建一个FilterConfig对象, 这里包含了Filter配置文件的配置信息
  3. FilterConfig对象作用是获取filter过滤器的配置内容
  1. 新建ZzwFilterConfig类
    在这里插入图片描述
    在这里插入图片描述
  2. 配置web.xml
    在这里插入图片描述

FilterConfig应用实例

拦截网段0:0:0:0:0:0:0:1
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

0:0:0:0:0:0:0:1是ipv6的表现形式,对应ipv4来说相当于127.0.0.1,也就是本机。
在这里插入图片描述

过滤器链基本原理分析

在处理某些复杂业务的时候, 一个过滤器往往不够, 可以设计多个过滤器共同完成任务, 形成过滤器链
在这里插入图片描述

过滤链实例演示


  1. 在这里插入图片描述
  2. AFilter.class, BFilter.class
    在这里插入图片描述
  3. 配置过滤器
    在这里插入图片描述
  4. 运行结果
    在这里插入图片描述
    在这里插入图片描述

过滤链注意事项

  1. 多个filter和目标资源在一次http请求中, 同时在一个线程中

实验设计
在这里插入图片描述
在这里插入图片描述
请求两次
在这里插入图片描述
实验结果
在这里插入图片描述

  1. 当一个请求的url和filter的url-pattern匹配时, 才会被执行, 如果有多个匹配上, 就会顺序执行, 形成一个filter调用链(底层可以使用一个数据结构搞定)
  2. 多个filter共同执行时, 因为是一次http请求, 所以使用同一个request对象
  3. 多个filter执行顺序, 和web.xml配置顺序保持一致
  4. chain.doFilter(servletReuqest, servletResponse), 即执行下一个过滤器的doFilter方法, 如果后面没有过滤器, 则执行目标资源
  5. 小结: 注意执行过滤器链时, 顺序是: Http请求->A过滤器doFilter()方法->A过滤器前置代码->A过滤器chain.doFilter()->B过滤器doFilter()方法->B过滤器前置代码->B过滤器chain.doFilter()->目标资源->B过滤器后置代码->A过滤器后置代码->返回给浏览器数据

过滤器作业布置

在这里插入图片描述

  1. topic.jsp
    在这里插入图片描述
  2. showTopic.jsp
    在这里插入图片描述
  3. TopicFilter.jsp
    在这里插入图片描述
    web.xml配置
    在这里插入图片描述
  4. 运行结果
    在这里插入图片描述
    在这里插入图片描述
  5. 目录结构
    在这里插入图片描述

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

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

相关文章

Android AOSP 编译并烧录到Google Pixel4XL

简介 AOSP&#xff08;Android Open Source Project&#xff09;是Android系统的开源版本&#xff0c;任何人都可以下载、编译和修改。手头上有一台Pixel 4XL&#xff0c;尝试编译AOSP并将其烧录到的设备上。 准备工作 在开始之前&#xff0c;您需要确保您的电脑满足以下条件…

实验08 软件设计模式及应用

目录 实验目的实验内容一、能播放各种声音的软件产品Sound.javaDog.javaViolin.javaSimulator.javaApplication.java运行结果 二、简单工厂模式--女娲造人。Human.javaWhiteHuman.javaYellowHuman.javaBlackHuman.javaHumanFactory.javaNvWa.java运行结果 三、工厂方法模式--女…

Python爬虫项目集:豆瓣电影排行榜top250

关于整理日常练习的一些爬虫小练习&#xff0c;可用作学习使用。 爬取项目以学习为主&#xff0c;尽可能使用更多的模块进行练习&#xff0c;而不是最优解。 爬虫概要 示例python 库爬取模块request解析模块BeautifulSoup存储类型list&#xff08;方便存入数据库&#xff09…

2024年最新 Windows 操作系统安装部署 MongoDB 数据库详细教程(更新中)

MongoDB 概述 MongoDB 是一个基于分布式文件存储的开源数据库系统&#xff0c;由C语言编写&#xff0c;旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系…

使用mysql的binlog进行数据恢复

1.mysql安装环境 在你本地电脑windows上建一个和生产环境一样的mysql版本 我的是 mysql5.7.43 安装教程可以自行上网搜&#xff08;这里不做介绍&#xff09; 可参考&#xff1a; 1.1安装路径 我的mysql安装路径&#xff1a; D:\mysql\mysql-5.7.43-winx64\bin * 1.2my.in…

Docker部署私有仓库(registryHarbor)

简介Docker Hub 官方仓库 在 Docker 中&#xff0c;当我们执行 docker pull xxx 的时候 &#xff0c;它实际上是从 registry.hub.docker.com 这个地址去查找&#xff0c;这就是Docker公司为我们提供的公共仓库。在工作中&#xff0c;我们不可能把企业项目push到公有仓库进行管理…

讲座学习截图——《CAD/CAE/CAM几何引擎-软件概述》(一)

目录 引出CAD/CAE/CAM几何引擎-软件概述 郝建兵CADCAECAM 几何模型内核ACIS 两个老大之一Open CascadeParasolid 两个老大之一Autodesk的内核 总结其他自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自定义信号重载带参数的按钮触发信号触发信号拓展 lambda表达式…

双目相机测距原理

一、普通双目相机测距原理 普通双目相机具有如下特点&#xff1a;左右两个相机位于同一平面&#xff08;光轴平行&#xff09;&#xff0c;且相机参数&#xff08;焦距f&#xff09;一致。其原理图如下&#xff1a; 如图所示&#xff0c;P点为相应的物体位置&#xff0c;CL和C…

【等保】网络安全等级保护(等保2.0PPT)

等保2.0&#xff08;网络安全等级保护基本要求的第二代标准&#xff09;的推出和实施&#xff0c;是基于多方面的考虑和需求。以下是实施等保2.0的主要原因&#xff1a; 加强网络安全保护&#xff1a; 随着网络技术的不断发展和网络威胁的不断增加&#xff0c;传统的网络安全保…

2024年广西三支一扶报名详细流程(附报名照处理流程)​

2024年广西将招募1650名高校毕业生到基层从事支农、支医、支教和帮扶乡村振兴工作&#xff08;简称“三支一扶”&#xff09;。 招募对象为全日制普通高校应届及择业期内2022年至2024年毕业的全日制普通高校毕业生。 ➡️招募条件。 1.具有全日制大专&#xff08;含高职高专&am…

B端系统:配置页面如何设计,这可是用户体验的关键的关键。

提升配置页面体验的十大原则 设计B端系统的配置页面时&#xff0c;用户体验确实是非常关键的。以下是一些设计原则和建议&#xff0c;可以帮助提高配置页面的用户体验&#xff1a; 简洁明了&#xff1a;配置页面应该尽量简洁明了&#xff0c;避免过多的复杂选项和信息。使用清…

【代码阅读】SSC:Semantic Scan Context for Large-Scale Place Recognition

一、主函数 官方开源的代码提供了四个主函数&#xff0c;其中eval_pair.cpp和eval_top1.cpp是一组&#xff0c;分别用于计算两帧的相似度分数以及一帧点云在所有的51帧点云中相似度最高的25帧的相似度分数。eval_seq.cpp是在eval_top1.cpp的基础上&#xff0c;给了一堆序列&am…

图解布隆过滤器(Bloom Filter)

布隆过滤器详解 布隆过滤器&#xff08;Bloom Filter&#xff09;是一种空间效率非常高的随机数据结构&#xff0c;由布隆&#xff08;Burton Howard Bloom&#xff09;在1970年提出&#xff0c;用于检验一个元素是否属于一个集合。 具体来说&#xff0c;它可能会错误地认为一个…

Jmeter插件管理器,websocket协议,Jmeter连接数据库,测试报告的查看

目录 1、Jmeter插件管理器 1、Jmeter插件管理器用处&#xff1a;Jmeter发展并产生大量优秀的插件&#xff0c;比如取样器、性能监控的插件工具等。但要安装这些优秀的插件&#xff0c;需要先安装插件管理器。 2、插件的下载&#xff0c;从Availabale Plugins中选择&#xff…

达梦(DM8)数据库表空间的备份与还原(联机备份) 四

一、表空间的备份 1、备份表空间的命令操作 backup tablespace main backupset /home/dmdba/dmdata/DAMENG/bak/full_back_01 ; 2、检查表空间的备份文件 select sf_bakset_check(disk,/home/dmdba/dmdata/DAMENG/bak/full_back_01); 二、表空间的还原 1、修改表空间位脱机…

AI播客下载:Edge of AI (AI最新应用场景和发展趋势)

Edge of AI Podcast 是一个探讨人工智能&#xff08;AI&#xff09;最新应用和发展的播客。该播客由Ron Levy主持&#xff0c;他于2023年8月9日接任新主持人。每个节目都会邀请专家分享他们在AI领域的见解和经验&#xff0c;探索最新的应用场景和发展趋势。例如&#xff0c;在第…

PointCloudLib 法线微分算法(Don)分割点云 C++版本

0.实现效果 原始点云 不同尺度上计算法向量 计算出don特征量,并以颜色显示在点云上 可以看出平面中心的点 不涉及到周围点变化的点 特征量比较低,以红色表示 边缘过渡剧烈的点,特征量比较高,以蓝色表示 以Don算法特征量来作为阈值分割点云,可以分割出剧烈变化的点云 欧…

国标GB28181视频汇聚平台EasyCVR设备展示数量和显示条数不符的原因排查与解决

国标GB28181/GA/T1400协议/安防综合管理系统EasyCVR视频汇聚平台能在复杂的网络环境中&#xff0c;将前端设备统一集中接入与汇聚管理。智慧安防/视频存储/视频监控/视频汇聚EasyCVR平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级…

Django教程(002):模板语法的使用

目录 1 字符串2 列表3 字典4 列表中是字典5 if语句6 案例&#xff1a;使用爬虫爬取联通新闻并在页面渲染 模板语法本质上&#xff1a;在HTML中写一些占位符&#xff0c;由数据对这些占位符进行替换和处理。模板语法主要是方便对方法返回的数据在前端进行渲染&#xff0c;这些数…

【Proteus仿真】【Arduino单片机】寻迹避障蓝牙遥控小车

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使LCD1602液晶&#xff0c;L298电机&#xff0c;直流电机&#xff0c;HC05/06蓝牙模块&#xff0c;HCSR04超声波&#xff0c;红外寻迹模块等。 主…