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

学习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.dtcms.com/a/171546.html

相关文章:

  • ResNet改进(36):ResNeXt与ResNet的混合模型实现
  • 解决:前后端跨域请求
  • 【Java学习笔记】可变参数
  • 深入解析Linux进程间通信(IPC):机制、应用与最佳实践
  • 【Java 并发编程】线程的基本使用(持续更新优化)
  • 全面掌握 Jetpack Compose 的 State 体系:核心用法与最佳实践
  • 深入理解线程死锁:从概念到 Java 实战
  • 【win11 】win11 键盘测试
  • 【Python】存储机制和容器四大件列表、元组、字典、集合
  • 【言语理解】中心理解题目之选项分析
  • Java捕获InterruptedException异常后,会自动清空中断状态
  • 卷积神经网络实战(2)
  • [ML]通过50个Python案例了解深度学习和神经网络
  • VulnHub-OSCP靶机
  • 【神经网络与深度学习】生成模型-单位高斯分布 Generating Models-unit Gaussian distribution
  • 超详细讲解C语言转义字符\a \b \r \t \? \n等等
  • 单调栈与单调队列(c艹)、可视化Qt?
  • Android第三次面试总结之网络篇补充
  • 使用 Hugging Face 镜像站快速下载大模型
  • emplace_back和push_back
  • 五、shell脚本--函数与脚本结构:搭积木,让脚本更有条理
  • Vultr之Ubuntu重设密码
  • 解决在 Linux 中 WPS 字体缺失问题
  • KAG:通过知识增强生成提升专业领域的大型语言模型(三)
  • 有关水下图像增强的论文
  • [特殊字符] 专业角度深入讲解:大模型备案(生成式人工智能)
  • RuntimeError: CUDA error: __global__ function call is not configured
  • 计算机图形学中的深度学习
  • 2025年- H25-Lc133- 104. 二叉树的最大深度(树)---java版
  • [计算机网络]拓扑结构