学习spring boot-拦截器Interceptor,过滤器Filter

目录

拦截器Interceptor

过滤器Filter

关于过滤器的前置知识可以参考:

过滤器在springboot项目的应用

一,使用@Webfilter+@ServletComponentScan 注解

1 创建过滤器类实现Filter接口

2 在启动类中添加 @ServletComponentScan 注解

二,创建过滤器配置类,注册过滤器

1 创建过滤器类(不添加WebFilter注解)

2创建配置类, 注册过滤器类


拦截器Interceptor

可以参考 springmvc-拦截器-CSDN博客

过滤器Filter

关于过滤器的前置知识可以参考:

javaWeb之过滤器(Filter)_javaweb中filter过滤器对象什么时候创建?-CSDN博客

过滤器在springboot项目的应用

一,使用@Webfilter+@ServletComponentScan 注解
1 创建过滤器类实现Filter接口
  • 指定过滤器顺序(补充)。若存在多个过滤器且执行顺序重要,可使用@Order注解指定顺序。数字越小优先级越高。如@Order(1) 。
package com.it.heima.springboot06filter.filter;import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;import java.io.IOException;
@WebFilter("/user/*")
public class UserFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("正在初始化~~~~~~");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("是否满足条件");System.out.println("如满足条件放行~~~~~~~~");filterChain.doFilter(servletRequest,servletResponse);}@Overridepublic void destroy() {System.out.println("正在销毁~~~~~~");}
}
2 在启动类中添加 @ServletComponentScan 注解
  • 扫描WebFilter注解,让该注解生效
package com.it.heima.springboot06filter;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;@SpringBootApplication
@ServletComponentScan("com.it.heima.springboot06filter.filter")
public class Springboot06FilterApplication {public static void main(String[] args) {SpringApplication.run(Springboot06FilterApplication.class, args);}}

测试结果

package com.it.heima.springboot06filter.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("user")
public class UserController {@RequestMapping("test")public String test(){System.out.println("正在执行test方法");return "test";}
}


二,创建过滤器配置类,注册过滤器
1 创建过滤器类(不添加WebFilter注解)
package com.it.heima.springboot06filter.filter;import jakarta.servlet.*;import java.io.IOException;public class UserFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("正在初始化~~~~~~");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("是否满足条件");System.out.println("如满足条件放行~~~~~~~~");filterChain.doFilter(servletRequest,servletResponse);}@Overridepublic void destroy() {System.out.println("正在销毁~~~~~~");}
}
2创建配置类, 注册过滤器类
package com.it.heima.springboot06filter.config;import com.it.heima.springboot06filter.filter.UserFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class FilterConfig implements WebMvcConfigurer {@Beanpublic FilterRegistrationBean filterRegistrationBean(){// 创建过滤器注册对象FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();// 把过滤器注入到过滤器注册对象中filterRegistrationBean.setFilter(new UserFilter());// 设置过滤器拦截的请求filterRegistrationBean.addUrlPatterns("/*");return filterRegistrationBean;}
}

测试结果

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

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

相关文章

汇编常用语法

GNU汇编语句: [lable:] instruction [comment] lable 表示标号,表示地址位置,可选. instruction即指令,也就是汇编指令或伪指令。 comment 就是注释内容。 用户使用.section 伪操作来定义一个段,汇编系统预定义了一些…

terraform resource创建了5台阿里云ecs,如要使用terraform删除其中一台主机,如何删除?

在 Terraform 中删除阿里云 5 台 ECS 实例中的某一台,具体操作取决于你创建资源时使用的 多实例管理方式(count 或 for_each)。以下是详细解决方案: 方法一:使用 for_each(推荐) 如果创建时使…

pycharm terminal 窗口打不开了

参考添加链接描述powershell.exe改为cmd.exe发现有一个小正方形,最大化可以看见了。

百度「心响」:左手“多智能体”右手“保姆级服务”,C端用户能看懂这技术告白吗?

——当技术名词撞上“傻瓜式”需求,谁是赢家? 「多智能体」是什么?用户:不重要,能一键搞定就行 百度最新推出的多智能体平台“心响”,号称能用自然语言交互一键托管复杂任务。 从旅游攻略到法律咨询&#x…

57认知干货:AI机器人产业

机器人本质上由可移动的方式和可交互万物的机构组成,即适应不同环境下不同场景的情况,机器人能够做到根据需求调整交互机构和移动方式。因此,随着人工智能技术的发展,AI机器人的产业也将在未来逐步从单一任务的执行者,发展为能够完成复杂多样任务的智能体。 在未来的社会…

在两个bean之间进行数据传递的解决方案

简介 在日常开发中,在两个bean之间进行数据传递是常见的操作,例如在日常开发中,将数据从VO类转移到DO类等。在两个bean之间进行数据传递,最常见的解决方案,就是手动复制,但是它比较繁琐,充斥着…

基于开闭原则优化数据库查询语句拼接方法

背景 在开发实践中,曾有同事在实现新功能时,因直接修改一段数据库查询条件拼接方法的代码逻辑,导致生产环境出现故障。 具体来看,该方法通过在函数内部直接编写条件判断语句实现查询拼接,尽管从面向对象设计的开闭原…

QT开发工具对比:Qt Creator、Qt Designer、Qt Design Studio

前端开发工具—Qt Designer Qt Designer是Qt框架的一部分,是一个图形用户界面设计工具。它允许开发者通过可视化方式设计和布局GUI组件,而无需手动编写UI代码。设计完成后,Qt Designer生成UI文件(通常以.ui为扩展名)&…

0基础 | STM32 | TB6612电机驱动使用

TB6612介绍及使用 单片机通过驱动板连接至电机 原因:单品机I/O口输出电流I小 驱动板:从外部引入高电压,控制电机驱动 电源部分 VM:电机驱动电源输入,输入电压范围建议为3.7~12V GND:逻辑电…

【操作系统】死锁

1. 定义 死锁是指两个或多个进程(或线程)在执行过程中,因争夺资源而造成的一种僵局,每个进程都无限期地等待其他进程释放它们所持有的资源。在这种情况下,没有任何进程能够继续执行,除非有外部干预。 2. …

C++入门☞关于类的一些特殊知识点

涉及的关于类中的默认成员函数的知识点可以看我的这篇博客哦~ C入门必须知道的知识☞类的默认成员函数,一文讲透运用 目录 初始化列表 类型转换 static成员 友元 内部类 匿名对象 对象拷贝时的一些编译器的优化 初始化列表 我们知道类中的构造函数的任务是完…

只用Prettier进行格式化项目

1.下载Prettier插件,禁用ESlint 2.在项目根目录新建.prettierrc文件 {"singleQuote": true,"jsxSingleQuote": true,"printWidth": 100,"trailingComma": "none","tabWidth": 2,"semi": f…

XXL-TOOL v1.4.0 发布 | Java工具类库

Release Notes 1、【新增】JsonRpc模块:一个轻量级、跨语言远程过程调用实现,基于json、http实现(从XXL-JOB底层通讯组件提炼抽象)。2、【新增】Concurrent模块:一系列并发编程工具,具备良好的线程安全、高…

基于LVGL的登录界面设计

目录 一、演示 二、前言 三、部件知识 3.1 图片按钮部件 3.1.1 图片按钮部件的组成 3.1.2 图片的来源 3.1.3 添加/清除的状态 3.1.4 图片按钮部件 API 函数 3.2 键盘部件(lv_keyboard) 3.2.1 键盘部件的组成 3.2.2 键盘部件的相关知识 3.2.2.1 键盘部件模式 3.…

S3 跨账户复制:增强云中的灾难恢复计划

您准备好提升您的云和 DevOps 技能了吗? 🐥《云原生devops》专门为您打造,我们精心打造的 30 篇文章库,这些文章涵盖了 Azure、AWS 和 DevOps 方法论的众多重要主题。无论您是希望精进专业知识的资深专业人士,还是渴望…

线程与进程深度解析:从fork行为到生产者-消费者模型

线程与进程深度解析:从fork行为到生产者-消费者模型 一、多线程环境下的fork行为与线程安全 1. 多线程程序中fork的特殊性 核心问题:fork后子进程的线程模型 当多线程程序中的某个线程调用fork时: 子进程仅包含调用fork的线程&#xff1…

Circular Plot系列(五): circle plot展示单细胞互作

这是我们circle系列的最后一节,我想常见的弦图是绕不开的,所以最后从前面介绍的circle plot思路,做一遍弦图。其实前面的内容如果消化了,plot互作弦图也就不成什么问题了。 效果如下: #cellchat提取互作结果&#xff…

(11)Vue-Router路由的详细使用

本系列教程目录:Vue3Element Plus全套学习笔记-目录大纲 文章目录 第2章 路由 Vue-Router2.1 Vue路由快速入门2.1.1 创建项目2.1.2 路由运行流程 2.2 传递参数-useRoute2.2.1 路径参数-params1)普通传参2)传递多个参数3)对象方式传…

react + antd 实现后台管理系统

文章目录 完整路由搭建Layout 和 Aside组件引入 AntdAside组件实现 项目效果图 项目完整代码地址 https://gitee.com/lyh1999/react-back-management 项目完整代码地址 react依赖安装 最好采用yarn 安装 react-router 安装依赖 配置路由 history模式 / // src/router/…

基于AWS Marketplace的快速解决方案:从选型到部署实战

1. 引言:为什么选择AWS Marketplace? 在数字化转型的背景下,企业需要快速获取成熟的软件工具和服务以降低开发成本。AWS Marketplace 作为亚马逊云科技的官方应用商店,提供超过万款预配置的第三方和AWS原生解决方案,涵…