当前位置: 首页 > news >正文

Filter(过滤器)

Filter 介绍

过滤器的基本概念

Servlet 过滤器从字面可理解为经过一层层的过滤处理才达到使用的要求,而其实 Servlet 过滤器就是服务器与客户端请求与响应的中间层组件。

在实际项目开发中 Servlet 过滤器主要用于对浏览器的请求进行过滤处理,将过滤后的请求再转给下一个资源。

过滤器是以一种组件的形式绑定到 Web 应用程序当中的,与其他的 Web 应用程序组件不同的是,过滤器是采用了“链”的方式进行处理的,如下所示:

image

Filter

Filter(过滤器)是 JavaWeb 三大组件之一(另外两个是 Servlet 和 Listener),是在 2000 年发布的 Servlet2.3 规范中加入的一个接口,是 Servlet 规范中非常实用的技术。

当需要限制用户访问某些资源或者在处理请求时提前处理某些资源的时候,就可以使用过滤器(Filter)完成。

  • 当一个请求访问服务器资源时,服务器首先判断会是否有过滤器与请求资源相关联,如果有,过滤器会先将请求拦截下来,完成一些特定的功能,再由过滤器决定是否继续交给请求资源进行处理。
  • 响应也是类似的。

Filter 应用场景

  • URL 级别的权限控制
  • 过滤敏感词汇
  • 中文乱码问题
  • ...

Servlet 的 Filter 特点:

  1. 声明式的
    通过在 web.xml 配置文件中声明,允许添加、删除过滤器,而无须改动任何应用程序代码或 JSP 页面。

  2. 灵活的
    过滤器可用于客户端的直接调用执行预处理和后期的处理工作,通过过滤链可以实现一些灵活的功能。

  3. 可移植的
    由于现今各个 Web 容器都是以 Servlet 的规范进行设计的,因此 Servlet 过滤器同样是跨容器的。

  4. 可重用的
    基于其可移植性和声明式的配置方式,Filter 是可重用的。

总的来说,Servlet 的过滤器是通过一个配置文件来灵活的声明的模块化可重用组件。过滤器动态的截获传入的请求和传出的响应,在不修改程序代码的情况下,透明的添加或删除他们。其独立于任何平台和 Web 容器。

Filter API

Filter

Filter 是一个接口。如果想实现过滤器的功能,则必须实现该接口。

核心方法:

返回值方法名作用
voidinit(FilterConfig config)初始化方法
voiddoFilter(ServletRequest request, ServletResponse response, FilterChain chain)对请求资源和响应资源进行拦截
voiddestroy()销毁方法

配置方式:

  • 方式一:使用注解
    @WebFilter("拦截路径")

  • 方式二:web.xml 配置

    image

image

image

FilterChain

  • FilterChain 是一个接口,代表过滤器链对象,由 Servlet 容器提供实现类对象,我们直接使用即可。

  • 过滤器可以定义多个,就会组成过滤器链。

核心方法:

返回值方法名作用
voiddoFilter(ServletRequest request, ServletResponse response)放行方法
  • 如果有多个过滤器,则会在第一个过滤器中再调用下一个过滤器,依次类推,直到到达最终访问资源。
  • 如果只有一个过滤器,放行时,就会直接到达最终访问资源。

文章转载自:
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://www.dtcms.com/a/280753.html

相关文章:

  • Kruskal重构树
  • AutoSQT 2025 第二届汽车软件质量与测试峰会开启报名!
  • wkhtmltopdf导出pdf调试参数
  • 无法判断项目进度中的关键路径,如何进行关键路径分析
  • 创客匠人:创始人 IP 的破局思维,重构知识变现的深层逻辑
  • 基于redis的分布式锁 lua脚本解决原子性
  • easy-ui中的相对路径和绝对路径问题
  • ARM GCC内联汇编
  • 如何轻松将音乐从安卓设备传输到安卓设备
  • 用vue自定义指令设置页面权限
  • Android 事件机制详解
  • day053-初识docker与基础命令
  • 广东省省考备考(第四十六天7.15)——判断推理:位置规律(听课后强化训练)
  • SD-WAN 技术在新能源行业的应用与优选方案分析
  • 【华为机试】3. 无重复字符的最长子串
  • 光米投影 多余之物的本思
  • 怎么样才能入门深度学习?
  • element plus使用插槽方式自定义el-form-item的label
  • NW917NW921美光固态闪存NW946NW952
  • 1.2 vue2(组合式API)的语法结构以及外部暴露
  • Vue框架之模板语法(插值表达式、指令系统、事件处理和表单绑定)全面解析
  • MATLAB 安装 ACADO 的完整步骤
  • 简单工厂设计模式
  • Web应用防火墙(WAF)技术
  • vue实现el-table-column中自定义label
  • 全局 WAF 规则:构筑 Web 安全的坚固防线
  • Git基础概念与常用命令详解
  • x86版的ubuntu上使用qemu运行arm版ubuntu
  • Java项目:基于SSM框架实现的网盘管理系统【ssm+B/S架构+源码+数据库+毕业论文】
  • EMS4100芯祥科技USB3.1高速模拟开关芯片规格介绍