随笔 - 10, 文章 - 5, 评论 - 0, 阅读 - 7299
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SpringBoot中请求参数 @MatrixVariable 矩阵变量

Posted on   zachry-r  阅读(276)  评论(0编辑  收藏  举报

一、矩阵变量请求格式

  

/users;id=1,uname=jack

 

二、SpringBoot开启矩阵请求

  1. 首先查看springboot源码关于矩阵部分的内容
    1.   在 WebMvcAutoConfiguration配置类中。
    2. 复制代码
      @Override
              public void configurePathMatch(PathMatchConfigurer configurer) {
                  if (this.mvcProperties.getPathmatch()
                          .getMatchingStrategy() == WebMvcProperties.MatchingStrategy.PATH_PATTERN_PARSER) {
                      configurer.setPatternParser(pathPatternParser);
                  }
                  configurer.setUseSuffixPatternMatch(this.mvcProperties.getPathmatch().isUseSuffixPattern());
                  configurer.setUseRegisteredSuffixPatternMatch(
                          this.mvcProperties.getPathmatch().isUseRegisteredSuffixPattern());
                  this.dispatcherServletPath.ifAvailable((dispatcherPath) -> {
                      String servletUrlMapping = dispatcherPath.getServletUrlMapping();
                      if (servletUrlMapping.equals("/") && singleDispatcherServlet()) {
                          UrlPathHelper urlPathHelper = new UrlPathHelper();
                          urlPathHelper.setAlwaysUseFullPath(true);
                          configurer.setUrlPathHelper(urlPathHelper);
                      }
                  });
              }
      复制代码

       

    3. 在此方法中的 UrlPathHelper,中对矩阵变量做了截取,代码如下:
      1.   往上查看变量removeSemicolonContent,默认定义为true
      2. /**
         * Set if ";" (semicolon) content should be stripped from the request URI.
         * <p>Default is "true".
         */
        public void setRemoveSemicolonContent(boolean removeSemicolonContent) {
           checkReadOnly();
           this.removeSemicolonContent = removeSemicolonContent;
        }
        
  2. 开启矩阵变量
        1. 第一种方式。创建配置类,实现WebMvcConfigurer接口。重写 configurePathMatch() 方法

    @Override
        public void configurePathMatch(PathMatchConfigurer configurer) {
            UrlPathHelper urlPathHelper = new UrlPathHelper();
            // 将默认值改为false
            urlPathHelper.setRemoveSemicolonContent(false);
            configurer.setUrlPathHelper(urlPathHelper);
        }

    1. 第二种方式,在SpringBoot添加容器
    2. @Bean
      public WebMvcConfigurer webMvcConfigurer(){
         return new WebMvcConfigurer() {
             @Override
             public void configurePathMatch(PathMatchConfigurer configurer) {
                 UrlPathHelper urlPathHelper = new UrlPathHelper();
                 urlPathHelper.setRemoveSemicolonContent(false);
                 configurer.setUrlPathHelper(urlPathHelper);
             }
         };
      }
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示