springboot配置过滤器和多个拦截器、执行顺序(案例详解)

 更新时间:2023年10月31日 15:11:12   作者:学习至死qaq  
这篇文章主要介绍了springboot配置过滤器和多个拦截器、执行顺序,在文章开头给大家介绍了过滤器配置的两种方法,创建两个拦截器,重写方法结合实例代码给大家介绍的非常详细,需要的朋友可以参考下

过滤器配置的两种方法

注解配置

@WebFilter+包扫描@ServletComponentScan(“com.jl.springboottest”),
首先我们定义一个MyFilter 实现Filter接口。重写里面的三个方法

@Order(1)
@WebFilter(filterName = "myFilter1",urlPatterns = {"/hello/*"})
public class DemoFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("init");
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("come");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("out");
    }
    @Override
    public void destroy() {
        System.out.println("destroy");
    }
}

代码说明:

1.@WebFilter注解,filterName属性表示filter的名称,urlPatter表示要拦截的URL资源,可以是一个或者多个。用于将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。该注解具有下表给出的一些常用属性 ( 以下所有属性均为可选属性,但是 value、urlPatterns、servletNames 三者必需至少包含一个,且 value 和 urlPatterns 不能共存,如果同时指定,通常忽略 value 的取值 )

2.@Order(1)表示如果有多个拦截器的话就是设置这个拦截器的运行等级,数字越小,越先执行

3.init()方法只会执行一次,初始化过滤器。

4.doFilter()核心方法,配置过滤器的逻辑代码。

5.destroy()只会在项目停止或者是项目重新部署的时候才会执行。

配置完上面的之后我们还需要在启动类加上一个扫描包的注解,开启包扫描。@ServletComponentScan(“com.example.demofilter.filter”),当然你也可以不用写包的具体地址,不传参数,但是建议是传参数,并且这个采参数也可以传多个的。

以上就完成了一个Filter的基本配置,运行项目即可看到效果,还有一种非注解形式的配置方式。

在这里插入图片描述

在这里插入图片描述

java配置

我们可以通过自己定义一个java配置文件,将自定义的Filter 注册到到FilterRegistrationBean里面。

@Configuration
public class FilterConfig {
    @Bean
    public FilterRegistrationBean registFilter(){
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new MyFilter());
        registrationBean.addUrlPatterns("/*");
        registrationBean.setName("Filter1");
        registrationBean.setOrder(1);
        return registrationBean;
    }
}

这个配置和上面的注解配置类似。上面注解实现的原理也是这样的,虽然是两种不同的方法,但是是一样的原理。

在这里插入图片描述

在这里插入图片描述

拦截器配置

创建两个拦截器,重写方法

在这里插入图片描述

在这里插入图片描述

创建配置类,实现WebMvcConfigurer

在这里插入图片描述

order越小,越先执行,否则按照register配置的顺序执行

执行顺序

在这里插入图片描述

参考文档:

https://www.cnblogs.com/Timeouting-Study/p/16078773.html 

https://blog.csdn.net/K_520_W/article/details/124529633 

到此这篇关于springboot配置过滤器和多个拦截器、执行顺序的文章就介绍到这了,更多相关springboot过滤器和拦截器执行顺序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot 配置文件(application.yml、application-dev.yml、application-test.yml)

    Spring Boot 配置文件(application.yml、application-dev.y

    本文主要介绍了Spring Boot 配置文件,主要包含application.yml、application-dev.yml、application-test.yml,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • java发送http请求并获取状态码的简单实例

    java发送http请求并获取状态码的简单实例

    下面小编就为大家带来一篇java发送http请求并获取状态码的简单实例。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • Java  队列 Queue 用法实例详解

    Java 队列 Queue 用法实例详解

    本文实例讲述了Java内置队列类Queue用法,分享给大家供大家参考
    2017-04-04
  • Java多线程编程中使用Condition类操作锁的方法详解

    Java多线程编程中使用Condition类操作锁的方法详解

    Condition是java.util.concurrent.locks包下的类,提供了对线程锁的更精细的控制方法,下面我们就来看一下Java多线程编程中使用Condition类操作锁的方法详解
    2016-07-07
  • java 浅析代码块的由来及用法

    java 浅析代码块的由来及用法

    所谓代码块是指用"{}"括起来的一段代码,根据其位置和声明的不同,可以分为普通代码块、构造块、静态块、和同步代码块。如果在代码块前加上 synchronized关键字,则此代码块就成为同步代码块
    2021-10-10
  • mybatisplus中EntityWrapper的常用方法

    mybatisplus中EntityWrapper的常用方法

    这篇文章主要介绍了mybatisplus中EntityWrapper的常用方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • java 11新特性HttpClient主要组件及发送请求示例详解

    java 11新特性HttpClient主要组件及发送请求示例详解

    这篇文章主要为大家介绍了java 11新特性HttpClient主要组件及发送请求示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Java实现BASE64编码和解码的方法

    Java实现BASE64编码和解码的方法

    本篇文章主要介绍了Java实现BASE64编码和解码的方法,BASE64编码通常用于转换二进制数据为文本数据,有需要的可以了解一下。
    2016-11-11
  • SpringMVC的@InitBinder参数转换代码实例

    SpringMVC的@InitBinder参数转换代码实例

    这篇文章主要介绍了SpringMVC的@InitBinder参数转换代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • java 读取网页内容的实例详解

    java 读取网页内容的实例详解

    这篇文章主要介绍了java 读取网页内容的实例详解的相关资料,希望通过本文能帮助到大家,让大家学习理解这部分内容,需要的朋友可以参考下
    2017-09-09

最新评论