String MVC学习@MatrixVariable

简介:

学前须知

这是关于String MVC框架的扫描注释操作部分,感觉有点难以理解,可以先学习此框架的入门知识。

迈入正题

@MatrixVariable的使用简单来说就是获取-路径中的变量和值,也就是通过路径传递参数。

如下:

//在某路径名中有如下这些内容:

/cars;color=red;year=2020        --两个不同的变量用“;”分隔开
/cars;color=red,green,blue        --同一个变量的多个数值用“,”分隔开
/cars;color=red;color=green;color=blue    --也可以重复使用变量名

获取路径中参数的方式:

使用@MatrixVariable注释类进行获取。

需要配合使用的注释类:
1、@RequestMapping:定义路径
2、@PathVariable: 获取路径中“{ }”内变量的内容。

注意

使用@MatrixVariable前需要添加mvc配置,不然无法使用。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <mvc:annotation-driven enable-matrix-variables="true"/>

</beans>

主要就是添加上 语句

mvc命名空间的属性知识查看我的String MVC mvc命名空间属性总结

开始获取

简单使用方式:

@RequestMapping(path = "/Demo2/{id}",method = RequestMethod.GET)
    public String test1(@PathVariable String id,@MatrixVariable String color, @MatrixVariable int year){
        System.out.println("id="+id+",color="+ color+",year="+year);
        return "success";
    }
<form action="/Demo2/66;color=red;year=2020" method="get">
     <input type="submit" value="提交">
</form>

在页面上点击提交之后结果:

浏览器显示地址样式:
/Demo2/66;color=red;year=2020?
后台控制器显示结果:
id=66,color=red,year=2020

多种使用方式:

/*获取单个参数
    * 请求路径内容:/Demo2/66;color=red;year=2020 */
    @RequestMapping(path = "/Demo2/{id}",method = RequestMethod.GET)
    public String test1(@PathVariable String id,@MatrixVariable String color, @MatrixVariable int year){
        System.out.println("id="+id+",color="+ color+",year="+year);
        return "success";
    }

    /*获取不同路径段中的变量
    * 请求路径内容:/Demo2/66;q=45/pets/77;q=34*/
    @RequestMapping(path = "/Demo2/{id1}/pets/{id2}" ,method = RequestMethod.GET)
    public String test2(@MatrixVariable(name = "q",pathVar = "id1") int q1,
                        @MatrixVariable(name = "q",pathVar = "id2") int q2){
        System.out.println("q1="+q1+",q2="+q2);
        return "success";
    }

    /*设置默认值,请求段可以不需要设置参数
    * 请求路径内容:/Demo2/pets/66*/
    @RequestMapping(path = "/Demo2/pets/{id}",method = RequestMethod.GET)
    public String test3(@MatrixVariable(required = false,defaultValue = "1")int q){
        System.out.println("q="+q);
        return "success";
    }

    /*路径中的所有变量都可以被Map获得
    * 请求路径内容:/Demo2/66;q=45;s=54/pet/77;q=23;t=95*/
    @RequestMapping(path = "/Demo2/{id1}/pet/{id2}",method = RequestMethod.GET)
    public String test4(@MatrixVariable Map<String,String> map,
                        @MatrixVariable(pathVar = "id2") Map<String,String> mapid2){
        System.out.print("map="+map.toString()+",mapid2="+mapid2.toString());
        return "success";
    }

对应表单:

<form action="/Demo2/66;color=red;year=2020" method="get">
        <input type="submit" value="提交">
    </form>
    <form action="/Demo2/66;q=45/pets/77;q=34" method="get">
        <input type="submit" value="提交">
    </form>
    <form action="/Demo2/pets/66" method="get">
        <input type="submit" value="提交">
    </form>
    <form action="/Demo2/66;q=45;s=54/pet/77;q=23;t=95" method="get">
        <input type="submit" value="提交">
    </form>

运行结果

后台控制器显示结果:
id=66,color=red,year=2020
q1=45,q2=34
q=1
map={q=45, s=54, t=95},mapid2={q=23, t=95}

关于@MatrixVariable的参数

属性 属性值 含义
name 设置要获取路径中某参数的参数名
pathVar 设置要获取参数的路径段
value 指定pathVar中的某参数名
required false 路径中可以没有这个变量
true 路径中必须有这个变量默认
defaultValue 设置默认值

云中君后话:

URI规范RFC 3986定义了在路径段中包括名称/值对的可能性,可以使用一般的“ URI路径参数”,尽管也经常使用并且相当知名的,更独特的“矩阵URI”。在Spring MVC中,这些被称为矩阵变量。

相关文章
|
1月前
|
Java 索引
Java中String方法学习总结_kaic
Java中String方法学习总结_kaic
|
1月前
|
存储 NoSQL Java
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
53 0
|
1月前
|
机器学习/深度学习 Java 索引
39、一篇文章弄懂 Java 正则表达式中的量词、贪婪、勉强、独占和 String 的 matches 方法的底层【个人感觉非常值得学习】
39、一篇文章弄懂 Java 正则表达式中的量词、贪婪、勉强、独占和 String 的 matches 方法的底层【个人感觉非常值得学习】
30 0
|
3月前
|
前端开发 Java 应用服务中间件
快速上手:探索Spring MVC的学习秘籍!
快速上手:探索Spring MVC的学习秘籍!
|
3月前
|
C语言 C++ 容器
【C++学习手札】模拟实现string
【C++学习手札】模拟实现string
|
3月前
|
存储 搜索推荐 Java
JavaSE学习值之--String类(三)
JavaSE学习值之--String类(三)
37 0
JavaSE学习值之--String类(三)
|
3月前
|
Java
JavaSE学习值之--String类(二)
JavaSE学习值之--String类(二)
33 0
|
3月前
|
存储 Java 编译器
JavaSE学习值之--String类(一)
JavaSE学习值之--String类(一)
31 0
|
3月前
|
前端开发 Java 数据库
MVC架构学习归纳总结(小傅哥の码场 学习专栏)
MVC架构学习归纳总结(小傅哥の码场 学习专栏)
20 0
|
8月前
|
Java
Java中String方法魔性学习
Java中String方法魔性学习