springmvc中WebMvcConfigurationSupport中addInterceptor使用详解及方法详解

这篇具有很好参考价值的文章主要介绍了springmvc中WebMvcConfigurationSupport中addInterceptor使用详解及方法详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. addInterceptor简介

在Spring MVC中,WebMvcConfigurationSupport是一个类,可以通过继承它来进行自定义的MVC配置。在这个类中,可以使用addInterceptor方法来添加拦截器到请求处理链中。

下面是关于addInterceptor方法的说明:

java复制代码protected void addInterceptor(InterceptorRegistry registry)
  • addInterceptor方法是WebMvcConfigurationSupport中的方法之一,用于添加拦截器。
  • 在子类中重写这个方法,可以向注册表(InterceptorRegistry)中添加拦截器。
  • 通过注册表,可以指定拦截器要拦截的路径、优先级等信息。

总之,addInterceptors(InterceptorRegistry registry):用于注册拦截器。我们可以通过重写这个方法,将自定义的拦截器添加到 registry 中。

2. InterceptorRegistry 方法详解

2.1 addPathPatterns(String… patterns)

通过这个方法,我们可以指定要拦截的请求路径模式,使拦截器只对符合指定路径模式的请求进行拦截。

以下是关于 addPathPatterns 方法的说明:

  • addPathPatterns 方法接受一个或多个字符串参数作为路径模式。
  • 路径模式可以使用通配符来匹配多个路径,例如 "/*" 表示根路径和其子路径都会被拦截。
  • 该方法可以在添加拦截器时使用,用于指定需要被拦截器处理的路径。
  • 拦截的路径模式将被应用于已经设置的拦截路径上。
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new CustomInterceptor())
                .addPathPatterns("/api/**"); // 拦截 /api 下的所有请求
    }

在上面的示例中,首先通过 addInterceptor 方法添加了一个自定义拦截器 CustomInterceptor,然后使用 addPathPatterns 方法指定了要拦截的路径模式 /api/**

这样配置之后,拦截器将会对所有以 /api/ 开头的请求进行拦截处理。

通过使用 addPathPatterns 方法,我们可以更加细粒度地指定拦截器的应用范围,根据具体需求选择性地拦截某些路径。如果不调用 addPathPatterns 方法,则拦截器将对所有请求生效。

2.2 addPathPatterns(List patterns)

通过这个方法,我们可以指定要拦截的请求路径模式列表,使拦截器只对符合指定路径模式的请求进行拦截。

以下是关于 addPathPatterns 方法的说明:

  • addPathPatterns 方法接受一个字符串列表作为路径模式。

  • 路径模式可以使用通配符来匹配多个路径,例如 "/*" 表示根路径和其子路径都会被拦截。

  • 该方法可以在添加拦截器时使用,用于指定需要被拦截器处理的路径。

  • 拦截的路径模式将被应用于已经设置的拦截路径上。

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new CustomInterceptor())
                .addPathPatterns(Arrays.asList("/api/**", "/admin/**")); // 拦截 /api 和 /admin 下的所有请求
    }

在上面的示例中,首先通过 addInterceptor 方法添加了一个自定义拦截器 CustomInterceptor,然后使用 addPathPatterns 方法传入一个路径模式列表,包含了要拦截的路径模式 "/api/**""/admin/**"

这样配置之后,拦截器将会对所有以 /api//admin/ 开头的请求进行拦截处理。

通过使用 addPathPatterns 方法,我们可以更加灵活地指定拦截器的应用范围,根据具体需求选择性地拦截某些路径。如果不调用 addPathPatterns 方法,则拦截器将对所有请求生效。

2.3 excludePathPatterns(String… patterns)

通过这个方法,我们可以指定要排除(不拦截)的请求路径模式,使拦截器不对这些路径的请求进行拦截。

以下是关于 excludePathPatterns 方法的说明:

  • excludePathPatterns 方法接受一个或多个字符串参数作为路径模式。
  • 路径模式可以使用通配符来匹配多个路径,例如 "/*" 表示根路径和其子路径都会被排除。
  • 该方法可以在添加拦截器时使用,用于指定哪些路径不需要被拦截器处理。
  • 排除的路径模式将被应用于已经设置的拦截路径上。
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new CustomInterceptor())
                .addPathPatterns("/api/**") // 拦截 /api 下的所有请求
                .excludePathPatterns("/api/public/**"); // 排除 /api/public 下的请求
    }

在上面的示例中,首先通过 addInterceptor 方法添加了一个自定义拦截器 CustomInterceptor,然后使用 addPathPatterns 方法指定了要拦截的路径模式 /api/**,接着使用 excludePathPatterns 方法指定了要排除的路径模式 /api/public/**

这样配置之后,拦截器将会对所有以 /api/ 开头的请求进行拦截,但是会排除以 /api/public/ 开头的请求,即不会对这些请求进行拦截处理。

通过使用 excludePathPatterns 方法,我们可以更加细粒度地控制拦截器的应用范围,根据具体需求选择性地排除某些路径。

2.4 excludePathPatterns(List patterns)

通过这个方法,我们可以指定要排除(不拦截)的请求路径模式列表,使拦截器不对这些路径的请求进行拦截。

以下是关于 excludePathPatterns 方法的说明:

  • excludePathPatterns 方法接受一个字符串列表作为路径模式。
  • 路径模式可以使用通配符来匹配多个路径,例如 "/*" 表示根路径和其子路径都会被排除。
  • 该方法可以在添加拦截器时使用,用于指定哪些路径不需要被拦截器处理。
  • 排除的路径模式将被应用于已经设置的拦截路径上。
@Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new CustomInterceptor())
                .addPathPatterns("/api/**") // 拦截 /api 下的所有请求
                .excludePathPatterns(Arrays.asList("/api/public/**", "/api/open/**")); // 排除 /api/public 和 /api/open 下的请求
    }

在上面的示例中,首先通过 addInterceptor 方法添加了一个自定义拦截器 CustomInterceptor,然后使用 addPathPatterns 方法指定了要拦截的路径模式 /api/**,接着使用 excludePathPatterns 方法传入一个排除的路径模式列表,包含了要排除的路径模式 "/api/public/**""/api/open/**"

这样配置之后,拦截器将会对所有以 /api/ 开头的请求进行拦截,但是会排除以 /api/public//api/open/ 开头的请求,即不会对这些请求进行拦截处理。

通过使用 excludePathPatterns 方法,我们可以更加细粒度地控制拦截器的应用范围,根据具体需求选择性地排除某些路径。如果不调用 excludePathPatterns 方法,则拦截器将对所有符合拦截路径模式的请求生效。

2.5 pathMatcher(PathMatcher pathMatcher)

该方法用于设置拦截器注册表使用的路径匹配器(PathMatcher)。

以下是关于 pathMatcher(PathMatcher pathMatcher) 方法的说明:

  • pathMatcher(PathMatcher pathMatcher) 方法接受一个 PathMatcher 对象作为参数,用于设置拦截器注册表使用的路径匹配器。

  • 路径匹配器(PathMatcher)用于判断请求路径是否与设置的路径模式匹配。

  • 默认情况下,Spring MVC 使用的是 Ant 风格的路径匹配器 AntPathMatcher

  • 可以通过自定义实现 PathMatcher 接口来创建自己的路径匹配器,例如使用正则表达式等。

  • 通过设置路径匹配器,可以控制拦截器对请求路径的匹配方式。

        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(new CustomInterceptor())
                    .addPathPatterns("/api/**")
                    .excludePathPatterns("/api/public/**")
                    .pathMatcher(new RegexPathMatcher()); // 设置自定义的路径匹配器或者使用AntPathMatcher
        }
    

    在上述示例中,首先通过 addInterceptor 方法添加了一个自定义拦截器 CustomInterceptor,然后使用 addPathPatterns 方法指定了要拦截的路径模式 /api/**,使用 excludePathPatterns 方法指定了要排除的路径模式 /api/public/**,最后使用 pathMatcher 方法传入了一个自定义的路径匹配器 RegexPathMatcher

    通过设置自定义的路径匹配器,我们可以根据具体需求更灵活地控制拦截器对请求路径的匹配方式。

2.6 order(int order)

它用于设置拦截器的执行顺序。参数是一个整数值,表示侦听器的优先级或执行顺序。order(int order)``InterceptorRegistry``order

在 Spring 中,拦截器根据其分配的订单值以特定顺序执行。首先执行具有较低阶值的拦截器,然后执行具有较高阶值的拦截器。这允许您控制将侦听器应用于请求的顺序。

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        MyInterceptor myInterceptor = new MyInterceptor();
        registry.addInterceptor(myInterceptor)
                .addPathPatterns("/api/**")
                .order(1); // Set the order to 1
    }

在此示例中,对于与“/api/**”模式匹配的请求,将以 1 的顺序执行。如果您有多个拦截器,则可以分配不同的订单值来控制其执行顺序。MyInterceptor

请务必注意,如果没有为拦截器显式设置顺序,则会为其分配默认订单值 ,这意味着它将在拦截器链中最后执行。Ordered.LOWEST_PRECEDENCE文章来源地址https://www.toymoban.com/news/detail-841896.html

到了这里,关于springmvc中WebMvcConfigurationSupport中addInterceptor使用详解及方法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 多个配置WebMvcConfigurationSupport失效问题

    最近在项目中用类继承WebMvcConfigurationSupport实现拦截器 同时呢,在我曾经写过的一个依赖包里(其他包),配置了一个消息转换器并且在项目中引入 在启动类扫描了这另一个包里的WebMvcConfigurationSupport配置依赖。 希望的是:拦截器+消息转变换器全都生效,但是生效的只有拦截器

    2024年02月13日
    浏览(35)
  • MVC配置类之WebMvcConfigurationSupport

    spring         在spring中配置webMvc有两种方法,一种是继承WebMvcConfigurationSupport,另一种方式就是继承WebMvcConfigurer,但是要多加一个@EnableWebMvc注解。 作用:          WebMvcConfigurer是一个接口,用于配置全局的SpringMVC的相关属性,采用JAVABEAN的方式来代替传统的XML配置文件,

    2024年02月15日
    浏览(41)
  • WebMvcConfigurer和WebMvcConfigurationSupport(MVC配置)

    WebMvcConfigurer是接口,用于配置全局的SpringMVC的相关属性,采用JAVABean的方式来代替传统的XML配置文件,提供了跨域设置、静态资源处理器、类型转化器、自定义拦截器、页面跳转等能力。 WebMvcConfigurationSupport是webmvc的配置类,如果在springboot项目中,有配置类继承了WebMvcConfi

    2024年01月22日
    浏览(31)
  • 【SpringMVC篇】详解SpringMVC入门案例

    🎊专栏【SpringMVC】 🍔喜欢的诗句:天行健,君子以自强不息。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 Spring MVC是Spring框架中的一员,是目前最主流的Java EE Web框架之一。在企业级开发中,Spring MVC有非常广泛的应用。 Spring MVC基于MVC设计模式,将web层进行职

    2024年02月08日
    浏览(34)
  • SpringMvc拦截器和手写模拟SpringMvc工作流程源码详解

    目录 1. SpringMvc简介 1.1 什么是MVC 1.2 什么是SpringMvc 1.3 SpringMvc 能干什么 1.4 SpringMvc 工作流程 2. SpringMvc拦截器和过滤器 2.1 拦截器 2.1.1 拦截器作用 2.1.2 拦截器和过滤器的区别 2.1.3 拦截器方法说明 2.1.4 多个拦截器执行顺序 2.1.5 自定义拦截器 2.2 过滤器(附加) 3. 手写模拟Spri

    2024年02月09日
    浏览(47)
  • springboot 项目访问静态资源遇到的问题,WebMvcConfigurer和WebMvcConfigurationSupport

    之前发过通过继承WebMvcConfigurationSupport来访问静态资源的文章——img标签访问静态资源,代码如下 这个方法是可行的,但会带来一个小问题。 像这些本身就要访问静态资源的,它们一般是实现了WebMvcConfigurer,而不是继承WebMvcConfigurationSupport。 当我们用上面代码中的方法访问

    2024年01月21日
    浏览(58)
  • SpringMVC实现原理及详解

    在介绍什么是 SpringMVC 之前,我们先看看 Spring 的基本架构。如下图: 我们可以看到,在 Spring 的基本架构中,红色圈起来的 Spring Web MVC ,也就是本系列的主角 SpringMVC,它是属于Spring基本架构里面的一个组成部分,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面,所

    2024年01月19日
    浏览(36)
  • 【SpringMVC】@RequestMapping注解(详解)

    SpringMVC汇总: SpringMVC笔记汇总 从注解名称上我们可以看到, @RequestMapping 注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。 SpringMVC 接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求。 @RequestMapping 标识一个类:设置映射请

    2024年02月10日
    浏览(39)
  • 详解 SpringMVC 的 HttpMessageConverter

    HttpMessageConverter是Spring Framework中的一个接口,用于处理HTTP请求和响应的消息转换。 在Spring MVC中,HttpMessageConverter主要用于将HTTP请求的输入内容转换为指定的Java对象,以及将Java对象转换为HTTP响应的输出内容。它负责处理请求和响应的数据格式转换,例如将请求的JSON或XML数据

    2024年02月05日
    浏览(25)
  • SpringMVC - 详解RESTful

    REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提到:“我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络

    2024年02月08日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包