当前位置: 首页 > 编程笔记 >

Spring Boot配置过滤器的2种方式示例

公良俊楚
2023-03-14
本文向大家介绍Spring Boot配置过滤器的2种方式示例,包括了Spring Boot配置过滤器的2种方式示例的使用技巧和注意事项,需要的朋友参考一下

前言

过滤器(Filter)是Servlet中常用的技术,可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,常用的场景有登录校验、权限控制、敏感词过滤等,下面介绍下Spring Boot配置过滤器的两种方式。

一、@WebFilter注解方式

使用@WebFilter注解为声明当前类为filter,第一个参数为该filter起一个名字,第二个参数为说明要拦截的请求地址,当前类需要实现Filter接口,里面有三个方法,分别为过滤器初始化、过滤方法和过滤器销毁。

@Slf4j
@WebFilter(filterName = "myFilter1", urlPatterns = "/*")
public class MyFilter1 implements Filter {
 @Override
 public void init(FilterConfig filterConfig) throws ServletException {
 log.info(filterConfig.getFilterName() + " init");
 }

 @Override
 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
 log.info("myFilter1 begin");
 try {
  log.info("业务方法执行");
  chain.doFilter(request, response);
 } catch (Exception e) {
  log.error("error!", e);
 }
 log.info("myFilter1 end");
 }

 @Override
 public void destroy() {
 }
}

启动类添加@ServletComponentScan注解,@ServletComponentScan注解所扫描的包路径必须包含该Filter,代码如下:

@SpringBootApplication
@ServletComponentScan(basePackages = "com.example.demo.filter")
public class DemoApplication {

 public static void main(String[] args) {
 SpringApplication.run(DemoApplication.class, args);
 }
}

二、@Bean注解方式

新建MyFilter2.java类,不要加注解@WebFilter,代码如下:

@Slf4j
public class MyFilter2 implements Filter {
 @Override
 public void init(FilterConfig filterConfig) throws ServletException {
 log.info(filterConfig.getFilterName() + " init");
 }

 @Override
 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
 log.info("myFilter2 begin");
 try {
  log.info("业务方法执行");
  chain.doFilter(request, response);
 } catch (Exception e) {
  log.error("error!", e);
 }
 log.info("myFilter2 end");
 }

 @Override
 public void destroy() {
 }
}

新建配置类WebConfig.java,配置bean,代码如下:

@Configuration
public class WebConfig {

 @Bean
 public FilterRegistrationBean testFilterRegistration() {
 FilterRegistrationBean registration = new FilterRegistrationBean(new MyFilter2());
 registration.addUrlPatterns("/test"); //
 registration.setName("myFilter2");
 return registration;
 }
}

三、查看运行效果

项目启动后浏览器访问http://localhost:8080/test,可以看到过滤器已生效,后台打印日志如下:

[nio-8080-exec-1] com.example.demo.filter.MyFilter1        : myFilter1 begin
[nio-8080-exec-1] com.example.demo.filter.MyFilter1        : 业务方法执行
[nio-8080-exec-1] com.example.demo.filter.MyFilter1        : myFilter1 end

到此Spring Boot配置过滤器的两种方式已经全部实现,有问题欢迎留言沟通哦!

完整源码地址: https://github.com/suisui2019/springboot-study

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。

 类似资料:
  • 本文向大家介绍spring boot 配置Filter过滤器的方法,包括了spring boot 配置Filter过滤器的方法的使用技巧和注意事项,需要的朋友参考一下 Filter 过滤器是web开发中很重要的一个组件,下面以一个session登陆的例子介绍下spring boot中如何使用Filter 首先要准备一个实现了Filter的接口的类 SessionFilter: 实际开发中往往有很多

  • 本文向大家介绍简单了解SpringBoot过滤器及使用方式,包括了简单了解SpringBoot过滤器及使用方式的使用技巧和注意事项,需要的朋友参考一下 过滤器简介 过滤器依赖Servlet容器,属于Servlet规范的一部分。 在实现上基于Servlet容器的函数回调,可以对几乎所有请求进行过滤。 Filter的生命周期由Servlet容器管理。 过滤器执行流程 过滤器配置使用方式一 过滤器配置方

  • 本文向大家介绍SpringBoot定义过滤器、监听器、拦截器的方法,包括了SpringBoot定义过滤器、监听器、拦截器的方法的使用技巧和注意事项,需要的朋友参考一下 一、自定义过滤器 创建一个过滤器,实现javax.servlet.Filter接口,并重写其中的init、doFilter、destory方法。 二、自定义监听器 创建一个过滤器,实现ServletContextListener接口

  • 1、xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http

  • 本文向大家介绍spring aop两种配置方式,包括了spring aop两种配置方式的使用技巧和注意事项,需要的朋友参考一下 第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步: 1. 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointcut),通知类型(@Before, @AfterReturning,@After,@AfterThro

  • 主要内容:1.maven仓库,2.过滤器,3.拦截器,4.监听器,5.实例化,6.测试,7.拦截器与过滤器的区别1.maven仓库 2.过滤器 过滤器的英文名称为 Filter, 是 Servlet 技术中最实用的技术。 如同它的名字一样,过滤器是处于客户端和服务器资源文件之间的一道过滤网,帮助我们过滤掉一些不符合要求的请求,通常用作 Session 校验,判断用户权限,如果不符合设定条件,则会被拦截到特殊的地址或者基于特殊的响应。 3.拦截器 Java中的拦截器是动态拦截 action 调用的