Spring中filter过滤器的定义方法

 更新时间:2023年08月12日 10:21:31   作者:L_J_X03  
这篇文章主要介绍了Spring中filter过滤器的定义方法,Filter 程序是一个实现了特殊接口的 Java 类,与 Servlet 类似,也是由 Servlet 容器进行调用和执行的,需要的朋友可以参考下

filter

spring的filter是作用在interceptor(拦截器)之前,filter主要是依赖serlvet容器

filter怎样在spring中的使用

1.只用自定义的过滤器

使用WebFilter要使用ServletComponentScan注解,不然会失效

实现java.servlet.filter接口

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@Component
@WebFilter(filterName="myFilter",urlPatterns = "/*")
public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        filterChain.doFilter(servletRequest,servletResponse);
    }
}
@SpringBootApplication
@ComponentScan(value = "com.example")
@ServletComponentScan   //扫描过滤器
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

继承springframework.web.filter.oncePerRequestFilter(同样是要使用@ServletComponentScan)

import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebFilter //继承OncePerRequestFilter的过滤的类,对每个请求只会过滤一次,这也是与实现Filter类不一样的地方
public class MyOnceProRequestFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
        filterChain.doFilter(httpServletRequest,httpServletResponse);
    }
}

2.注册自己自定义的过滤器

写一个配置类(使用Configuration),使用@Bean注入

@Configuration  //表示这是一个设置类
public class MyRegistration {
    @Bean
    public FilterRegistrationBean MyRegistrationBean(MyFilter myFilter){
        FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<>();
        registrationBean.setFilter(myFilter);   //设置过滤器
        registrationBean.setUrlPatterns(Collections.singleton("/*")); //设置过滤路径
        registrationBean.setOrder(1);  //设置优先级
        return registrationBean;
    }
}

到此这篇关于Spring中filter过滤器的定义方法的文章就介绍到这了,更多相关filter过滤器的定义内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MyBatis-Spring配置的讲解

    MyBatis-Spring配置的讲解

    今天小编就为大家分享一篇关于MyBatis-Spring配置的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • springboot CommandLineRunner接口实现自动任务加载功能

    springboot CommandLineRunner接口实现自动任务加载功能

    这篇文章主要介绍了springboot CommandLineRunner接口实现自动任务加载功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Windows+Apache+resin配置

    Windows+Apache+resin配置

    Windows+Apache+resin配置...
    2006-12-12
  • 在Spring中基于Java类进行配置的完整步骤

    在Spring中基于Java类进行配置的完整步骤

    基于Java配置选项,可以编写大多数的Spring不用配置XML,下面这篇文章主要给大家介绍了关于在Spring中基于Java类进行配置的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • Spring Cloud多个微服务之间调用代码实例

    Spring Cloud多个微服务之间调用代码实例

    这篇文章主要介绍了Spring Cloud多个微服务之间调用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 关于jdk8升级jdk21 cxf报错的踩坑记录

    关于jdk8升级jdk21 cxf报错的踩坑记录

    在升级Java项目时,从JDK1.8和Spring2迁移到JDK21和Spring3后,遇到了JAXBException错误,原因是从JDK11开始移除了jaxb模块,而cxf在编译动态客户端时默认classpath不包含必要的类,解决方法是在jar包同级目录创建libs并添加jakarta.xml.bind-api
    2024-10-10
  • SpringBoot集成redis与session实现分布式单点登录

    SpringBoot集成redis与session实现分布式单点登录

    这篇文章主要介绍了SpringBoot集成redis与session实现分布式单点登录,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Java中的原子性、可见性和有序性示例详解

    Java中的原子性、可见性和有序性示例详解

    原子性、可见性、有序性是多线程编程中最重要的几个知识点,由于多线程情况复杂,如何让每个线程能看到正确的结果,这是非常重要的,这篇文章主要介绍了Java中原子性、可见性和有序性的相关资料,需要的朋友可以参考下
    2026-01-01
  • spring的xml方式配置bean全过程

    spring的xml方式配置bean全过程

    文章介绍了Spring框架中配置bean的四种情况:无参构造方法、有参构造方法、Setter方法和实现InitializingBean接口,还提到了IOC控制反转、DI依赖注入和AOP面向切面编程是Spring的三大特性
    2026-03-03
  • SpringBoot+Redis Bitmap实现活跃用户统计

    SpringBoot+Redis Bitmap实现活跃用户统计

    Redis的Bitmap数据结构是一种紧凑的位图,它可以用于实现各种场景,其中统计活跃用户是一种经典的业务场景,下面我们就来学习一下SpringBoot如何利用Redis中的Bitmap实现活跃用户统计吧
    2023-11-11

最新评论