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

 更新时间:2023年07月10日 09:46:53   作者:北漂IT民工_程序员_ZG  
这篇文章主要介绍了SpringMVC和SpringBoot接收参数的几种方式详解,Spring是分层的JavaSE/EE应用轻量级开源框架,以IoC和AOP为内核,提供了展现层 Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,需要的朋友可以参考下

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);
    }

到此这篇关于SpringMVC和SpringBoot接收参数的几种方式详解的文章就介绍到这了,更多相关Spring 接收参数的方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python虚拟环境venv用法详解

    Python虚拟环境venv用法详解

    这篇文章主要介绍了Python虚拟环境venv用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Python获取对象属性的几种方式小结

    Python获取对象属性的几种方式小结

    这篇文章主要介绍了Python获取对象属性的几种方式小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python线性回归实战分析

    Python线性回归实战分析

    这篇文章主要介绍了Python线性回归实战分析以及代码讲解,对此有兴趣的朋友学习下吧。
    2018-02-02
  • pandas 使用merge实现百倍加速的操作

    pandas 使用merge实现百倍加速的操作

    这篇文章主要介绍了pandas 使用merge实现百倍加速的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 使用Python编写Prometheus监控的方法

    使用Python编写Prometheus监控的方法

    今天小编就为大家分享一篇关于使用Python编写Prometheus监控的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Python面向对象程序设计之私有变量,私有方法原理与用法分析

    Python面向对象程序设计之私有变量,私有方法原理与用法分析

    这篇文章主要介绍了Python面向对象程序设计之私有变量,私有方法,结合实例形式分析了Python面向对象程序设计中私有变量,私有方法相关概念、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-03-03
  • 怎么解决pycharm license Acti的方法

    怎么解决pycharm license Acti的方法

    这篇文章主要介绍了怎么解决pycharm license Acti的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Pytorch中accuracy和loss的计算知识点总结

    Pytorch中accuracy和loss的计算知识点总结

    在本片文章里小编给大家整理的是关于Pytorch中accuracy和loss的计算相关知识点内容,有需要的朋友们可以学习下。
    2019-09-09
  • python如何将两张图片生成为全景图片

    python如何将两张图片生成为全景图片

    这篇文章主要为大家详细介绍了python如何将两张图片生成为全景图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • python tornado使用流生成图片的例子

    python tornado使用流生成图片的例子

    今天小编就为大家分享一篇python tornado使用流生成图片的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论