Spring Boot 进阶-Spring Boot 如何实现自定义的过滤器详解

devtools/2024/10/18 3:27:38/

在这里插入图片描述
  在上一篇文章中我们讲解了关于拦截器的相关内容,并且通过一个防抖的例子来讲解了拦截器在实际开发中的使用。这篇文章我们为大家带来的就是关于过滤器的相关内容的分享。下面我们首先来介绍一下什么是过滤器。

什么是过滤器?

  过滤器Filter,是Servlet技术中最常用的技术,开发人员可以通过Filter技术对Web端的资源、以及静态文件等内容进行一个过滤拦截,同时,还可以实现权限控制,敏感词汇过滤,等操作。下面我们就来了解一下Filter的原理。

Filter原理

  当浏览器向Web服务器发出资源请求的时候,Web服务器需要对用户请求根据应用程序配置的规则进行检查,如果客户端请求满足请求过滤规则对请求或者是响应进行拦截,对请求头或者是请求数据进行检查和过滤,而且这个地方提到的这个过滤器是用到了责任链设计模式,也就是说通过第一个过滤器之后,还需要依次通过后续的过滤器。最后再将请求交给Web服务器进行处理。
  注意,这些请求信息可以在过滤器链中被修改,当然这其中有通过的请求,也有不符合规则被过滤掉的请求。如下图所示
在这里插入图片描述
  服务器端会按照约定的过滤器规则组成一条调用链,然后依次的执行这些过滤器中的doFilter()方法。值得注意的是这里提到的Filter和Servlet并不是一样的概念。整个的filter调用链如下图所示。
在这里插入图片描述

如何去自定义一个Filter?

  与定义拦截器相同,如果要去自定义一个拦截器,需要实现javax.servlet.Filter接口,这里我们来演示自定义过滤器的用法

java">public class RepeatableFilter implements Filter
{@Overridepublic void init(FilterConfig filterConfig) throws ServletException{}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException{ServletRequest requestWrapper = null;if (request instanceof HttpServletRequest&& StringUtils.startsWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE)){requestWrapper = new 

http://www.ppmy.cn/devtools/119164.html

相关文章

Motion open Heart 详细动画化开放式心脏解剖

详细和动画的心脏直视解剖。 具有真实的运动和精确的心动周期动画。 包括真实阀门动画序列。 配备高清纹理2048x2048和高清法线贴图,可在教育和游戏方面获得更好、更真实的效果。为(VR)虚拟现实场景和增强现实(AR)做好准备。 下载:​​Unity资源商店链接资源下载链接 …

C++ 排序算法

快速排序 思想: 分而治之,或者说递归,即大问题拆解成类似的小问题,把所有的小问题解决,就解决了大问题; 应用在快排(默认从小到大排序)上,就是取一基准点,遍…

0基础跟德姆(dom)一起学AI 机器学习02-KNN算法

【理解】KNN算法思想 K-近邻算法(K Nearest Neighbor,简称KNN)。比如:根据你的“邻居”来推断出你的类别 KNN算法思想:如果一个样本在特征空间中的 k 个最相似的样本中的大多数属于某一个类别,则该样本也属…

从零到 Go 语言开发:你可能需要了解下 5 个关键技巧

你有没有想过,要在 Go 语言中开发一个简单的 Web 应用其实没那么难?或者说,你是不是在学习 Go 语言的时候,常常觉得各种框架和概念让人头疼?今天,我就带你一步一步看看 Go 语言 Web 开发中最核心的几个点,揭开它那看似复杂的面纱,实际操作起来,可能比你想象中简单得多…

【Webpack】使用 Webpack 和 LocalStorage 实现静态资源的离线缓存

基本流程 1)使用 Webpack 进行资源打包: 安装 Webpack 及其相关插件。配置 Webpack,将静态资源打包到特定目录。 2)配置 Service Worker: 安装 workbox-webpack-plugin 插件。配置 Service Worker,通过…

初识Linux · 地址空间

目录 前言: 代码现象 快速理解该现象 理解部分细节问题 细节1 拷贝和独立性 细节2 如何理解地址空间 细节3 为什么存在地址空间 细节4 如何进一步理解页表和写时拷贝 前言: 本文介绍的是有关地址空间,咱们的介绍的大体思路是&#x…

Python发送邮件教程:如何实现自动化发信?

Python发送邮件有哪些方法?如何利用python发送邮件? 无论是工作汇报、客户通知还是个人提醒,邮件都能快速传递信息。Python发送邮件的自动化功能就显得尤为重要。AokSend将详细介绍如何使用Python发送邮件,实现自动化发信&#x…

LeetCode: 1971. 寻找图中是否存在路径

寻找图中是否存在路径 原题 有一个具有 n 个顶点的 双向 图,其中每个顶点标记从 0 到 n - 1(包含 0 和 n - 1)。图中的边用一个二维整数数组 edges 表示,其中 edges[i] [ui, vi] 表示顶点 ui 和顶点 vi 之间的双向边。 每个顶点…