码迷,mamicode.com
首页 > 移动开发 > 详细

[Spring MVC]学习笔记--@RequestMapping

时间:2014-08-11 17:10:12      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   io   文件   2014   ar   

@RequestMapping是用来将请求的url,映射到整个类,或者里面的方法。

@Controller
@RequestMapping("/test")
public class TestController {
    private final TestService service;

    @Autowired
    public TestController(TestService testService) {
        this.service = testService;    
    }

    @RequestMapping(method = RequestMethod.GET)
    public Map<String, Test> get() {
        return service.getTests();
    }

    @RequestMapping(value="/new", method=RequestMethod.GET)
    public Test getNewTest() {
        return new Test();
    }
}

 

在URL中包含变量

@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model model) {
    Owner owner = ownerService.findOwner(ownerId);
    model.addAttribute("owner",owner);
    return "displayOwner";
}

在URL的中使用变量名ownerId,当该方法处理请求时,会把url中ownerId的值传给ownerId。

如果变量名不一致的话,可以使用下面的方法。

@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable("ownerId") String theOwner, Model model) {
...
}

注意1:变量可以包含多个。

注意2:当用于Map<String,String>时,map用来存放所有的变量。

 

Matrix Variables使用

格式:/cars;color=red,green,blue;year=2014  变量之间用";", 值之间用",".

要使用Matrix Variables,首先要修改xml文件

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

 

多个参数例子

// GET /owners/2;q=1/pets/3;q=22
@RequestMapping(value="/owners/{ownerId}/pets/{petId}", method = RequestMethod.GET)
public void findPet(
        @MatrixVariable(value="q",pathVar="ownerId") int q1,
        @MatrixVariable(value="q",pathVar="petId") int q2) {
    //q1 == 1
    //q2 == 22
}

 

默认值

//Get /pets/42
@RequestMapping(value="/pets/{petId}",method=RequestMethod.GET)
public void findPet(@MatrixVariable(required=false, defaultValue="1") int q) {
     // q == 1   
}

 

获得所有matrix variables值

// GET /owners/42;q=11;r=12/pets/21;q=22;s=23
@RequestMapping(value = "/owners/{ownerId}/pets/{petId}", method = RequestMethod.GET)
public void findPet(
        @MatrixVariable Map<String,String> matrixVars,
        @MatrixVariable(pathVar="petId" Map<String,String> petMatrixVars) {
    //matrixVars: ["q":[11,22], "r":12, "s":23]
    //petMatrixVars: ["q": 11, "s" : 23]
}

 

指定条件

consumes: 只有当请求的Content-Type值为指定的值时,才进行处理。

@RequestMapping(..., consumes="application/json")

produces:只有当请求中的Accept值匹配指定的值时,才进行处理。

@RequestMapping(..., produces="application/json")

params:根据请求中的parameters来过滤

@RequestMapping(..., params="myParam=myValue")

注:表达式可以为"myParam", "!myParam", "myParam=myValue";分别表示存在,不存在,为特定值。

headers: 根据请求中的headers来过滤。(用法同params)

@RequestMapping(..., headers="myHeader=myValue")

注:如果是针对content-type的话,建议用consumes和produces。

[Spring MVC]学习笔记--@RequestMapping,布布扣,bubuko.com

[Spring MVC]学习笔记--@RequestMapping

标签:style   blog   color   使用   io   文件   2014   ar   

原文地址:http://www.cnblogs.com/lemonbar/p/3904876.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!