SpringBoot中Filter没有生效原因及解决方案

 更新时间:2024年04月10日 11:40:45   作者:梦幻灵风  
Servlet 三大组件 Servlet、Filter、Listener 在传统项目中需要在 web.xml 中进行相应的配置,这篇文章主要介绍了SpringBoot中Filter没有生效原因及解决方案,需要的朋友可以参考下

我的一个老项目从SpringMvc升级到了SpringBoot、项目中使用了两个过滤器,分别是XSS注入过滤器和CSRF攻击过滤器。

Servlet 三大组件 Servlet、Filter、Listener 在传统项目中需要在 web.xml 中进行相应的配置。

Servlet 3.0 开始在 javax.servlet.annotation 包下提供 3 个对应的 @WebServlet、@WebFilter、@WebListener 注解来简化操作,@WebServlet、@WebFilter、@WebListener 写在对应的 Servlet、Filter、Listener 类上作为标识,从而不需要在 web.xml 中进行配置了。

因此新的代码如下

@Component
@WebFilter(urlPatterns = {"/*"}, filterName = "csrfFilter")
public class WebCsrfFilter implements Filter{
}

@Component
@WebFilter(urlPatterns = {"/*"}, filterName = "xssFilter")
public class WebXssFilter extends XssFilter {
}

在测试过程中发现设置的Filter没有生效,经过排查发现需要注意的是:Spring Boot 应用中这三个注解默认是不被扫描的,需要在项目启动类上添加 @ServletComponentScan 注解, 表示对 Servlet 组件扫描。

因此在SpringBootApplication项目上需要使用@ServletComponentScan注解后,Servlet、Filter、Listener才可以直接通过@WebServlet、@WebFilter、@WebListener注解自动注册,无需其他代码。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan(basePackages = "com.web.global.filter")
public class WebApplication extends SpringBootServletInitializer{
    public static void main(String[] args) {
        SpringApplication.run(WebApplication.class, args);
}

到此这篇关于SpringBoot中Filter没有生效原因排查的文章就介绍到这了,更多相关SpringBoot中Filter没有生效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现数字金额转换为中文大写金额的完整指南与优化技巧

    Java实现数字金额转换为中文大写金额的完整指南与优化技巧

    在金融、财务和商务系统中,将数字金额转换为中文大写金额是一项常见需求,中文大写金额能有效避免篡改和歧义,是合同、发票等正式场景的规范要求,本文将通过Java实现这一功能,需要的朋友可以参考下
    2025-12-12
  • 一文了解Java读写锁ReentrantReadWriteLock的使用

    一文了解Java读写锁ReentrantReadWriteLock的使用

    ReentrantReadWriteLock称为读写锁,它提供一个读锁,支持多个线程共享同一把锁。这篇文章主要讲解一下ReentrantReadWriteLock的使用和应用场景,感兴趣的可以了解一下
    2022-10-10
  • Java枚举之EnumSet详解

    Java枚举之EnumSet详解

    这篇文章主要介绍了Java枚举之EnumSet详解,使用时进行与或运算,但是定义多了之后,会很乱、臃肿,编写容易出错,EnumSet可以实现类似的功能,且使用起来很简洁,需要的朋友可以参考下
    2023-12-12
  • java图论普利姆及克鲁斯卡算法解决最小生成树问题详解

    java图论普利姆及克鲁斯卡算法解决最小生成树问题详解

    这篇文章主要为大家介绍了java图论普利姆算法及克鲁斯卡算法解决最小生成树问题的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • Spring Bean Scope 有状态的Bean与无状态的Bean

    Spring Bean Scope 有状态的Bean与无状态的Bean

    这篇文章主要介绍了Spring Bean Scope 有状态的Bean与无状态的Bean,每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,下面来了解有状态和无状态的区别吧
    2022-01-01
  • 如何使用Jenkins构建GIT+Maven项目

    如何使用Jenkins构建GIT+Maven项目

    这篇文章主要介绍了如何使用Jenkins构建GIT+Maven项目,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • SpringCloud Config统一配置中心问题分析解决与客户端动态刷新实现

    SpringCloud Config统一配置中心问题分析解决与客户端动态刷新实现

    springcloud config是一个解决分布式系统的配置管理方案。它包含了 client和server两个部分,server端提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client端通过接口获取数据、并依据此数据初始化自己的应用
    2022-10-10
  • Java中关键字final finally finalize的区别介绍

    Java中关键字final finally finalize的区别介绍

    这篇文章主要给大家分享的是 Java中final,finally,finalize 到底有什么区别,文章围绕final,finally,finalize的相关资料展开详细内容,具有一定的参考的价值,需要的朋友可以参考一下
    2022-04-04
  • 解决mapstruct在eclipse生成不了mapper的实现类问题

    解决mapstruct在eclipse生成不了mapper的实现类问题

    这篇文章主要介绍了解决mapstruct在eclipse生成不了mapper的实现类问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 详解基于Spring Data的领域事件发布

    详解基于Spring Data的领域事件发布

    这篇文章主要介绍了详解基于Spring Data的领域事件发布,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04

最新评论