RequestMapping的使用
1)@RequestMapping除了修饰方法,还可以修饰类
2)
@RequestMapping的value,method,params和heads分别表示请求URL,请求方法,请求参数以及请求头
的映射条件,他们之间是与的关系,联合使用多个条件可以让请求映射更加精确化
params和headers支持简单的表达式
--param1:表示请求必须包含名为param1的请求参数
--!param1:表示请求不能包含名为param1的请求参数
--param1!=value1:表示请求包含名为param1的请求参数,但值不能为value1
--{“param1=value1”,“param2”}:请求必须包含名为param1和param2的两个请求参数,且param1
参数的值必须为value1
3)
Ant风格资源地址支持3种匹配符
-?:匹配文件名中的一个字符
-*:匹配文件名中任意字符
-**:**匹配多层路径
@RequestMapping还支持Ant风格的URL
-/user/*/createUser:匹配/user/aaa/createUser
/user/bbb/createUser等URL
-/user/**/createUser:匹配/user/createUser
/user/aaa/bbb/createUser等URL
-/user/createUser??:匹配/user/createUseraa
/user/createUserbb等URL
4)
通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中:
URL中的{xxx}占位符可以通过@PathVariable("xxx")绑定到操作方法的入参中
以下是代码示例,按号入座
package com.hous.springmvc.controller; import org.junit.runner.Request; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @RequestMapping("/shanshanbox") @Controller public class ShanShanBox { private static final String SUCCESS = "success"; /** * 1. @RequestMapping除了修饰方法,还可以修饰类 * 2. * 1)类定义处:提供初步请求映射信息,相对于WEB应用的根目录 * 2)方法处:提供细分映射信息,相对于类定义处的URL。 * 若类处未标明@RequestMapping,则方法处的URL相对于WEB应用的根目录 * @return */ @RequestMapping("/testRequestMapping") public String testRequestMapping() { System.out.println("testRequestMapping"); return SUCCESS; } /** * 使用method指定请求的方式 * @return */ @RequestMapping(value="/testMethod", method=RequestMethod.POST) public String testMethod() { System.out.println("testMethod"); return SUCCESS; } /** * 使用params和headers可以更加精确的映射请求 * params和headers支持简单的表达式 * @return */ @RequestMapping(value="/testParamsAndHeaders", params={"user","age!=24"}, headers={}) public String testParamsAndHeaders() { System.out.println("testParamsAndHeaders"); return SUCCESS; } /** * 支持通配符 * ?表示一个字符 * *表示任意字符 * **匹配多层路径 * @return */ @RequestMapping("/testAntPath/*/abc") public String testAntPath() { System.out.println("testAntPath"); return SUCCESS; } /** * @PathVariable可以映射URL中的占位符到目标方法的参数中 * @param id * @return */ @RequestMapping("/testPathVariable/{id}") public String testPathVariable(@PathVariable("id") Integer id) { System.out.println("testPathVariable: " + id); return SUCCESS; } }