指定请求路径
如果不按照指定请求路径访问 将不会被映射到前端处理器上 也就不会执行后面的操作
path或者value属性都可以用来指定请求路径。
例如:
我们期望让请求的资源路径为**/test/testPath的请求能够被testPath**方法处理则可以写如下代码
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping("/testPath")
public String testPath(){
return "/success.jsp";
}
}
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";
}
}
注意!!!:我们可以也可以运用如下注解来进行替换
- @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";
}
}
指定请求参数
我们可以使用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";
}
}
** 如果是要求不能有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";
}
}
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";
}
}
如果是要求不能有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";
}
}
如果要求有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";
}
}
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";
}
范例二
如果我们要求请求头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";
}