@PathVariable注解实践

当我们想获取的值包含在请求路径中的时候, 我们可以用@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='李磊'}

 

你可能感兴趣的:(SpringMVC,spring,mvc,spring,java)