3.1、指定请求路径

path或者value属性都可以用来指定请求路径。
我们期望让请求的资源路径为/test/testPath的请求能够被处理,则可以写如下代码:

  1. @Controller
  2. @RequestMapping("/test")
  3. public class HelloController {
  4. @RequestMapping("/testPath")
  5. public String hello(Model model){
  6. //封装数据
  7. model.addAttribute("msg","HelloSpringMVC");
  8. //会被视图解析器处理
  9. return "hello";
  10. }
  11. }

3.2、指定请求方式

method属性可以用来指定可处理的请求方式。
我们期望让请求的资源路径为/testMethod的POST请求能够被处理,则可以写如下代码:

  1. @RequestMapping(value = "/testMethod",method = RequestMethod.POST)
  2. public String test02(Model model){
  3. //封装数据
  4. model.addAttribute("msg","HelloSpringMVC2");
  5. return "hello";
  6. }

注意:我们也可以运用如下注解来进行等价替换

  • @PostMapping 等价于 @RequeMapping(method=RequestMethod.POST)
  • @GetMapping 等价于 @RequeMapping(method=RequestMethod.GET)
  • @PutMapping 等价于 @RequeMapping(method=RequestMethod.PUT)
  • @DeleteMapping 等价于 @RequeMapping(method=RequestMethod.DELETE)
    1. @PostMapping("testMethod")
    2. public String test02(Model model){
    3. //封装数据
    4. model.addAttribute("msg","HelloSpringMVC2");
    5. return "hello";
    6. }

3.3、指定请求参数

我们可以hi用params属性来对请求参数进行一些限制。
可以要求必须具有某些参数,或者是某些参数必须是某个值,或者是某些参数必须不是某个值

我们期望让请求的资源路径为/testParamsGET请求,并且请求参数中具有code参数。

  1. @GetMapping(value = "/testParams",params ="code")
  2. public String test03(Model model){
  3. model.addAttribute("msg","HelloSpringMVC3");
  4. return "hello";
  5. }

如果是要求不能有code这个参数,可以改成如下形式:

  1. @GetMapping(value = "/testParams2",params = "!code")
  2. public String test04(Model model){
  3. model.addAttribute("msg","HelloSpringMVC4");
  4. return "hello";
  5. }

如果要求必须有code这个参数,并且参数值必须是某个值,可以改成如下形式:

  1. @PutMapping(value = "/testParams3",params = "code=hello")
  2. public String test05(Model model){
  3. model.addAttribute("msg","HelloSpringMVC5");
  4. return "hello";
  5. }

如果要求必须有code这个参数,并且参数值必须不是某个值,可以改成如下形式:

  1. @GetMapping(value = "/testParams4",params = "code!=hello")
  2. public String test06(Model model){
  3. model.addAttribute("msg","HelloSpringMVC6");
  4. return "hello";
  5. }

3.4、指定请求头

我们可以使用headers属性来对请求头进行一些限制。

我们期望让请求的资源路径为/testHeadersGET请求,并且请求头中具有deviceType的请求能够被处理,则可以写如下代码。

  1. @GetMapping(value = "/testHeaders",headers = "deviceType")
  2. public String test07(Model model){
  3. model.addAttribute("msg","HelloSpringMVC7");
  4. return "hello";
  5. }

如果是要求不能有deviceType这请求头,则可以改成以下形式:

  1. @GetMapping(value = "/testHeaders2",headers ="!deviceType")
  2. public String test08(Model model){
  3. model.addAttribute("msg","HelloSpringMVC8");
  4. return "hello";
  5. }

如果要求必须有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";
    }