Servlet——过滤器(fiter)

article/2025/10/15 9:05:30

什么是过滤器?

过滤器是Servlet的一个组件,是设计模式中过滤器模式(又叫责任链模式)的一种经典实现

是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能————来自某一技术大牛

作用原理如下:

原理图

由此可见,过滤器对于每一个WEB开发人员来说都是一项不容错过的技术

那么,什么是过滤器,过滤器又是如何实现的呢?

过滤器(Filter)是能够为请求和响应的header和内容进行操作的一种特殊的web组件。特殊之处在于其本身并不直接生成web响应,而是拦截过滤web请求和响应。其作用过程如下图所示:

在这里插入图片描述

使用方法:

1. 实现接口:定义一个过滤器需要实现 javax.servlet.filter接口

2.实现接口方法

     (1) doFilter(ServletRequest,ServletResponse,FilterChain) :对请求数据进行拦截处理并使用 即相当于在此过滤器中放行

     (2)FilterChain.doFilter(ServletRequest,ServletResponse) 交由下web容器进行数据处理

    如果有过滤器链,则交由下一个过滤器进行处理

    (3) init(FilterConfig filterConfig); web容器启动时将实例化过滤器,之后将调用此方法读取web.xml 中设置的初始参数

    (4) 进行数据初始化操作

    (5)destroy()->在web容器销毁filter实例前用此方法

3. 在web.xml中注册过滤器或注解方式注册过滤器,如下所示:

1.在web.xml中注册过滤器

<filter>  声明过滤器
      <filter-name>过滤器名称</filter-name> 
      <filter-class>过滤器指向的限定包名以及过滤器类名</filter-class> 
      <init-param>
           <param-name>参数名称</param-name>
          <param-value>参数值</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>过滤器名称</filter-name> 
    <url-pattern>对那些地址进行拦截</url-pattern> 
    <servlet-name>指定要拦截的servlet名称,与web.xml文件定义的servlet命名一致</servlet-name>    
    <dispatcher>对那些请求进行拦截 </dispatcher>  
</filter-mapping>

}

@WebFilter (urlPatterns = "/newsServlet")
//(urlPatterns = "/newsServlet")代表过滤那个servlet实现类
public class NewsFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws 
    ServletException {
 
    }
 
    @Override
    public void doFilter(ServletRequest servletRequest,
     ServletResponse servletResponse, FilterChain filterChain)
     throws IOException, ServletException {
        System.out.println("经过了newsFilter过滤器..........");
        //执行doFilter()方法,则进入到下一个过滤器,即放行
        filterChain.doFilter(servletRequest,servletResponse);
    }
 
    @Override
    public void destroy() {
    }

}

过滤器的作用:

1.   过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息,

也就是说可以监视,修改或以某种方式处理客户端与服务端下在交流的数据

2.过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的:

  (1)在客户端的请求访问后端资源之前,拦截这些请求。

  (2)在服务器的响应发送回客户端之前,处理这些响应。
 


http://chatgpt.dhexx.cn/article/nYEcvmQu.shtml

相关文章

java基础篇---Servlet过滤器

Servlet过滤器从字面上的字意理解为景观一层次的过滤处理才达到使用的要求&#xff0c;而其实Servlet过滤器就是服务器与客户端请求与响应的中间层组件&#xff0c;在实际项目开发中Servlet过滤器主要用于对浏览器的请求进行过滤处理&#xff0c;将过滤后的请求再转给下一个资源…

mac下idea卡顿问题解决

一、背景 mac下idea卡顿 二、原因 赋予idea的内存太小了&#xff0c;需要给他更大的内存 三、解决方法 1、修改idea.vmoptions 配置文件。 help --Edit Custom VM Options 2、修改文件 这是我修改之前的&#xff1a; -Xms128m -Xmx750m -XX:ReservedCodeCacheSize512m…

macOS看视频卡顿如何修复

很多时候我们都会遇到这样一个问题&#xff1a;明明电脑很新&#xff0c;处理器内存什么的也都不差&#xff0c;但看在线视频就是卡&#xff0c;画面和音频对不上&#xff0c;令人很难受。其实这是Flash播放器开了P2P的原因。今天我就教教大家macOS看视频卡顿如何修复。 先打开…

MAC 外接键盘卡顿处理

系统偏好设置-> 键盘。 1&#xff1a;将『按键重复』调到快&#xff0c;将『重复前延迟』调到段&#xff0c;点击『更改键盘类型』,并且按照提示一步步让电脑识别键盘。 2 &#xff1a;切换『文本』&#xff0c;去勾『触控栏键入建议』&#xff0c;可以起到调优作用。

MAC如何解决idea卡顿问题

故事是这样的 我的mac配置也不是很高&#xff0c;内存大概是这样的 但是刚下载完idea后&#xff0c;简直比我之前2000块的windows本都卡。偶买噶&#xff0c;差点想直接退货。 好在控制住脾气&#xff0c;然后冷静思考后觉得&#xff0c;不该呀&#xff0c;好歹那么贵&#x…

matlab java mac_Matlab for mac卡顿、抛Java异常

在苹果上使用Matlab后&#xff0c;试用了几个版本后都十分卡顿&#xff0c;后来抛出了Java.lang.OutOfMemoryError. 后查阅资料认为可能是Matlab JVM内存不够的问题。官方给出的解决方案如下&#xff0c;将JVM内存设置到最大后&#xff0c;情况有所缓解。有时候仍然有些卡 但是…

解决 Macbook 连接蓝牙鼠标卡顿问题

作者&#xff1a;吴业亮 博客&#xff1a;wuyeliang.blog.csdn.net 2.4Ghz的蓝牙与2.4Ghz的Wi-Fi起冲突&#xff0c;环境干扰大。会造成蓝牙鼠标卡顿具体解决办法如下&#xff1a; 打开“系统偏好设置”——“网络”&#xff0c;然后选择更多这里&#xff08;如图&#xff09…

优化不必要的动画,以减少Mac卡顿

本文通过两种方式来减少Mac的动画&#xff0c;友情提示&#xff1b;常重启有助于保持Mac系统正常运转。 条件允许的情况下&#xff0c;安装旧版本Mac系统、减少运行不必要的软件能优化Mac运行速度。 一、系统设置 打开系统偏好设置——>辅助功能 勾选 “减弱动态效果” …

终极方案——解决MacBook/Mac mini连接无线鼠标卡顿、漂移

终极方案——解决MacBook/Mac mini连接无线鼠标卡顿、漂移 Intel处理器机器/旧版Mac系统Apple M系列新机器 Intel处理器机器/旧版Mac系统 找到如图设置&#xff0c;修改网络首选项顺序 Apple M系列新机器 1、在系统设置里新建一个管理员用户 2、在访达-前往-电脑-磁盘-找到新建…

m1 MacBook Pro pycharm打字卡顿问题解决

一般m1芯片的MacBook Pro在pycharm中打字卡顿无非两种情况导致的&#xff0c;一种是分配给pycharm编辑器的内存太小&#xff1b;另一种是下载的版本与m1芯片版本不一致&#xff0c;不兼容导致的卡顿&#xff0c;下面文章详细记录了解决这两种情况的方法。 一、内存不足导致的卡…

Macbook Pro 鼠标卡顿问题

Macbook Pro 鼠标卡顿问题 目前无解&#xff0c;只能改善。该问题最早能追溯到 2015年。 https://jingyan.baidu.com/article/ff42efa93632c5c19e220208.html 原因 据说是无线频段冲突。 罗技低于400 的鼠标就别看了&#xff0c;白花钱。 鼠标在 macbook pro 的卡顿现象主要表现…

解决 Macbook 连接蓝牙鼠标卡顿、飘的现象

原因&#xff1a; 1. 鼠标蓝牙缺陷&#xff0c;蓝牙版本低&#xff0c;电池电量低&#xff1b; 2. 电脑性能卡顿和功能优先度&#xff1b; 3. 2.4Ghz的蓝牙与2.4Ghz的Wi-Fi起冲突&#xff0c;环境干扰大。 这里以解决2和3的问题。 打开“系统偏好设置”——“网络”&#…

Mac卡顿问题处理

导读 1.文件清理 2.网络卡顿问题 文件清理 网络卡顿问题

苹果电脑mac系统运行卡顿 反应慢怎么办?

Mac电脑以生产力著称&#xff0c;卡顿几乎很少发生。但是随着日常的使用&#xff0c;系统空间越来越多&#xff0c;随之而来的问题就是存储空间不足&#xff0c;无法保存文件。如果mac同时运行的软件过多&#xff0c;也会造成卡顿&#xff0c;所以mac电脑并不是不会卡顿&#x…

mac电脑运行很卡不流畅,如何给mac提速?

是不是发现你的 Mac 越用越慢&#xff1f;没错&#xff0c;任何电子设备&#xff0c;随着使用时间的增加&#xff0c;都会出现不如刚买时那么流畅的问题。论其究竟&#xff0c;除了硬件随着时间的损耗&#xff0c;其实还有一部分原因是日常留下的“使用痕迹”和自启动的应用程序…

MacBook苹果笔记本电脑卡顿怎么解决?

MacBook使用时间久了之后很容易出现卡顿的问题。那么出现卡顿的原因有哪些呢&#xff1f;MacBook卡顿怎么处理呢&#xff1f;下面为大家介绍几种可能的解决方案。虽然mac系统相对来说比较稳定&#xff0c;但遇到软件崩溃的情况也会突然卡顿而无法使用。那么&#xff0c;遇上mac…

苹果mac卡顿怎么解决呢?轻松几招让你Mac流畅如新

Mac电脑使用一段时间后就会偶尔发生卡顿的现象&#xff0c;苹果mac卡顿怎么解决呢&#xff1f;这里macw小编为大家带来轻松几招让你Mac流畅如新的方法&#xff0c;一起来看看吧&#xff01;Mac电脑为什么会出现卡顿现象&#xff1f; 因为程序在运行中&#xff0c;所占用资源过高…

为什么mac会卡顿,mac电脑卡顿怎么解决

在正常的运行下&#xff0c;mac系统相对来说是比较流畅的&#xff0c;不容易出现卡顿的现象。如果出现mac卡顿的话&#xff0c;可能是外部环境或应用程序问题引起的。接下来&#xff0c;一起来详细了解下为什么mac会卡顿&#xff0c;mac电脑卡顿怎么解决的相关问题吧。 一、为…

pgAdmin

1.如果postgresql安装的是9.0或以上版本&#xff0c;pgAdmin必须安装1.12版本或以上&#xff0c;否则报错如下&#xff1a; ERROR: column "datconfig" does not exist LINE 1: ...b.dattablespace AS spcoid, spcname, datallowconn, datconfig, .... I click …

pgAdmin的介绍 及使用

1. pgAdmin的介绍 pgAdmin 4是一款专门针对PostgreSQL数据库的客户端管理软件&#xff0c;该版本在pgAdmin 3的基础上做了较大的架构变化&#xff0c;由之前的CS架构变更为基于浏览器的BS架构。 2019年1月10日&#xff0c;pgAdmin全球开发组在其官网上发布了最新版本pgAdmin 4…