Filter 过滤器

Filter过滤器介绍

这里我们讲解Filter的执行流程,从下图可以大致了解到,当客户端发送请求的时候,会经过过滤器,然后才能到我们的servlet,当我们的servlet处理完请求之后,我们的response还是先经过过滤器才能到达我们的客户端,这里我们进行一个代码的演示,看看具体执行流程。首先给出一个图。

这里我们通过实现Filter接口,来进行定义过滤器类,通过注解来配置该过滤器拦截的路径。

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
 
@WebFilter("/*")
public class FilterDemo2 implements Filter {
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        // 对request对象的请求进行处理
        System.out.println("处理了request请求");
 
        // 放行
        chain.doFilter(request,response);
 
        // 对response对象的响应进行处理
        System.out.println("处理了response响应");
    }
}

然后给出我们的index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  index.jsp...
  <%
    System.out.println("index.jsp...");
  %>
  </body>
</html>

 

可以看出,但我们客户端发起请求的时候,首先是经过了Filter过滤器,处理了request请求,然后去执行了我们的servlet/jsp,当执行完毕后,我们的response响应也经过了过滤器,这里经过过滤器的时候是从放行后面开始执行的,也就是处理了response响应(注意并没有再次处理request请求)。

多个Filter过滤器执行顺序

多个 Filter 过滤器执行的 特点:

  1. 所有 Filter 和目标资源都在同一个线程中
  2. 多个 Filter 共同执行的时候,都在使用同一个 Request 对象
  3. 多个 Filter 共同执行的时候,执行的先后顺序是由 web.html 配置文件中,从上到下的配置顺序决定的
  4. 只有执行到 filterChain.doFilter() 语句的时候,才会执行下一个 Filter 过滤器或者目标资源
     

Filter生命周期

Filter的生命周期可分为创建、执行、销毁三个阶段。

  1. 创建阶段:Web服务器启动的时候会创建Filter实例对象,并调用init()方法,完成对象的初始化。
  2. 执行阶段:当客户端请求目标资源时,服务器会筛选出符合映射条件的Filter,并按照类名的的先后顺序依次执行doFilter() 方法。
  3. 销毁阶段:服务器关闭时,Web服务器调用destroy()方法销毁Filter对象。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot的线上日志阅读器

软件特点 部署后能通过浏览器查看线上日志。支持Linux、Windows服务器。采用随机读取的方式&#xff0c;支持大文件的读取。支持实时打印新增的日志&#xff08;类终端&#xff09;。支持日志搜索。 使用手册 基本页面 配置路径 配置日志所在的目录&#xff0c;配置后按回车…

2023亚马逊云科技研究,数字化技能为中国企业和员工带来经济效益

在中国&#xff0c;信息技术在个人、企业和宏观经济层面都推动着重大变革。为了研究这些变化所带来的影响&#xff0c;盖洛普咨询公司(Gallup)和亚马逊云科技开展了关于数字化技能的调研。 研究表明&#xff0c;数字化技能正在为中国企业和在职人员带来巨大的经济价值&#x…

一文带你入门C++类和对象【十万字详解,一篇足够了】

本文字数较多&#xff0c;建议电脑端访问。不多废话&#xff0c;正文开始 文章目录 ———————————————【类和对象 筑基篇】 ———————————————一、前言二、面向过程与面向对象三、结构体与类1、C中结构体的变化2、C中结构体的具体使用3、结构体 --&…

程序环境和预处理

目录 一 程序的翻译环境和执行环境 二 详解编译链接 2.1 翻译环境 2.2 编译本身也分为几个阶段 2.3 运行环境 三 预处理详解 3.1 预定义符号 3.2 #define 3.2.1 #define 定义标识符 3.2.2 #define定义宏 3.2.3 #define 替换规则 3.2.4 #和## 3.2.5 带副作用的宏参…

告别被拒,如何提升iOS审核通过率(上篇)

iOS审核一直是每款移动产品上架苹果商店时面对的一座大山&#xff0c;每次提审都像是一次漫长而又悲壮的旅行&#xff0c;经常被苹果拒之门外&#xff0c;无比煎熬。那么问题来了&#xff0c;我们有没有什么办法准确把握苹果审核准则&#xff0c;从而提升审核的通过率呢&#x…

Centos7快速安装Kibana并连接ES使用

Elasticsearch 提供了一个名为 Kibana 的官方可视化界面。Kibana 是一个开源的数据可视化和管理工具&#xff0c;用于 Elasticsearch。它提供了丰富的功能&#xff0c;如仪表板、图表、地图等&#xff0c;帮助您更好地理解、搜索和可视化存储在 Elasticsearch 中的数据。 在 C…

【软考备战·希赛网每日一练】2023年5月5日

文章目录 一、今日成绩二、错题总结第一题 三、知识查缺 题目及解析来源&#xff1a;2023年05月05日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析&#xff1a; 有返回消息的就是同步消息&#xff1b;不需要等待返回消息就可以去做其他事情的请求消息就是异步消息…

从零基础到网络安全专家:全网最全的网络安全学习路线

前言 网络安全知识体系非常广泛&#xff0c;涉及的领域也非常复杂&#xff0c;有时候即使有想法和热情&#xff0c;也不知道从何入手。 为了帮助那些想要进入网络安全行业的小伙伴们更快、更系统地学习网络安全知识&#xff0c;我制定了这份学习路线。本路线覆盖了网络安全的…

网络协议与攻击模拟-03-ARP协议

ARP 协议&#xff08;地址解析协议&#xff09; 一、 ARP 协议 将一个已知的 IP 地址解析为 MAC 地址&#xff0c;从而进行二层数据交互 是一个三层的协议&#xff0c;但是工作在二层&#xff0c;是一个2.5层协议 二、工作流程 1、两个阶段 ARP 请求 ARP 相应 2、 ARP 协议…

Java 基础入门篇(三)—— 数组的定义与内存分配

文章目录 一、数组的定义1.1 静态初始化数组1.2 动态初始化数组1.3 数组的访问 二、数组的遍历三、数组的内存图 ★3.1 Java 的内存分配3.2 数组的内存图3.3 两个数组变量指向同一个数组对象 四、数组使用的常见问题补充&#xff1a;随机数 Random 类 一、数组的定义 数组就是…

黑盒测试过程中【测试方法】详解2-正交实验

在黑盒测试过程中&#xff0c;有9种常用的方法&#xff1a;1.等价类划分 2.边界值分析 3.判定表法 4.正交实验法 5.流程图分析 6.因果图法 7.输入域覆盖法 8.输出域覆盖法 9.猜错法 前面我们已经讲解过了等价类划分、边界值、判定表。 可以参考我之前的文章&#xff…

MySQL 常用命令

#--------------------------- #----cmd命令行连接MySql--------- cd C:\Program Files\MySQL\MySQL Server 5.5\bin # 启动mysql服务器 net start mysql # 关闭mysql服务器 net stop mysql # 进入mysql命令行 mysql -h localhost -u root -p 或mysql -u root -p #---------…

SPSS如何进行回归分析之案例实训?

文章目录 0.引言1.线性回归分析2.曲线回归分析3.非线性回归分析4.Logistic回归分析5.有序回归分析6.概率回归分析7.加权回归分析 0.引言 因科研等多场景需要进行数据统计分析&#xff0c;笔者对SPSS进行了学习&#xff0c;本文通过《SPSS统计分析从入门到精通》及其配套素材结合…

璞华助力“数字人社”,为成都市人社数字化建设提供多方位的产品与技术支持!

新的时期&#xff0c;人力资源和社会保障事业进入新一轮的制度创新和加快发展阶段。把对各项人力资源和社会保障业务的支持和服务纳入信息化建设&#xff0c;通过 “数字人社”信息化建设项目&#xff0c;是充分利用新一代信息技术&#xff0c;有效整合各类信息资源&#xff0c…

为什么说网络安全行业是IT行业最后的红利?

前言 2023年网络安全行业的前景看起来非常乐观。根据当前的趋势和发展&#xff0c;一些趋势和发展可能对2023年网络安全行业产生影响&#xff1a; 5G技术的广泛应用&#xff1a;5G技术的普及将会使互联网的速度更快&#xff0c;同时也将带来更多的网络威胁和安全挑战。网络安全…

石头科技2022年营收实现双位数增长,以技术实力打响创新价值战

近日&#xff0c;石头科技披露了2022年度财务报告&#xff0c;报告显示&#xff0c;在在较大内外部压力下&#xff0c;石头科技2022年营收依然实现双位数增长&#xff0c;且境内外销售收入平稳增长。 该公司在近年来不断完善其产品矩阵&#xff0c;目前已推出手持无线吸尘、商…

想回西安

五一假期结束了&#xff0c;开始营业总结下跟读者们的交流。 特别感谢大家让我在自己的技术号里面写一些和生活相关的事情&#xff0c;现在正常营业&#xff0c;回复下读者的问题。 问题 发哥&#xff0c;我现在有个疑惑能麻烦帮我解答下嘛。 我已经工作一年多了&#xff0c;但…

Java基础(二十一):集合源码

Java基础系列文章 Java基础(一)&#xff1a;语言概述 Java基础(二)&#xff1a;原码、反码、补码及进制之间的运算 Java基础(三)&#xff1a;数据类型与进制 Java基础(四)&#xff1a;逻辑运算符和位运算符 Java基础(五)&#xff1a;流程控制语句 Java基础(六)&#xff1…

第十九章 观察者模式

文章目录 前言普通方式解决问题CurrentConditions 显示当前天气情况WeatherData 管理第三方Clint 测试 一、观察者模式(Observer)原理完整代码SubjectObserverWeatherData implements SubjectCurrentConditions implements ObserverBaiduSite implements ObserverClint 前言 普…

python人工智能【隔空手势控制鼠标】“解放双手“

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…