当我们想获取的值包含在请求路径中的时候, 我们可以用@PathVariable从请求路径中获取我们想要的参数
一个栗子:
package com.annotation;
/**
* @Author: Vimonster
* @Date: Created in 2020/8/2 9:38
* @motto: 任时间再怎样低头呢喃,也要不挥泪后风雨兼程、
* @Version: $version$
* @Description:
*/
public class User {
private String id;
private String userName;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", userName='" + userName + '\'' +
'}';
}
}
1. 当我们想获取的值包含在请求路径中的时候, 我们可以用@PathVariable从请求路径中获取我们想要的参数,
在接收请求方法的参数前,使用@PathVariable注解指定需要获取的URL中对应的参数的名称,即可拿到我们
需要的参数,比如此处的
2. 如果是接收参数是对象,不需要指定 对象的属性名和URL对应的路径字段名相同就会自动映射
看代码,更直观:
package com.annotation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @Author: Vimonster
* @Date: Created in 2020/8/2 9:29
* @motto: 任时间再怎样低头呢喃,也要不挥泪后风雨兼程、
* @Version: $version$
* @Description: @PathVariable实践
*/
@Controller
@RequestMapping("testPath")
public class PathVariableController {
/**
* 当我们想获取的值包含在请求路径中的时候, 我们可以用@PathVariable从请求路径中获取我们想要的参数,
* 在接收请求方法的参数前,使用@PathVariable注解指定需要获取的URL中对应的参数的名称,即可拿到我们
* 需要的参数,比如此处的
* localhost:8080/springmvc/testPath/user/1/lilei/monster
*
* 我们可以通过以下方式 获取到id = 1 name = lilei
*
* @param id
* @param name
* @return
*/
@RequestMapping("/user/{id}/{userName}/monster")
public String test01(@PathVariable(value = "id") String id, @PathVariable("userName") String name) {
System.out.println(id + " : " + name);
return "hello springmvc";
}
/**
* 如果是对象接收 不需要指定 对象的属性名和URL对应的路径字段名相同就会自动映射
* 比如此处的:
* User 的字段 id -> {id}
* User 的字段 userName -> {userName}
* @param user
* @return
*/
@RequestMapping("/user1/{id}/{userName}/monster")
public String test01(User user) {
System.out.println(user);
return "hello springmvc";
}
}
=== 访问test方法地址localhost:8080/springmvc/testPath/user/1/lilei/monster 输出 ===
1 : 李磊
=== 访问test1方法地址localhost:8080/springmvc/testPath/user1/1/lilei/monster 输出 ===
User{id='1', userName='李磊'}