一张思维导图带你学会SpringBoot自定义Filter

简介: 一张思维导图带你学会SpringBoot自定义Filter

思维导图



🌟前言


在开发中,都离不开自定义过滤器的使用。本文的主要内容是通过SpringBoot实现自定义过滤器。


🌟知识准备


过滤器:类似于人们进入景点或者电影院的检票厅。

种类:如下图所示,位于org.springframework.boot.web.servlet.filter中。


优先级:属性值越低则代表属性值越高。可以查看思维导图。

方式一:使用FilterRegistrationBean配置类进行注册。类似于自定义拦截器时的注册拦截器,这里是注册过滤器。

方式二:使用Server3.0规范中的@WebFilter注解进行实现。


🌟实现方式


方式一


自定义过滤类:其中的doFilter方法为编写过滤逻辑的方法。比如说在登录时过滤掉没有token的用户。

思路

  • 实现Filter类。位于java.servletx.filter包的
  • 定义过滤逻辑。


public class TokenFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        //初始化
        Filter.super.init(filterConfig);
    }
    @Override
    public void doFilter(HttpServletRequest servletRequest, HttpServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //拦截逻辑
        String token = servletRequest.getHeader("Authorization");
            if (token == null || token.isEmpty()) {
                throw new MyException("登录失败");
            }
        filterChain.doFilter(servletRequest,servletResponse);
    }
    @Override
    public void destroy() {
        //销毁
        Filter.super.destroy();
    }
}


定义过滤注册器:对自定义的TokenFilter进行过滤注册。

思路

  • 使用@Configuration+@Bean注解配置Bean管理。
  • 使用TokenFilter类型的FilterRegistrationBean。
  • 设置过滤路径。
@Configuration
public class FilterConfig {
    @Bean
    public FilterRegistrationBean<TokenFilter> filterRegistrationBean() {
        FilterRegistrationBean<TokenFilter> registrationBean = new FilterRegistrationBean<>();
        registrationBean.setFilter(new TokenFilter());
        registrationBean.addUrlPatterns("/api/*");
        return registrationBean;
    }
}


方式二


启动类:添加@ServletComponentScan注解。


@SpringBootApplication
@ServletComponentScan
public class TestApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class);
    }
}


自定义过滤器类:添加@WebFilter注解并实现Filter接口。


@WebFilter注解相关参数


参数名 类型 默认值 描述
filterName String “” 过滤器名称
value String[] {} 过滤器的URL模式
urlPatterns String[] {} 过滤器的URL模式
servletNames String[] {} 过滤器的Servlet名称
dispatcherTypes DispatcherType[] {DispatcherType.REQUEST} 过滤器的调度类型
asyncSupported boolean false 是否支持异步调度
initParams WebInitParam[] {} 过滤器的初始化参数


@WebFilter(urlPatterns = "/api/*")
public class TokenFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        //初始化
        Filter.super.init(filterConfig);
    }
    @Override
    public void doFilter(HttpServletRequest servletRequest, HttpServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //拦截逻辑
        String token = servletRequest.getHeader("Authorization");
            if (token == null || token.isEmpty()) {
                throw new MyException("登录失败");
            }
        filterChain.doFilter(servletRequest,servletResponse);
    }
    @Override
    public void destroy() {
        //销毁
        Filter.super.destroy();
    }
}


🌟写在最后


有关于SpringBoot自定义过滤器的内容到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。



目录
相关文章
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
1月前
|
并行计算 Java 数据处理
SpringBoot高级并发实践:自定义线程池与@Async异步调用深度解析
SpringBoot高级并发实践:自定义线程池与@Async异步调用深度解析
165 0
|
1月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
168 2
|
27天前
|
Java API Spring
在 Spring 配置文件中配置 Filter 的步骤
【10月更文挑战第21天】在 Spring 配置文件中配置 Filter 是实现请求过滤的重要手段。通过合理的配置,可以灵活地对请求进行处理,满足各种应用需求。还可以根据具体的项目要求和实际情况,进一步深入研究和优化 Filter 的配置,以提高应用的性能和安全性。
|
27天前
|
搜索推荐 Java Spring
Spring Filter深度解析
【10月更文挑战第21天】Spring Filter 是 Spring 框架中非常重要的一部分,它为请求处理提供了灵活的控制和扩展机制。通过合理配置和使用 Filter,可以实现各种个性化的功能,提升应用的安全性、可靠性和性能。还可以结合具体的代码示例和实际应用案例,进一步深入探讨 Spring Filter 的具体应用和优化技巧,使对它的理解更加全面和深入。
|
2月前
|
Java Spring
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
本文介绍了Spring Boot中静态资源的访问位置、如何进行静态资源访问测试、自定义静态资源路径和静态资源请求映射,以及如何处理自定义静态资源映射对index页面访问的影响。提供了两种解决方案:取消自定义静态资源映射或编写Controller来截获index.html的请求并重定向。
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
|
1月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
64 2
|
1月前
|
前端开发 Java 数据库
springBoot:template engine&自定义一个mvc&后端给前端传数据&增删改查 (三)
本文介绍了如何自定义一个 MVC 框架,包括后端向前端传递数据、前后端代理配置、实现增删改查功能以及分页查询。详细展示了代码示例,从配置文件到控制器、服务层和数据访问层的实现,帮助开发者快速理解和应用。
|
3月前
|
Java 数据安全/隐私保护 Spring
揭秘Spring Boot自定义注解的魔法:三个实用场景让你的代码更加优雅高效
揭秘Spring Boot自定义注解的魔法:三个实用场景让你的代码更加优雅高效
|
3月前
|
监控 安全 Java
【开发者必备】Spring Boot中自定义注解与处理器的神奇魔力:一键解锁代码新高度!
【8月更文挑战第29天】本文介绍如何在Spring Boot中利用自定义注解与处理器增强应用功能。通过定义如`@CustomProcessor`注解并结合`BeanPostProcessor`实现特定逻辑处理,如业务逻辑封装、配置管理及元数据分析等,从而提升代码整洁度与可维护性。文章详细展示了从注解定义、处理器编写到实际应用的具体步骤,并提供了实战案例,帮助开发者更好地理解和运用这一强大特性,以实现代码的高效组织与优化。
189 0

热门文章

最新文章