springmvc教程-获取RESTful风格参数(@PathVariable)

需要掌握:RESTful

介绍

在 RESTful 中,参数是拼接在url后面的,如下:

http://localhost:8099/book/1

与传统的?后面带参数是不同的,传统如下:

http://localhost:8099/book?id=1

此时需要 @PathVariable 注解获取 RESTful 风格的参数

@PathVariable

@PathVariable注解的作用就是 获取 RESTful风格的参数,加在 形参的前面

在@RequestMapping等注解里面添加占位符,如{paramName},还可以添加 正则表达式。

参数

  • value:别名
  • name:同value
  • required:默认true。true表示该参数必填,此时必须有此参数,否则报错。false表示不是必填,此参数可以没有!

url有1个参数

url:

http://localhost:8080/book/1

Controller代码:

@GetMapping("/book/{id}")
public String book(@PathVariable String id){
    System.out.println("id:"+id);
    return "success";
}

或者

@GetMapping("/book/{id}")
public String book(@PathVariable(name="id") String str){
    System.out.println("id:"+str);
    return "success";
}

参数可以不填写

代码如下:

@GetMapping(value={"/book/{id}","/book"})
public String book(@PathVariable(required=false) String id){
    System.out.println("id:"+id);
    return "success";
}

url有多个参数

例1

url: http://localhost:8080/student/lilei/20

Controller代码:

@GetMapping("/student/{name}/{age}")
public String student(@PathVariable("name") String name,@PathVariable("age") String age){
    System.out.println("name:"+name);
    System.out.println("age:"+age);
    return "success";
}

例2

url:
http://localhost:8080/student/lilei_20

Controller代码:

@GetMapping("/student/{name}_{age}")
public String student(@PathVariable("name") String name,@PathVariable("age") String age){
    System.out.println("name:"+name);
    System.out.println("age:"+age);
    return "success";
}

原文出处:/show_1EF5s0Bza83B.html