3.1、指定请求路径
path或者value属性都可以用来指定请求路径。
我们期望让请求的资源路径为/test/testPath的请求能够被处理,则可以写如下代码:
@Controller
@RequestMapping("/test")
public class HelloController {
@RequestMapping("/testPath")
public String hello(Model model){
//封装数据
model.addAttribute("msg","HelloSpringMVC");
//会被视图解析器处理
return "hello";
}
}
3.2、指定请求方式
method属性可以用来指定可处理的请求方式。
我们期望让请求的资源路径为/testMethod的POST请求能够被处理,则可以写如下代码:
@RequestMapping(value = "/testMethod",method = RequestMethod.POST)
public String test02(Model model){
//封装数据
model.addAttribute("msg","HelloSpringMVC2");
return "hello";
}
注意:我们也可以运用如下注解来进行等价替换
- @PostMapping 等价于 @RequeMapping(method=RequestMethod.POST)
- @GetMapping 等价于 @RequeMapping(method=RequestMethod.GET)
- @PutMapping 等价于 @RequeMapping(method=RequestMethod.PUT)
- @DeleteMapping 等价于 @RequeMapping(method=RequestMethod.DELETE)
@PostMapping("testMethod")
public String test02(Model model){
//封装数据
model.addAttribute("msg","HelloSpringMVC2");
return "hello";
}
3.3、指定请求参数
我们可以hi用params属性来对请求参数进行一些限制。
可以要求必须具有某些参数,或者是某些参数必须是某个值,或者是某些参数必须不是某个值。
我们期望让请求的资源路径为/testParams的GET请求,并且请求参数中具有code参数。
@GetMapping(value = "/testParams",params ="code")
public String test03(Model model){
model.addAttribute("msg","HelloSpringMVC3");
return "hello";
}
如果是要求不能有code这个参数,可以改成如下形式:
@GetMapping(value = "/testParams2",params = "!code")
public String test04(Model model){
model.addAttribute("msg","HelloSpringMVC4");
return "hello";
}
如果要求必须有code这个参数,并且参数值必须是某个值,可以改成如下形式:
@PutMapping(value = "/testParams3",params = "code=hello")
public String test05(Model model){
model.addAttribute("msg","HelloSpringMVC5");
return "hello";
}
如果要求必须有code这个参数,并且参数值必须不是某个值,可以改成如下形式:
@GetMapping(value = "/testParams4",params = "code!=hello")
public String test06(Model model){
model.addAttribute("msg","HelloSpringMVC6");
return "hello";
}
3.4、指定请求头
我们可以使用headers属性来对请求头进行一些限制。
我们期望让请求的资源路径为/testHeaders的GET请求,并且请求头中具有deviceType的请求能够被处理,则可以写如下代码。
@GetMapping(value = "/testHeaders",headers = "deviceType")
public String test07(Model model){
model.addAttribute("msg","HelloSpringMVC7");
return "hello";
}
如果是要求不能有deviceType这请求头,则可以改成以下形式:
@GetMapping(value = "/testHeaders2",headers ="!deviceType")
public String test08(Model model){
model.addAttribute("msg","HelloSpringMVC8");
return "hello";
}
如果要求必须有deviceType这个请求头,并且必须是某个值,可以改成如下形式:
@GetMapping(value = "/testHeaders3",headers ="deviceType=ios")
public String test09(Model model){
model.addAttribute("msg","HelloSpringMVC9");
return "hello";
}
如果要求必须有deviceType这个请求头,并且必须不是某个值,可以改成如下形式:
@GetMapping(value = "/testHeaders3",headers ="deviceType!=ios")
public String test10(Model model){
model.addAttribute("msg","HelloSpringMVC10");
return "hello";
}
3.5、指定请求头Context-Type
我们可以使用consume属性来对Context-Type这个请求头进行一些限制
我们期望让请求的资源路径为/testConsumes的POST请求,并且请求头中的Context-Type头必须为multipart/form-data的请求能够被处理,则可以写如下代码。
@PostMapping(value = "/testConsumes",consumes = "multipart/form-data")
public String test11(Model model){
model.addAttribute("msg","HelloSpringMVC11");
return "hello";
}
如果我们要求请求头Context-Type的值,不能为某个multipart/form-data,则可以改成如下:
@PostMapping(value = "testConsumes2",consumes ="!multipart/form-data")
public String test12(Model model){
model.addAttribute("msg","HelloSpringMVC12");
return "hello";
}