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

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

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

什么是过滤器?

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

Filter原理

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

如何去自定义一个Filter?

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

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.mrgr.cn/news/38779.html

相关文章:

  • 人工智能与机器学习原理精解【29】
  • 生信初学者教程(十五):差异结果的热图
  • 聚势启新 智向未来 | 重庆华阳通用科技有限公司揭牌成立
  • PHP基础语法
  • Java SPI 原理、样例
  • 基于Python的人工智能应用案例系列(14):Fashion MNIST图像分类CNN
  • 八段锦之养生功效:AI语义学分析
  • 进程管理工具:非daemon进程管理工具supervisor
  • 物理加密机的高性能操作
  • AutoGen框架进行多智能体协作—AI Agentic Design Patterns with AutoGen(一)
  • 【Linux】修改用户名用户家目录
  • C# Blazor Server 调用海康H5Player播放摄像头画面
  • 带链的队列,入队,退队,检测带链队列的状态
  • 虚拟环境更改gcc、g++编译器版本
  • 【经验技巧】如何做好S参数的仿测一致性
  • WeChat_DevTools 断点调试方法总结
  • 工业制氮机在食品行业的应用优势
  • 【JS】封装针对dom节点的全屏查看功能
  • 阿布量化:基于 Python 的量化交易框架
  • 嵌入式学习——进程间通信方式(4)—— 消息队列