@RequestMapping
是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
含有如下六个属性:
value:指定请求的实际地址
method:指定请求类型,GET、POST、PUT、DELETE等
consumes:指定处理请求的提交内容类型(Contetn-Type),例如application/json, text/html
produces:指定返回的内容类型
params:指定request中必须包含某些参数值时,才进行处理
headers:指定request中必须包含某些指定的header值,才进行处理
一、value取值
1、普通的具体值
请求地址:http://localhsot:8080/Test/test
@RequestMapping("/test")
public @ResponseBody String test()
{
return "This is a test";
}
带参数请求地址:http://localhsot:8080/Test/test2?id=1
@RequestMapping("/test2")
public @ResponseBody String test(int id)
{
System.out.println(id);
return "This is a test "+id;
}
请求地址参数名需与test参数名相同,例:id
或
带参数请求地址:http://localhsot:8080/Test/test2?ids=1
@RequestMapping("/test2")
public @ResponseBody String test(@RequestParam("ids")int id)
{
System.out.println(id);
return "This is a test "+id;
}
请求地址参数名需与@RequestParam定义的参数名相同,例:ids
2、含有变量的值
(1)单一变量
请求地址:http://localhsot:8080/Test/test/2
@RequestMapping("/test/{id}")
public @ResponseBody String test(@PathVariable int id)
{
return "This is a test "+id;
}
变量名与方法参数名相同,例:id
或
请求地址:http://localhsot:8080/Test/test2/2
@RequestMapping("/test2/{ids}")
public @ResponseBody String test2(@PathVariable("ids") int id)
{
return "This is a test "+id;
}
变量名与@PathVariable定义变量名相同,例:ids
(2)多个变量
@RequestMapping("/test/{ids}/a/{id}")
public @ResponseBody String test(@PathVariable int id,@PathVariable int ids)
{
return "This is a test "+id;
}
@PathVariable用法与单一变量相同
3、含有正则表达式的值
@RequestMapping("/test/{name:[a-z]+}")
public @ResponseBody String test(@PathVariable String name)
{
return "This is a test, "+name;
}
@PathVariable用法相同,且可包含多个正则表达式值
二、method
@RequestMapping(value="/test",method=RequestMethod.POST)
public @ResponseBody String test()
{
return "This is a test";
}
仅响应post请求
三、cousumes
@RequestMapping(value="/test",consumes="application/json")
public @ResponseBody String test()
{
return "This is a test";
}
仅响应Content-Type为"application/json"的请求
四、produces
@RequestMapping(value="/test",produces="application/json")
public @ResponseBody String test()
{
return "This is a test";
}
仅响应请求头Accept的值为"application/json"的请求
五、params
@RequestMapping(value="/test",params="age")
public @ResponseBody String test(long age)
{
System.out.println(age);
return "This is a test";
}
仅响应含请求参数age的请求
@RequestMapping(value="/test",params="age=1")
public @ResponseBody String test(long age)
{
System.out.println(age);
return "This is a test";
}
仅响应含请求参数age,且值为1的请求
六、headers
@RequestMapping(value="/test",headers="age")
public @ResponseBody String test()
{
return "This is a test";
}
仅响应header含参数age的请求
@RequestMapping(value="/test",headers="age=1")
public @ResponseBody String test()
{
return "This is a test";
}
仅响应header含参数age且值为1的请求