请求映射注解
# 3.设置请求映射规则@RequestMapping
该注解可以加到方法上或者是类上。(查看其源码可知)
我们可以用其来设定所能匹配请求的要求。只有符合了设置的要求,请求才能被加了该注解的方法或类处理。
# 3.1 指定请求路径
path或者value属性都可以用来指定请求路径。
例如:
我们期望让请求的资源路径为**/test/testPath的请求能够被testPath**方法处理则可以写如下代码
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping("/testPath")
public String testPath(){
return "/success.jsp";
}
}
2
3
4
5
6
7
8
# 3.2 指定请求方式
method属性可以用来指定可处理的请求方式。
例如:
我们期望让请求的资源路径为**/test/testMethod的POST请求能够被testMethod**方法处理。则可以写如下代码
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(value = "/testMethod",method = RequestMethod.POST)
public String testMethod(){
System.out.println("testMethod处理了请求");
return "/success.jsp";
}
}
2
3
4
5
6
7
8
9
10
11
注意:我们可以也可以运用如下注解来进行替换
@PostMapping 等价于 @RequestMapping(method = RequestMethod.POST)
@GetMapping 等价于 @RequestMapping(method = RequestMethod.GET)
@PutMapping 等价于 @RequestMapping(method = RequestMethod.PUT)
@DeleteMapping 等价于 @RequestMapping(method = RequestMethod.DELETE)
例如:
上面的需求我们可以使用下面的写法实现
@Controller
@RequestMapping("/test")
public class TestController {
@PostMapping(value = "/testMethod")
public String testMethod(){
System.out.println("testMethod处理了请求");
return "/success.jsp";
}
}
2
3
4
5
6
7
8
9
10
# 3.3 指定请求参数
我们可以使用params属性来对请求参数进行一些限制。可以要求必须具有某些参数,或者是某些参数必须是某个值,或者是某些参数必须不是某个值。
例如:
我们期望让请求的资源路径为**/test/testParams的GET请求,并且请求参数中具有code参数**的请求能够被testParams方法处理。则可以写如下代码
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(value = "/testParams",method = RequestMethod.GET,params = "code")
public String testParams(){
System.out.println("testParams处理了请求");
return "/success.jsp";
}
}
2
3
4
5
6
7
8
9
如果是要求不能有code这个参数可以把改成如下形式
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(value = "/testParams",method = RequestMethod.GET,params = "!code")
public String testParams(){
System.out.println("testParams处理了请求");
return "/success.jsp";
}
}
2
3
4
5
6
7
8
9
如果要求有code这参数,并且这参数值必须是某个值可以改成如下形式
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(value = "/testParams",method = RequestMethod.GET,params = "code=sgct")
public String testParams(){
System.out.println("testParams处理了请求");
return "/success.jsp";
}
}
2
3
4
5
6
7
8
9
如果要求有code这参数,并且这参数值必须不是某个值可以改成如下形式
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(value = "/testParams",method = RequestMethod.GET,params = "code!=sgct")
public String testParams(){
System.out.println("testParams处理了请求");
return "/success.jsp";
}
}
2
3
4
5
6
7
8
9
# 3.4 指定请求头
我们可以使用headers属性来对请求头进行一些限制。
例如:
我们期望让请求的资源路径为**/test/testHeaders的GET请求,并且请求头中具有deviceType**的请求能够被testHeaders方法处理。则可以写如下代码
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(value = "/testHeaders",method = RequestMethod.GET,headers = "deviceType")
public String testHeaders(){
System.out.println("testHeaders处理了请求");
return "/success.jsp";
}
}
2
3
4
5
6
7
8
9
10
如果是要求不能有deviceType这个请求头可以把改成如下形式
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(value = "/testHeaders",method = RequestMethod.GET,headers = "!deviceType")
public String testHeaders(){
System.out.println("testHeaders处理了请求");
return "/success.jsp";
}
}
2
3
4
5
6
7
8
9
10
如果要求有deviceType这个请求头,并且其值必须是某个值可以改成如下形式
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(value = "/testHeaders",method = RequestMethod.GET,headers = "deviceType=ios")
public String testHeaders(){
System.out.println("testHeaders处理了请求");
return "/success.jsp";
}
}
2
3
4
5
6
7
8
9
10
如果要求有deviceType这个请求头,并且其值必须不是某个值可以改成如下形式
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(value = "/testHeaders",method = RequestMethod.GET,headers = "deviceType!=ios")
public String testHeaders(){
System.out.println("testHeaders处理了请求");
return "/success.jsp";
}
}
2
3
4
5
6
7
8
9
10
# 3.5 指定请求头Content-Type
我们可以使用consumes属性来对Content-Type这个请求头进行一些限制。
# 范例一
我们期望让请求的资源路径为**/test/testConsumes**的POST请求,并且请求头中的Content-Type头必须为 multipart/from-data 的请求能够被testConsumes方法处理。则可以写如下代码
@RequestMapping(value = "/testConsumes",method = RequestMethod.POST,consumes = "multipart/from-data")
public String testConsumes(){
System.out.println("testConsumes处理了请求");
return "/success.jsp";
}
2
3
4
5
# 范例二
如果我们要求请求头Content-Type的值必须不能为某个multipart/from-data则可以改成如下形式:
@RequestMapping(value = "/testConsumes",method = RequestMethod.POST,consumes = "!multipart/from-data")
public String testConsumes(){
System.out.println("testConsumes处理了请求");
return "/success.jsp";
}
2
3
4
5