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没有生效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mybatis单个参数的if判断报异常There is no getter for property named ''xxx'' in ''class java.lang.Integer''的解决方案

    Mybatis单个参数的if判断报异常There is no getter for property named ''x

    今天小编就为大家分享一篇关于Mybatis单个参数的if判断报异常There is no getter for property named 'xxx' in 'class java.lang.Integer'的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Spring Boot各类变量的使用小结

    Spring Boot各类变量的使用小结

    这篇文章主要介绍了Spring Boot各类变量的使用小结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • Java实战之多线程模拟站点售票

    Java实战之多线程模拟站点售票

    今天带大家来练习Java实战,文中多线程模拟站点售票这个问题作了详细的介绍,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • SWT(JFace)体验之Slider,Scale

    SWT(JFace)体验之Slider,Scale

    SWT(JFace)体验之Slider,Scale实现代码。
    2009-06-06
  • 详解基于Spring Boot与Spring Data JPA的多数据源配置

    详解基于Spring Boot与Spring Data JPA的多数据源配置

    本篇文章主要介绍了详解基于Spring Boot与Spring Data JPA的多数据源配置,非常具有实用价值,需要的朋友可以参考下
    2017-05-05
  • Java排序的那些事之sort方法的使用详解

    Java排序的那些事之sort方法的使用详解

    sort方法用于对数组的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。默认排序顺序为按字母升序,当数字是按字母顺序排列时"40"将排在"5"前面。使用数字排序,你必须通过一个函数作为参数来调用。这些说起来可能很难理解,你可以通过本篇文章进一步了解它
    2021-09-09
  • SpringBoot整合Dozer映射框架流程详解

    SpringBoot整合Dozer映射框架流程详解

    dozer是用来两个对象之间属性转换的工具,有了这个工具之后,我们将一个对象的所有属性值转给另一个对象时,就不需要再去写重复的set和get方法了,下面介绍下SpringBoot中Dozer的使用,感兴趣的朋友一起看看吧
    2022-07-07
  • java解决雪花ID在前端精度丢失问题

    java解决雪花ID在前端精度丢失问题

    雪花算法生成的64位Long类型ID在传递到前端时可能会因JavaScript的精度限制导致精度丢失,这篇文章主要介绍了java解决雪花ID在前端精度丢失问题的相关资料,需要的朋友可以参考下
    2024-11-11
  • mybatis向数据库里插入记录后自动返回记录ID问题

    mybatis向数据库里插入记录后自动返回记录ID问题

    本文介绍了在接手项目时,对一个业务处理逻辑进行重构和性能优化的经历,作者提到,性能问题可能是导致bug的一个重要原因,作者提到,在以前的.NET项目中,插入记录后系统会自动刷新实体类,为其中的主键ID赋值,而SpringBoot项目mybatis也可以通过指定主键来优化代码
    2025-01-01
  • Java文件(io)编程_文件字节流的使用方法

    Java文件(io)编程_文件字节流的使用方法

    下面小编就为大家带来一篇Java文件(io)编程_文件字节流的使用方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08

最新评论