简介:
@RequestMapping
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
RequestMapping注解有六个属性,下面我们把她分成三类进行说明。
1、 value, method;
value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
method: 指定请求的method类型, GET、POST、PUT、DELETE等;
2、 params,headers;
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
3、Ant路径写法
1、@RequestMapping处理请求地址映射value属性)
value: 指定请求的实际地址
在我们的Spring MVC中,我们会定义地址到我们Controller层的每一个方法,用于各种请求。比如在下图中的对比
点击Hello World!
根目录后面的helloWorld即是我们@RequestMapping("/helloWorld")注解起来的方法,具体代码看下面
/*
* 1、@RequestMapping除了可以修饰方法还可以修饰类
* 2、类定义处相对于根目录,方法定义处相对于类
* */
@RequestMapping(value = "/helloWorld")
public String helloWorld(){
System.out.println("helloWorld");
return "success";
}
注解里面的名字与方法名无关,当然我们也可以用来修饰类,起表现形式如下
@Controller
@RequestMapping(value = "hello")
public class HelloWorldController {
/*
* 1、@RequestMapping除了可以修饰方法还可以修饰类
* 2、类定义处相对于根目录,方法定义处相对于类
* */
@RequestMapping(value = "/helloWorld")
public String helloWorld(){
System.out.println("helloWorld");
return "success";
}
}
注意到我们@Controller下面注解@RequestMapping("hello"),我们可以看到如下图的访问地址变化
2、@RequestMapping处理请求地址映射method属性)
method: 指定请求的method类型
我们的请求一般会有4中方式GET、PUT、POST、DELETE,我们可以通过method属性来指定请求,否则请求不成功。我们看如下代码
@RequestMapping(value = "/helloWorld",method = RequestMethod.GET)
public String helloWorld(){
System.out.println("helloWorld");
return "success";
}
在代码中我们可以看到指定的请求是GET方法,只有网页过来的地址正确且为GET请求才会正确返回。
3、@RequestMapping处理请求地址映射params和headers属性)
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
@RequestMapping(value = "/helloWorld",method = RequestMethod.GET,params = {"name","age != 10"},headers = {"User-Agent=123"}))
public String helloWorld(){
System.out.println("helloWorld");
return "success";
}
4、@RequestMapping Ant路径写法
@RequestMapping(value = "/helloWorld/*",method = RequestMethod.GET,params = {"name","age != 10"},headers = {"User-Agent=123"}))
public String helloWorld(){
System.out.println("helloWorld");
return "success";
}
注意helloWorld后面*号,这里指的是路径在/helloWorld/后面加任何都可以访问。