SpringBoot中Filter没有生效原因排查

这篇具有很好参考价值的文章主要介绍了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注解自动注册,无需其他代码。文章来源地址https://www.toymoban.com/news/detail-861012.html


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没有生效原因排查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot之过滤器Filter详解及登录校验

    目录 1 快速入门 2.Filter详解 2.1 执行流程 2.2 拦截路径 2.3 过滤器链 3.登录校验-Filter 3.1 分析 3.2 具体流程 3.3 代码实现 什么是Filter? Filter表示过滤器,是 JavaWeb三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能 使用了过滤器

    2024年02月04日
    浏览(44)
  • SpringBoot注册Servlet、Filter、Listener、Interceptor四大组件

    SpringBoot版本:2.2.5 GA 版 GA=General Availability,字面意思是 一般或正常可用性。 代表的是官方正式发布的版本,推荐可广泛使用的版本,国外有的软件用GA来表示RELEASE版本。 RELEASE表示正式发布版 有两种使用方式 1.基于配置类方式使用Servlet 2.基于纯注解方式使用Servlet 自定义一

    2024年01月22日
    浏览(48)
  • SpringBoot中Filter bean是怎么被添加到Servlet容器中的

    参考资料 对于Spring Boot的IOC容器——ServletWebServerApplicationContext,其中的Filter bean,每个Filter bean都会被独立的注册成为Servlet的Filter。大概的注册过程分成2步: IOC容器——ServletWebServerApplicationContext将Filter接口的实现类封装成FilterRegistrationBean,放到ServletContextInitializerBeans实例的

    2024年02月14日
    浏览(38)
  • ElasticSearch系列 - SpringBoot整合ES:查询条件 query 和过滤条件 filter 的区别

    01. Elasticsearch 查询条件和过滤条件的区别? Elasticsearch中的查询条件和过滤条件都是用于搜索和过滤文档的条件,但它们之间有一些区别。 查询条件是用于计算文档相关度得分的条件,它会将所有符合条件的文档按照相关度得分从高到低排序,并返回前N个文档。查询条件可以

    2024年02月14日
    浏览(61)
  • 【Spring】Springboot过滤器Filter和拦截器Inteceptor详解及使用场景

    Springboot过滤器Filter和拦截器Inteceptor详解及使用场景

    2024年02月13日
    浏览(44)
  • Springboot中yml文件不生效原因

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name \\\'ymlTestController\\\': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder \\\'obj[1]\\\' in value \\\"${obj[1]}\\\" 这个错误是由于在Spring框架中,无法解析占位符\\\'str\\\'导致的。请检查你的

    2024年02月02日
    浏览(28)
  • Spring的定时任务不生效、不触发,一些可能导致定时任务没有生效的原因,和具体的解决方法。Spring框架的定时任务不生效或者不触发的原因

    1. 未开启定时任务 : 原因 :未在Spring Boot应用主类上添加 @EnableScheduling 注解或未在XML配置文件中配置定时任务的启用。 解决方法 :确保在应用的配置类上添加 @EnableScheduling 注解,启用定时任务。 2. 定时任务方法的访问权限问题 : 原因 :定时任务的方法可能被设置为私有

    2024年02月03日
    浏览(57)
  • PHP伪协议filter详解,php://filter协议过滤器

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 php:// 用来访问输入和输出流(I/O streams)。 输入/输出流也就是 「数据流」

    2024年02月08日
    浏览(39)
  • SpringCloudAlibaba Gateway(二)详解-内置Predicate、Filter及自定义Predicate、Filter

    ​ Predicate(断言),用于进行判断,如果返回为真,才会路由到具体服务。SpirnngCloudGateway由路由断言工厂实现,直接配置即生效,当然也支持自定义路由断言工厂。 ​ SpringCloudGateway路由断言工厂实现有很多,可以帮助开发者完成不同的功能。 AfterRoutePredicateFactory :设定日期参

    2024年02月10日
    浏览(45)
  • Spring Boot 3.1.2版本使用javax.servlet.Filter时,发现Filter不起作用

    在学习Filter的过程中,我实现了Filter的init和destory方法以及doFilter方法后,运行SpringBoot程序发现,我的控制台中并没有输出ini和destory中的调试信息。 代码如下:  可以看到控制台中并没有输出initialize Filter和destory Filter等信息  利用postman发送http请求发现access Filter也没有输出

    2024年03月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包