@RequesMapping
- 除了修饰方法,也可以修饰类
- 类定义处:提供初步的请求映射信息,相当于web应用的根目录,表示类中的所有响应请求的方法都是以该地址作为父路径。
- 方法定义处:提供进一步的细分映射信息,访问该类中的某个方法时,需要通过定义的类路径加方法路径,如果类路径没有定义,直接通过方法定义的路径即可。
@RequestMapping 的 value、method、params 及 heads 分别表示请求 URL、请求方法、请求参数及请求头的映射条件,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。
value,method
value: 指定请求的实际地址,指定的地址可以是URI
method: 指定请求的method类型, GET、POST、PUT、DELETE等;
params,headers
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
/**
* 了解: 可以使用 params 和 headers 来更加精确的映射请求. params 和 headers 支持简单的表达式.
*
* @return
*/
@RequestMapping(value = "testParamsAndHeaders", params = { "username",
"age!=10" }, headers = { "Accept-Language=en-US,zh;q=0.8" })
public String testParamsAndHeaders() {
System.out.println("testParamsAndHeaders");
return SUCCESS;
}
/**
* 常用: value表示请求的url method 属性来指定请求方式
*/
@RequestMapping(value = "/testMethod", method = RequestMethod.POST)
public String testMethod() {
System.out.println("testMethod");
return SUCCESS;
}
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
@PathVariable
@PathVariable 映射 URL 绑定的占位符
带占位符的 URL 是 Spring3.0 新增的功能,该功能在 SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义
通过 @PathVariable 可以将 URL 中占位符参数绑定到控 制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过
@PathVariable(“xxx”) 绑定到操作方法的入参中。
/**
* @PathVariable 可以来映射 URL 中的占位符到目标方法的参数中.
* @param id
* @return
*/
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id") Integer id) {
System.out.println("testPathVariable: " + id);
return SUCCESS;
}
http://localhost:8080/testPathVariable/111
@RequestParam
@RequestParam获取请求参数的值,把请求的信息绑定到相应的方法入参中,并根据方法的返回值类型做出相应的后续处理。
属性值: @RequestParam 来映射请求参数.
value 值即请求参数的参数名
required 该参数是否必须. 默认为 true
defaultValue 请求参数的默认值
@RequestMapping(value = "/testRequestParams",method = RequestMethod.GET)
public String testRequestParams(@RequestParam(value = "username") String username,@RequestParam(value = "id",required = false,defaultValue = "0") int id){
System.out.print(username+" "+id);
return username+id;
}
请求:http://localhost:8080/hello/testRequestParams?username=zhangsan&id=1
结果:zhangsan0
@RequestHeader
映射请求头信息 用法同 @RequestParam
@RequestMapping(value = "/testRequestHeader",method = RequestMethod.GET)
public String testRequestHeader(@RequestHeader(value = "Accept-Language") String al){
System.out.print(al);
return al;
}
请求:http://localhost:8080/hello/testRequestHeader
结果:zh-CN,zh;q=0.9