zoukankan      html  css  js  c++  java
  • springboot开启矩阵传参MatrixVariable

    
    
    /**
    *   根据 URI 规范 RFC 3986 中 URL 的定义,路径片段中可以可以包含键值对。
    * 规范中没对对应的术语。一般 “URL 路径参数” 可以被应用,尽管更加独特的 “矩阵 URI” 也经常被使用并且相当有名。
    * 在 Spring MVC 它被成为矩阵变量
    * 矩阵变量可以出现在任何路径片段中,每一个矩阵变量都用分号(;)隔开。
    * 比如 “/cars;color=red;year=2012”。
    * 多个值可以用逗号隔开,比如 “color=red,green,blue”,或者分开写 “color=red;color=green;color=blue”。
    *
    *     如果你希望一个 URL 包含矩阵变量,那么请求映射模式必须用 URI 模板来表示这些矩阵变量。
    * 这样的话,不管矩阵变量顺序如何,都能够保证请求可以正确的匹配。
    * Springboot 默认是无法使用矩阵变量绑定参数的。需要覆盖WebMvcConfigurer中的configurePathMatch方法。
    */
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
    UrlPathHelper urlPathHelper=new UrlPathHelper();
    urlPathHelper.setRemoveSemicolonContent(false);
    configurer.setUrlPathHelper(urlPathHelper);
    }
    }





    /**
    * Spring也支持URL
    * 中的矩阵变量,所谓矩阵变量,就是出现在路径片段中,通过符号“;”
    * 分割的多个变量,比如/user/id=123 ;status= l/update.json
    */
    @GetMapping(value = "/owners/{ownerId}/pets/{petId}")
    public void ju(@PathVariable String ownerId,
    @PathVariable String petId,@MatrixVariable(value="q", pathVar="ownerId") String q1,
    @MatrixVariable(value="q", pathVar="petId") String q2) {
    System.out.println("id:"+q1+":"+"df:"+q2);
    System.out.println("ownerId:"+ownerId+":"+"petId:"+petId);
    System.out.println("123456789");
    }




    //            /s1/1;a=1/s2/2;b=2/s3/3;c=3
    // (1). pathVar = "s1" ,意味着处理范围为: 1;a=1
    // (2). value = "a", 指定pathVar里的 变量a。
    // (3). required = false , url可以没有这个变量a,c默认是true。
    默认情况下即为true情况下缺少变量会抛异常
    异常:{
    {
      "timestamp": "2020-06-17T02:31:29.760+0000",
      "status": 404,
      "error": "Not Found",
      "message": "No message available",
      "path": "/owners//owners/2;qu003d1/pets/3"
    }

    }
    //预测 s1,s2,s3一次为1,2,3
    //a为1 b,c为null

    @GetMapping(value ="/s1/{s1}/s2/{s2}/s3/{s3}")
    public void zhen(@PathVariable String s1,
    @PathVariable String s2,
    @PathVariable String s3,
    @MatrixVariable(value="a", pathVar="s1") String a,
    @MatrixVariable(value="b", pathVar="s2",required =false) String b,
    @MatrixVariable(value="c", pathVar="s3",required =false) String c){
    System.out.println("s1=====》"+s1);
    System.out.println("s1=====》"+s2);
    System.out.println("s1=====》"+s3);
    System.out.println("a======》"+a);
    System.out.println("b======》"+b);
    System.out.println("c======》"+c);

    }
    一点点学习,一丝丝进步。不懈怠,才不会被时代淘汰
  • 相关阅读:
    转载:CODE CSDN Git 配制方法介绍
    版本管理之Git(二):Win7上Git安装及简单配置过程
    Html_color code表示
    Android 自动化测试—robotium(十一) robotium实现微博绑定
    转载:Android自动化测试- 自动获取短信验证码
    Android 自动化测试—robotium(九) Junit_report测试报告重定向输出到终端SDCard
    每日一问:面试结束时面试官问"你有什么问题需要问我呢",该如何回答?
    常见的几个Python面试题
    使用python解析Json字符串-获取Json字符串关键字
    Android测试之 APK重签名方法
  • 原文地址:https://www.cnblogs.com/wangbiaohistory/p/13150933.html
Copyright © 2011-2022 走看看