@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。

@RequestParam

@RequestParam可以把request中的parameter绑定到method parameter。

例如xxx/pet?petId=4

@RequestMapping(value = "/pet")
public String test(@RequestParam("petId") int petId, ModelMap model) {
...
}

被标注了@RequestParam后,默认是必须的,可以增加required=false来标记,同时最好增加一个defaultValue的值。

最新文章

  1. 在javascrit中怎样来刷新页面
  2. php-fpm服务启动脚本
  3. FLEX监视浏览器关闭事件
  4. Jquery 中的$(this) 和javascript中的this
  5. mysql数据库delete数据时不支持表别名
  6. Hadoop 问题 &amp; 解决
  7. poj 1517 u Calculate e
  8. Java学习日记-2.5 关于0和无穷
  9. IMAGE_SECTION_HEADER
  10. oracle datetime
  11. bzoj1060 [ZJOI2007]时态同步
  12. Java几种建立实例的方法
  13. python基础 (函数名,闭包,和迭代器)
  14. nRFgo Studio 和 Nrfjprog 无法找到JLinkARM.dll的解决方法
  15. 2.Linux技能要求
  16. .NET中常见的内存泄漏和解决办法
  17. Clojure学习之比线性箭头操作
  18. Mongodb 与 Mongoose 的使用
  19. 我是如何通过debug成功甩锅浏览器的:解决fixed定位元素,在页面滚动后touch事件失效问题
  20. asp.net mvc5 下载文件方法

热门文章

  1. Unity 配置静态excel 工作流程
  2. Android自己定义button实现长按功能
  3. mac 上多版本python 共存
  4. ERROR: ld.so: object &#39;/usr/lib64/libtcmalloc.so.4&#39; from LD_PRELOAD cannot be preloaded: ignored
  5. C++第4次实验(基础班)—循环结构程序设计
  6. iOS学习笔记-自己动手写RESideMenu
  7. 利用pandas进行数据分析之一:pandas数据结构Series
  8. python中MySQL模块TypeError: %d format: a number is required, not str异常解决
  9. Cookie的增删改查
  10. js遮罩层弹出显示效果组件化