`

@MatrixVariable的使用

    博客分类:
  • J2EE
 
阅读更多
在Spring3.2 后,一个@MatrixVariable出现了,这个注解的出现拓展了URL请求地址的功能。
Matrix Variable中,多个变量可以使用“;”(分号)分隔,例如:
/cars;color=red;year=2012

如果是一个变量的多个值那么可以使用“,”(逗号)分隔
color=red,green,blue

或者可以使用重复的变量名:
color=red;color=green;color=blue


下面来一个例子说明:
//请求URL: GET /pets/42;q=11;r=22
@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET)
public voidfindPet(@PathVariableString petId, @MatrixVariable intq) {
// petId == 42
// q == 11
}

再复杂一点就是这个例子:
// GET /owners/42;q=11/pets/21;q=22
@RequestMapping(value = "/owners/{ownerId}/pets/{petId}", method = RequestMethod.GET)
public voidfindPet(
@MatrixVariable(value="q", pathVar="ownerId") intq1,
@MatrixVariable(value="q", pathVar="petId") intq2) {
// q1 == 11
// q2 == 22
}

针对每一个Parh Variable绑定一个Matrix Variable,然后使用 value 和 pathVar属性就能找到该值。
另外,正对Matrix Variable也是可以指定自身的的属性,例如,是否必须,默认值。
下面这个例子说明:
// GET /pets/42
@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET)
public voidfindPet(@MatrixVariable(required=true, defaultValue="1") intq) {
// q == 1
}


最后说明一下,如果要开启Matrix Variable功能的话,必须设置 RequestMappingHandlerMapping 中的 removeSemicolonContent 为false.
一般情况不用你手动去设置这个属性,因为这个属性默认就是false ,如果你碰见Matrix Variable功能未开启的时候就可以看看是不是误设置这个属性为true了。

结束
1
3
分享到:
评论
2 楼 lucky16 2013-07-08  
jinnianshilongnian 写道
还有一个bug需要注意下:
@RequestMapping(value = "/owners/{ownerId}/pets/{petId}", method = RequestMethod.GET)  
    public void findPet(@MatrixVariable Map<String, String> matrixVars, @MatrixVariable(pathVar = "petId") Map<String, String> petMatrixVars) {  
        System.out.println(matrixVars);  
        System.out.println(petMatrixVars);  
    }  


url:http://localhost:8080/owners/42;q=11;r=12/pets/55;q=22,33;s=23会有问题

http://jinnianshilongnian.iteye.com/blog/1872760

谢谢开涛的提醒
1 楼 jinnianshilongnian 2013-07-08  
还有一个bug需要注意下:
@RequestMapping(value = "/owners/{ownerId}/pets/{petId}", method = RequestMethod.GET)  
    public void findPet(@MatrixVariable Map<String, String> matrixVars, @MatrixVariable(pathVar = "petId") Map<String, String> petMatrixVars) {  
        System.out.println(matrixVars);  
        System.out.println(petMatrixVars);  
    }  


url:http://localhost:8080/owners/42;q=11;r=12/pets/55;q=22,33;s=23会有问题

http://jinnianshilongnian.iteye.com/blog/1872760

相关推荐

    Spring MVC 使用矩阵变量绑定参数.docx

    下面通过一个简单的示例来演示如何使用@MatrixVariable。假设我们有一个获取书籍信息的接口: ```java //GET /books/22;a=12;b=22 @RequestMapping(value="/books/{bookId}", method=RequestMethod.GET) public ...

    SpringMVC入门很简单之URL映射规则

    status=active`,可以使用`@MatrixVariable`获取`status`的值。 - `@RequestBody`和`@ResponseBody`:前者用于将HTTP请求体的数据转换为方法参数,后者用于将方法返回的对象直接写入HTTP响应体。 在实际开发中,...

    springmvc-restful-pathvariable

    `@RequestParam`用于获取请求参数,而`@MatrixVariable`则用于从URL的路径分段中的矩阵变量中提取值。这些功能丰富的注解使得开发者可以灵活地设计RESTful API,以满足各种业务需求。 总之,`@PathVariable`是...

    简化版@requestmapping注解注册源码

    3. **参数绑定**:`@RequestParam`、`@PathVariable`、`@MatrixVariable`等注解可以用来从URL中提取参数并绑定到方法参数上。 4. **模型数据**:`@ModelAttribute`注解可以用来将请求参数绑定到对象属性,或者将...

    Spring2.5注释驱动与基于注释的MVC

    同时,@RequestParam、@PathVariable和@MatrixVariable等注解帮助我们从HTTP请求中提取参数。 **ModelAndView和ResponseBody** 在基于注释的控制器中,我们可以使用ModelAndView对象来设置模型数据和视图名,或者...

    精通SpringMVC4

    同时,通过使用@PathVariable、@RequestParam、@MatrixVariable等注解,可以灵活地处理各种复杂的URL映射,实现动态路由。 文件上传功能是Web应用中常见的需求,Spring MVC通过MultipartFile接口支持文件上传。...

    Springboot 常用注解汇总说明

    Spring Boot提供了多种方式来获取请求参数,如`@RequestParam`用于从URL查询参数中获取值,`@PathVariable`用于获取RESTful URL中的占位符值,`@MatrixVariable`用于获取URL路径变量的矩阵参数,以及`@HeaderParam`...

    java SpringMVC学习使用详解

    为了让Spring管理这个控制器,我们需要在Spring的配置文件中声明或者使用@ComponentScan自动扫描包含此类的包。 除了`@Controller`,`@RequestMapping`注解是另一个关键的注解,它用于映射HTTP请求到控制器的方法。...

    spring-webmvc-3.0.2.RELEASE.jar.zip

    2. RESTful支持:通过@PathVariable、@MatrixVariable等注解,可以轻松构建RESTful服务。 3. JSON支持:内置了对JSON的处理,可以直接将Java对象转换成JSON格式,便于Web服务的开发。 4. 异步处理:提供了异步请求...

    spring 3.0api

    `@PathVariable`、`@RequestParam`、`@MatrixVariable`和`@HeaderParam`等注解则帮助获取请求参数。`ModelAndView`被`Model`和`ViewResolver`取代,使模型视图分离更清晰。此外,`HandlerExceptionResolver`的引入...

    springmvc框架小样

    6. **@PathVariable**、**@RequestParam**、**@RequestHeader**和**@MatrixVariable**:处理HTTP请求的不同部分,如路径变量、请求参数、请求头和矩阵变量。 7. **HandlerMapping**和**HandlerAdapter**:Spring ...

    spring3 mvc jar

    2. ** RESTful支持**:通过@PathVariable、@MatrixVariable、@RequestParam等注解,Spring 3支持创建RESTful Web服务,便于数据交换。 3. ** JSR-303校验集成**:Spring 3集成了JSR-303 Bean Validation规范,可以...

    spring 3.1 mvc sample

    2. **Improved REST Support**:Spring 3.1增强了对RESTful Web服务的支持,通过新增的@PathVariable、@MatrixVariable、@RequestParam和@RequestHeader等注解,使得参数绑定更加灵活,更方便地处理HTTP请求的不同...

    spring2.5注解介绍[参考].pdf

    - 入参可选类型包括基本类型、包装类型、String、日期、自定义对象等,还可以使用`@PathVariable`从URL模板中获取值,`@MatrixVariable`从路径变量中获取值。 - 返回值可选类型多样,可以是ModelAndView、String、...

    org.springframework.web-3.0.5.RELEASE.jar

    6. **RESTful Support**:随着RESTful风格的API成为主流,Spring Web 3.0.5.RELEASE加强了对REST的支持,包括使用`@PathVariable`,`@MatrixVariable`等注解处理URL路径变量,以及对HTTP方法(GET、POST、PUT、...

    spring mvc demo

    3. 更强的MVC注解:新增了`@PathVariable`、`@MatrixVariable`等注解,方便处理URL模板变量。 4. 自动配置支持:为Web应用程序提供了自动配置功能,简化了应用部署。 5. 改进的测试支持:提供更强大的测试工具和API...

    restful接口(结合spring)

    Spring提供了多种方式处理请求参数,如`@RequestParam`用于处理查询参数,`@PathVariable`用于处理路径变量,`@RequestBody`用于将请求体转换为Java对象,`@MatrixVariable`处理矩阵变量,`@HeaderParam`处理HTTP...

    spring_3.0_应用springmvc_构造RESTful_URL_详细讲解

    3. **URL参数与方法参数绑定**:Spring MVC支持多种方式将URL中的参数绑定到方法参数,如`@RequestParam`、`@PathVariable`、`@MatrixVariable`等。这些参数可以是简单的类型,也可以是复杂对象。 4. **返回类型与...

    SpingMVC

    - **RESTful 支持**:通过 @PathVariable、@MatrixVariable、@RequestParam 等注解实现 RESTful 风格的 URL 设计。 ### 5. Spring MVC 整合其他技术 Spring MVC 可以轻松与其他 Spring 模块(如 Spring AOP、...

Global site tag (gtag.js) - Google Analytics