一、Filter概述

1、Filter是过滤器

2、Filter可以在Servlet这个目标程序执行之前添加代码,也可以在目标Servlet执行之后添加代码。之前之后都可以添加过滤规则。

3、一般情况下,在过滤器中编写公共代码。

二、过滤器如何编写

1、第一步:编写一个Java类实现一个接口:jakarta.servlet.Filter,并且实现这个接口当中所有的方法。

1、init方法:在Filter对象第一次被创建之后调用,并且只调用一次。

2、doFilter方法:只要用户发送一次请求,则执行一次,发送N次请求,则执行N次,在这个方法中编写过滤规则。

(1)在doFilter中有一个参数是FilterChain chain,有一条语句chain.doFilter(request, response),这条语句是:执行下一个过滤器,如果下一个不是过滤器,则执行目标程序Servlet。

3、destroy方法:在Filter对象被释放/销毁之前调用,并且只调用一次。

2、第二步:在web.xml文件中对Filter进行配置,这个配置和Servlet很像。

1、web.xml

<filter>

<filter-name></filter-name>

<filter-class><filter-calss>

</filter>

<filter-mapping>

<filter-name></filter-name>

<url-pattern></url-pattern

</filter-mapping>

2、注解@webFilter()

3、注意:

1、Servlet对象默认情况下,在服务器启动的时候是不会创建对象的

2、Filter对象在默认情况下,在服务器启动的时候会新建对象

3、Servlet是单例的,Filter也是单例的。(单实例)

三、Filter详解

1、目标Servlet是否执行取决于两个条件:

1、在过滤器中是否编写了:chain.doFilter(request, response);

(1)这条代码作用:执行下一个过滤器,如果下一个不是过滤器,则执行目标程序Servlet。

2、用户发送的请求路径是否和Servlet的请求路径一致

2、Filter与Servlet的优先级

Filter比Servlet优先级高,/a.do对应一个Filter,也对应一个Servlet,一定是先执行Filter再执行Servlet

3、关于Filter的配置路径

1、/a.do、/b.do、/dept/save。这些配置方式都是精确匹配

2、/*匹配所有路径

3、*.do后缀匹配,不要以“/”开始

4、/dept/* 前缀匹配。

4、在web.xml文件中进行配置时,Filter的执行顺序是:

依靠filter-mapping标签的配置位置,越靠上优先级越高

5、在注解中配置时,Filter的执行顺序是:

比较Filter的类名。例如FilterA和FilterB先执行FilterA。Filter1和Filter2先执行Filter1。

6、过滤器的调用顺序,遵循栈数据结构。

7、Filter的生命周期

和Servlet生命周期一致,唯一的区别是Filter在默认情况下,在服务器启动阶段就实例化。Servlet不会

8、Filter过滤器的设计模式:责任链设计模式

(1)过滤器最大优点:在程序编译阶段不会确定调用顺序,因为Filter的调用顺序是配置到web.xml文件中的,只需要修改web.xml配置文件中的filter-mapping的顺序就可以调整Filter的执行顺序,显然Filter的执行顺序是在程序运行阶段动态组合的。那么这种设计模式被称为责任链设计模式。

(2)责任链设计模式的核心思想:

在程序运行阶段,动态的组合程序的调用顺序。

JavaWeb之【过滤器Filter】相关推荐

  1. JavaWeb:过滤器Filter

    1. 过滤器概述 1.1 什么是过滤器 过滤器会在一组资源(jsp.servlet..css..html等等)的前面执行!它可以让请求得到目标资源,也可以不让请求达到!过滤器有拦截请求的能力! 过滤器 ...

  2. JavaWeb中监听器Listener+过滤器filter+拦截器interceptor区别

    JavaWeb中监听器Listener+过滤器filter+拦截器interceptor区别 如果从整个项目中看,一个servlet请求的执行过程就变成了这样context-param–>lis ...

  3. Javaweb核心之servlet规范过滤器-----Filter

    2 Servlet规范中的过滤器-Filter 2.1 过滤器入门 2.1.1 过滤器概念及作用 过滤器--Filter,它是JavaWeb三大组件之一.另外两个是Servlet和Listener. ...

  4. ⑧javaWeb之在例子中学习(过滤器Filter)

    前言 本系列 Servlet & JSP 学习系列[传送门]逐渐到了中期了,希望大家喜欢我写的,总结的点点滴滴- 今天我们来讲讲过滤器 你们的支持是我写博客的动力哦. 最近买了两本书,觉得大二 ...

  5. JavaWeb过滤器(Filter)详解,是时候该把过滤器彻底搞懂了(万字说明)

            注意:这篇文章很长,学习完后将会解决你对于过滤器(Filter)的所有疑惑,下面将通过理论和代码的结合来进行讲解演示.....  目录 基本介绍 过滤器原理 过滤器(Filter)接口 ...

  6. 统一拦截--过滤器Filter

    1.过滤器Filter 1. 概述 概念: Filter过滤器,是JavaWeb三大组件(Servlet.Filter.Listener)之一. 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功 ...

  7. ----------------------过滤器filter简单登录和乱码过滤----

    web.xml里面的代码 <?xml version="1.0" encoding="UTF-8"?> <web-app version=&q ...

  8. 一场由过滤器Filter引发的血案

    一场由过滤器Filter引发的血案 事件起因 本来应该是下图的登录界面 变成了这样 What's the fuck????? 抓狂 原因 解决方法: 在过滤器中给资源文件开个绿色通道

  9. Java web—Servlet过滤器(Filter)

    前言:         过滤器是Servlet中一个非常重要的组成部分,进行WEB开发时无不用到过滤器:因此这篇blog来单独总结下关于过滤器的知识点. 一.首先来了解一下什么是过滤器: 下面这句话引 ...

  10. ITK:过滤器Filter和ParallelizeImageRegion比较

    ITK:过滤器Filter和ParallelizeImageRegion比较 内容提要 输出结果 C++实现代码 内容提要 本示例演示如何利用MultiThreaderBase :: Parallel ...

最新文章

  1. 客快物流大数据项目(八):Docker的安装和启动
  2. 云优后台提交显示parsererror_【Shopee新手开店】卖家后台管理及设置
  3. Python Tornado搭建高并发Restful API接口服务
  4. verilog设计一个补码加减法运算器_漫画:为什么计算机用补码存储数据?
  5. FreeJTS部标视频平台:JT/T808、JT/T809、JT/T796、JT/T794、JT/T1078、苏标ADAS的区别
  6. Oracle单机报监听不支持服务,(转)oracle 启动监听 报“监听程序不支持服务” 解决...
  7. 射线检测(Summary)
  8. matlab malloc,[原创]Matlab 高性能代码编写(三)内存是要先分配再使用的
  9. Precious Plastic 中文手册 V1.0
  10. 服务器过载保护(下篇)——过载处理新方案
  11. 质量保证QA与质量控制QC
  12. EPLAN 设备选择
  13. 百度文库免费下+PDF免费转,你错过了嘛?
  14. 小麦盒子cdn_国内外优秀的 CDN 加速服务商,让你的网站访问速度飞起来
  15. 树形结构的数据与一维数组数据的相互转换
  16. 改变Eclipse提示框的墨色背景
  17. 船桨数学模型matlab,船用螺旋桨负载特性数字仿真
  18. 最小环问题(无向图)
  19. Java基础之扩展特性
  20. 工控协议解读之EtherCAT协议硬核分析(转自知乎“智能制造之家“)

热门文章

  1. CCC3.0学习笔记_SPAKE2+ Flow 流程
  2. Cocos2d-JS下往Sprite SkeletonAnimation Armature(骨骼动画)添加shader
  3. 网络安全工程师应该具备哪些职业技能?
  4. 怎么找回游戏服务器,rust怎么找到之前玩的服务器 | 手游网游页游攻略大全
  5. 项目管理,到底管什么?
  6. 好可怕!情侣住酒店凌晨被人开门闯入
  7. 服务器IIS安全设置
  8. Yolov8断续训练指令
  9. oracle删除重新创建监听,重新配置监听程序
  10. Zjh游戏(十二)登陆功能的实现