SpringBoot中使用过滤器filter

news2024/12/25 14:32:24

过滤器Filter

在 Java 中,Filter(过滤器)是一种用于对请求进行预处理和后处理的机制。

工作原理:

当一个请求到达服务器时,会先经过一系列配置好的过滤器。过滤器可以检查请求的参数、头信息、请求体等内容,并根据特定的规则进行处理。处理完请求后,再将请求传递给目标资源。在响应返回时,过滤器也可以对响应进行相应的处理,如修改响应头、压缩响应内容等。

快速上手

废话不多说直接来看快速上手,老规矩背景是在测试类中进行。

这个添加依赖

步骤

第1步,定义过滤器 :1.定义一个类,实现 Filter 接口,并重写其所有方法

第2步,配置过滤器:Filter类上加 @WebFilter 注解,配置拦截资源的路径。

第3部,在启动类上点加@servletComponentScan注解。

代码

//定义一个类,实现一个标准的Filter过滤器的接口
@WebFilter(urlPatterns="/*")
public class DemoFilter implements Filter {
@Override //初始化方法, 只调用一次
public void init(FilterConfig filterConfig) throws
ServletException {
System.out.println("init 初始化方法执行了");
}
@Override //拦截到请求之后调用, 调用多次
public void doFilter(ServletRequest request, ServletResponse
response, FilterChain chain) throws IOException, ServletException {
System.out.println("Demo 拦截到了请求...放行前逻辑");
//放行
chain.doFilter(request,response);
}
@Override //销毁方法, 只调用一次
public void destroy() {
System.out.println("destroy 销毁方法执行了");
}
}

init方法:过滤器的初始化方法。在web服务器启动的时候会自动的创建Filter过滤器对
象,在创建过滤器对象的时候会自动调用init初始化方法,这个方法只会被调用一次。

doFilter方法:这个方法是在每一次拦截到请求之后都会被调用,所以这个方法是会被调
用多次的,每拦截到一次请求就会调用一次doFilter()方法。

destroy方法: 是销毁的方法。当我们关闭服务器的时候,它会自动的调用销毁方法
destroy,而这个销毁方法也只会被调用一次。

到这一步了其实过滤器还是没有生效,因为没有执行第三步,从本质上讲,过滤器是 Servlet 规范的组成部分,而不是 Spring 框架原生自带的特定组件。

@ServletComponentScan
@SpringBootApplication
public class TliasWebManagementApplication {
public static void main(String[] args) {
SpringApplication.run(TliasWebManagementApplication.class,
args);
}
}

过滤器的执行流程

过滤器的拦截路径配置

拦截路径urlPatterns值含义
拦截具体路径/login只有访问 /login 路径时,才会被拦截
目录拦截/emps/*访问/emps下的所有资源,都会被拦截
拦截所有/*访问所有资源,都会被拦截

过滤器链

在我们web服务器当中,定义了两个过滤器,这两个过滤器就形成了一个过滤器链。
而这个链上的过滤器在执行的时候会一个一个的执行,会先执行第一个Filter,放行之后再来执行第二
个Filter,如果执行到了最后一个过滤器放行之后,才会访问对应的web资源。
访问完web资源之后,按照我们刚才所介绍的过滤器的执行流程,还会回到过滤器当中来执行过滤器放
行后的逻辑,而在执行放行后的逻辑的时候,顺序是反着的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1991132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

buuctf CrackRTF (补)

另一种做题方式。 前言:学习笔记。 例题学习,涨大知识。 深入刨析,学习。 常规什么的这次就不写了,这篇wp主要是用于学习,以及分析。 以资料,代码理解,编程思维、编程手法等为主。 重在分析学…

php常见代码执行函数和常见系统命令执行函数。

PHP中常见代码执行函数: array_map() eval() assert() preg_replace() call_user_func() $a($b)动态函数 PHP中常见系统命令执行函数: system() exec() shell_exec() passthru() popen() 反引号"" 命令执行危险函数之assert函数…

成都云飞浩容文化传媒有限公司正规吗怎么样?

在数字经济的浪潮中,电商行业如日中天,成为推动经济增长的重要引擎。在这片蓝海中,如何脱颖而出,实现品牌与销量的双重飞跃?成都云飞浩容文化传媒有限公司,作为电商服务领域的佼佼者,正以专业的…

Echarts图表官网打开太慢怎么办?echarts.apache.org

1.ping官网,获取ip 使用 WIN R 输入cmd 进入命令控制台,ping 官网地址:echarts.apache.org 获取到的IP是 151.101.2.132 2.给hosts文件添加内容 使用文本编辑工具或编译器 打开 C:\Windows\System32\drivers\etc\hosts 文件,在最…

Linux基础知识之管理用户密码

往期系列内容回顾: Linux基础知识之Shell命令行及终端中的快捷键 Linux基础知识之man手册页_man 手册页-CSDN博客 Linux基础知识之Linux文件系统权限-CSDN博客 Linux基础知识之使用 Shell 扩展匹配文件名-CSDN博客 shadow 密码和密码策略 用户密码是Linux用户…

文件目录。

1、转换函数fileno和fdopen 一、文件目录 打开目录:opendir 读取目录:readdir:返回值是info(目录中的一项内容),type表示类型是目录。 关闭目录:closedir 输出的是所有文件,包括隐…

[工具]-gitee+pycharm-配置

安装git ​ 查看git是否安装设置成功: ​ git config user.name ​ git config user.email ​ 码云账号设置邮箱 pycharm设置gitee 打开 PyCharm,在 Settings - Plugins 里面,搜索 Gitee 插件,安装后重启 PyCharm。 pychar…

Java设计模式(原型模式)

定义 使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。 角色 Prototype(抽象原型角色) ConcretePrototype(具体原型角色) Client(客户端角色 优点 简化对象的创建过程&#xff0c…

Java网络编程、TCP、UDP、Socket通信---初识版

标题 InetAddress----IP地址端口号协议(UDP/TCP)JAVA操作-UDP一发一收模式多发多收 JAVA操作-TCP一发一收多发多收 实现群聊功能BS架构线程池优化 InetAddress----IP地址 端口号 协议(UDP/TCP) JAVA操作-UDP 一发一收模式 多发多收…

用Java手写jvm之模拟数组相关操作

写在前面 本文看下如何模拟数组相关的操作,主要是实现数组相关的指令,关于数组相关的指令可以参考这篇文章。 1:正文 简单起见这里我们仅仅实现int基础数据类型的一维数组。 newarray指令对应的类 package com.dahuyou.tryy.too.simulat…

猫咪不爱喝水又挑食,终于找到适合的补水罐

我已经被她搞疯掉了,养了快两年,特别不爱喝水。喂的是干粮,干粮本身就水少,加上她不爱喝水,我都怀疑它一天有没喝够20ml没有,太可怕了,只能拿针管喂。我看过很多科普,换过每天勤换水,水碗离猫粮很远,水碗不会太小不存在…

2025年第六届教育和信息技术进展国际会议(AEIT 2025)将在日本福冈召开!

2025 第六届教育和信息技术进展国际会议将于 2025 年 1 月 10-12 日在日本福冈举行,AEIT2025旨在为全世界的科学家、研究人员、工程师和工业从业人员提供一个良好的论坛,展示和讨论教育技术领域的最新技术进展以及未来的发展方向和趋势。 会议官网&#…

【HarmonyOS NEXT星河版开发学习】小型测试案例08-人气卡片

个人主页→VON 收录专栏→鸿蒙开发小型案例总结​​​​​ 基础语法部分会发布于github 和 gitee上面(暂未发布) 前言 鸿蒙开发中的绝对定位和层级是关键的布局和设计概念,它们通过特定的属性和方式决定了组件在界面上的位置和层叠顺序。 知识…

Fast Planner规划算法(三)—— Fast Planner后端之轨迹优化与轨迹优化与时间重分配

本系列文章用于学习记录Fast-Planner规划算法的相关内容,主要学习资料是深蓝学院的移动机器人运动规划课程 三、Fast Planner后端之轨迹优化 在上一篇文章中,我们给出了 Fast Planner中的B样条曲线的表达式,在给定时间区间后,唯一…

【从零开始一步步学习VSOA开发】订阅发布变速器

订阅发布变速器 概念 在许多场景中,我们需要控制发布频率。例如,一个 UI 界面不能过快的接收处理信息,而此时发布者的发布频率又非常快。在这种场景下,我们需要改变发布的频率。 使用 VSOA Regulator 可以解决这个问题&#xff…

Kafka + Kraft 集群搭建教程,附详细配置及自动化安装脚本

本文主要介绍 kafka kraft 搭建过程,主要用途是为了日志采集,所以搭建相对比较简单暴力,不过也可以作为一个参考供大家学习,主打一个能用管跑(调优啊,参数解释啊,原理啊,太枯燥了&a…

其实PMP考试真的不需要焦虑

在考PMP之前,觉得报名费好贵很可怕,很怕自己考不过然后3900打水漂~然后我自己慢慢悠悠跟着老师安排来,2个月就上岸啦~担心真的是多余的! 问了一下培训班的小伙伴,好像都过了。听说PMP在国内的通过率高达90%不知道真假…

高频焊机电源模型建立及谐波分析

1、仿真建模工具 本文的仿真建模工具软件采用MATLAB7.0,即目前工程领域最为流行的软件。MATLAB把计算、可视化、程序设计融入到了一个交互的工作环境中,已经成为电力系统仿真、自动控制理论、数字信号处理、图像处理等领域的常用工具软件。MATLAB中的SIM…

解锁数据“智能”背后的秘密

在这个被数据洪流包围的时代,每一秒都有无数的信息在生成、传递、分析。但你是否曾好奇,这些数据是如何从简单的数字、文字转化为推动社会进步、改变生活方式的“智能”力量的?今天,就让我们一起揭开数据“智能”背后的神秘面纱&a…

在Excel中启用宏 (~ ̄▽ ̄)~

一、启用宏 打开任意Excel,点击屏幕左上角的文件选项,然后选择Excel选项窗口。在Excel选项窗口中,选择信任中心按钮;在信任中心设置窗口中,选择宏设置,启用所有宏(不推荐,潜在风险&a…