SpringMVC和SpringBoot接收参数的几种方式详解

目录

SpringMVC、SpringBoot接收参数

SpringMVC和SpringBoot接收参数的方式是一样一样的。

一、传非json参数

下面代码是get、post请求都支持,不过我们是把参数放到路径上,一半这种情况下都用get请求。

涉及到的注解:

  • @RequestParam主要用于在SpringMVC后台控制层获取参数,它有三个常用参数:defaultValue = “0”, required = false, value = “xxx”;defaultValue 表示设置默认值,required 表示该参数是否必传,value 值表示接受的传入的参数的key。
  • @PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数。
    /**
     * http://localhost:80/add?username=zg&password=123456
     * get post都支持,一半路径传参都用get请求
     * @param username
     * @param password
     */
    @RequestMapping(value = \"/add\")
    public void add(String username, String password) {
        log.info(\"打印参数:{}--{}\", username, password);
    }
    /**
     * http://localhost:80/add2?username=zg&password=123456
     * get post都支持,一半路径传参都用get请求
     * @param username
     * @param password
     * @return
     */
    @RequestMapping(value = \"/add2\", name = \"haha\")
    public void add2(@RequestParam(value = \"username\") String username, @RequestParam(\"password\") String password) {
        log.info(\"打印参数:{}--{}\", username, password);
    }
    /**
     * http://localhost:80/add3?username=zg&password=123456
     * get post都支持,一半路径传参都用get请求
     * @return
     */
    @RequestMapping(value = \"/add3\")
    public void add3(User user) {
        log.info(\"打印参数:{}--{}\", user.getUserName(), user.getPassword());
    }
    /**
     * http://localhost:80/add4/zg/123456
     * get post都支持,一半路径传参都用get请求
     * @param username
     * @param password
     */
    @RequestMapping(value = \"/add4/{username}/{password}\")
    public void add4(@PathVariable String username, @PathVariable String password) {
        log.info(\"打印参数:{}--{}\", username, password);
    }
    /**
     * http://localhost:80/add5?username=zg&password=123456
     * get post都支持,一半路径传参都用get请求
     * @param request
     */
    @RequestMapping(value = \"/add5\")
    public void add5(HttpServletRequest request) {
        String username = request.getParameter(\"username\");
        String password = request.getParameter(\"password\");
        log.info(\"打印参数:{}--{}\", username, password);
    }

二、传json参数

1、单个实体接收参数

    /**
     * http://localhost/toUser/add6
     * body: {\"username\":\"张刚\",\"password\":\"123456\"}
     * get post都可以
     *
     * @param user
     * @return
     */
    @RequestMapping(value = \"/add6\")
    public void add6(@RequestBody User user) {
        log.info(\"打印参数:{}--{}\", user.getUserName(), user.getPassword());
    }

2、实体嵌套实体接收参数

注解:

  • @RequestBody:该注解会把接收到的参数转为json格式

实体

@Data
@ToString
public class People {
    private Integer count;
    private String peoplename;
    private Student student;
}
@Data
@ToString
public class Student {
    private String studentname;
}
    /**
     * http://localhost:80/add7
     * body: {\"peoplename\":\"张刚\",\"student\":{\"studentname\":\"你好\"}}
     * get post都可以, body传参一般都用post
     * @param
     */
    @RequestMapping(value = \"/add7\")
    public void add7(@RequestBody People people) {
        log.info(\"打印参数:{}--{}\", people.getPeoplename(), people.getStudent().getStudentname());
    }

3、实体嵌套List接收参数

实体

@Data
@ToString
public class People {
    private Integer count;
    private String peoplename;
    private List<Student> student;
}
@Data
@ToString
public class Student {
    private String studentname;
}
    /**
     * http://localhost:80/add8
     * body: {\"peoplename\":\"张刚\",\"student\":[{\"studentname\":\"你好\"},{\"studentname\":\"很好\"}]}
     * get post都可以, body传参一般都用post
     * @param
     */
    @RequestMapping(value = \"/add8\")
    public void add8(@RequestBody People people) {
        List<Student> student = people.getStudent();
        student.stream().forEach(System.out::println);
        log.info(\"打印参数:{}--{}\", people.getPeoplename());
    }

4、Map接收参数

  /**
     * http://localhost:80/add9
     * body: {\"peoplename\":\"张刚\",\"student\":[{\"studentname\":\"你好\"},{\"studentname\":\"很好\"}]}
     * get post都可以, body传参一般都用post
     *
     * @param
     */
    @RequestMapping(value = \"/add9\")
    public void add7(@RequestBody Map<String, Object> map) {
        log.info(map.get(\"peoplename\").toString());
        List<Map<String, Object>> studentMapList = (List<Map<String, Object>>) map.get(\"student\");
        studentMapList.stream().forEach(System.out::println);
    }
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容