一、RequestMapping的简介
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
RequestMapping注解有以下几个常用参数,当这些参数一起出现时,它们之间是与的关系。即,只要有一个条件不满足,就不能接收请求。
- value
- path
- method
- params
- headers
二、RequestMapping常用注解的介绍
- value参数
value参数用于指定访问该方法的地址。当RequestMapping位于方法上时该值就是该方法的访问路径。当RequestMapping位于类上和方法上时,类上的路径是方法上的路径的父路径。举个例子:
@Controller
public class HelloController {
@RequestMapping(value = "/hello")
public String sayHello(){
System.out.println("Hello MVC!");
return "success";
}
}
在上面这个类中,类上面没有RequestMapping注解,而sayHello方法上面有RequestMapping注解,且value值为/hello
,这个方法的访问路径就是/hello
。而在下面这个类中,类上面有RequestMapping注解,且值为/user
。那么方法sayHello的访问路径就是/user/hello
,方法sayAAA的访问路径就是/user/aaa
。
@Controller
@RequestMapping(value = "/user")
public class HelloController {
@RequestMapping(value = "/hello")
public String sayHello(){
System.out.println("Hello MVC!");
return "success";
}
@RequestMapping(value = "/aaa")
public String sayAAA(){
System.out.println("AAA!");
return "success";
}
}
2、path参数
path参数的作用与value参数完成相同。通过源码可见一斑。
3、method参数
method参数是一个数组,用于指定访问的方法。比如POST、GET这些。springMVC提供了一个叫做RequestMethod的枚举类。查看这个类的源码,可以了解到支持的方法
下面的例子,还是使用上面那个类,多加了一个method参数,参数的值为RequestMethod.POST,如果请求的方法不是POST的话,那么服务器就会报错。
@Controller
@RequestMapping(path = "/user")
public class HelloController {
@RequestMapping(path = "/hello", method = {RequestMethod.POST})
public String sayHello(){
System.out.println("Hello MVC!");
return "success";
}
}
4、params参数
params参数用于指定请求要包含的参数,它也是一个数组。还是上面的例子,加上params参数之后,如果你的请求中没有包含params参数指定的内容,那么将无法访问。
@RequestMapping(path = "/hello"
, params = {"username"})
public String sayHello(){
System.out.println("Hello MVC!");
return "success";
}
上面的params中只是指定要要包含的键名,而并没有指定值。而如果这样子写,就需要键名和键值同时满足才能访问。
@RequestMapping(path = "/hello"
, params = {"username=hehe"})
public String sayHello(){
System.out.println("Hello MVC!");
return "success";
}
5、headers参数
headers参数也是一个数组,用于指定请求头中要包含的信息。使用方式类似于params参数。这里指定了请求头里面必须包含accept参数,而值不做要求。如果要加上值的要求,类似于params。
@RequestMapping(path = "/user")
public class HelloController {
@RequestMapping(path = "/hello"
, headers = {"accept"})
public String sayHello(){
System.out.println("Hello MVC!");
return "success";
}