[SpringBoot2]@MatrixVariable&UrlPathHelper

Posted 唐火

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[SpringBoot2]@MatrixVariable&UrlPathHelper相关的知识,希望对你有一定的参考价值。

  • 场景

页面开发,cookie禁用了,session里面的内容怎么使用:

session.set(a,b)—>jessionid—>cookie—>每次发请求携带

此时cookie禁用了,我们要怎么得到session里面的内容呢?

url重写:/abc;jsessionid=xxxx 把cookie的值使用矩阵变量的方式进行传递

  • 1、语法: 请求路径:/cars/sell;low=34;brand=byd,audi,yd
  • 2、SpringBoot默认是禁用了矩阵变量的功能
    • 手动开启:原理。对于路径的处理。UrlPathHelper进行解析。removeSemicolonContent(移除分号内容)支持矩阵变量的
  • 3、矩阵变量必须有url路径变量才能被解析

使用矩阵变量前要配置!

下面是两种配置方式:

@Configuration(proxyBeanMethods = false)
public class WebConfig implements WebMvcConfigurer 



    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) 

        UrlPathHelper urlPathHelper = new UrlPathHelper();

        //设置为不移除分号后面的内容。矩阵变量功能才可以生效
        urlPathHelper.setRemoveSemicolonContent(false);

        configurer.setUrlPathHelper(urlPathHelper);

    
 
@Configuration(proxyBeanMethods = false)
public class WebConfig implements WebMvcConfigurer 




    @Bean
    public WebMvcConfigurer webMvcConfigurer()
    
        return new WebMvcConfigurer() 
            @Override
            public void configurePathMatch(PathMatchConfigurer configurer) 

                UrlPathHelper urlPathHelper = new UrlPathHelper();
//设置为不移除分号后面的内容。矩阵变量功能才可以生效
                urlPathHelper.setRemoveSemicolonContent(false);
                configurer.setUrlPathHelper(urlPathHelper);

            
        ;
    
 
    //1、语法: 请求路径:/cars/sell;low=34;brand=byd,audi,yd
    //2、SpringBoot默认是禁用了矩阵变量的功能
    //      手动开启:原理。对于路径的处理。UrlPathHelper进行解析。
    //              removeSemicolonContent(移除分号内容)支持矩阵变量的
    //3、矩阵变量必须有url路径变量才能被解析
    @GetMapping("/cars/path")
    public Map carsSell(@MatrixVariable("low") Integer low,
                        @MatrixVariable("brand") List<String> brand,
                        @PathVariable("path") String path)
        Map<String,Object> map = new HashMap<>();

        map.put("low",low);
        map.put("brand",brand);
        map.put("path",path);
        return map;
    

 // /boss/1;age=20/2;age=10

    @GetMapping("/boss/bossId/empId")
    public Map boss(@MatrixVariable(value = "age",pathVar = "bossId") Integer bossAge,
                    @MatrixVariable(value = "age",pathVar = "empId") Integer empAge)
        Map<String,Object> map = new HashMap<>();

        map.put("bossAge",bossAge);
        map.put("empAge",empAge);
        return map;

    

以上是关于[SpringBoot2]@MatrixVariable&UrlPathHelper的主要内容,如果未能解决你的问题,请参考以下文章

小D课堂 - 零基础入门SpringBoot2.X到实战_汇总

springboot2.3.7升级到springboot2.7.2

2019刘老师教你用springboot2.x开发整合微信支付的线上教育平台带源码送springboot2.x零基础入门到高级实战教程

SpringBoot2.0应用:SpringBoot2.0整合RabbitMQ

零基础快速入门SpringBoot2.0

SpringBoot2核心技术(基础入门)- 02SpringBoot2入门安装配置