SpringBoot Controller接收参数的几种常用方式

 更新时间:2023年07月19日 09:03:07   作者:猴猴小扣  
这篇文章主要介绍了SpringBoot Controller接收参数的几种常用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

SpringBoot Controller接收参数的常用方式

在Controller中加入@RestController,效果等于@Controller + @ResponseBody

1 请求路径参数

直接把表单里面的参数写进 Controller 相应方法的形参中去,这个获取参数的方法适合get提交,而不适合post提交。

@PathVariable获取(这个当然不分get和post了,是url提取嘛)

    @RequestMapping("/userInfo/{id}")
    public String userInfo(@PathVariable String id) {
        System.out.println(id);
        return id;
    }

http://localhost:8080/userInfo/142857

@RequestParam获取查询参数,如url?id=1428571

  • 当请求参数名与方法形参变量名相同时,可不加@RequestParam注解
  • @RequestParam注解的required属性默认为true,若参数不是必须传递需改为false
    @RequestMapping("/userInfo")
    public String userInfo(@RequestParam(name = "id") String id) {
        System.out.println(id);
        return id;
    }

http://localhost:8080/userInfo?id=12345671

2 实体参数

通过建立一个bean来获取参数:

package com.example.helloworld.model;
public class User {
    private String id;
    private String name;
    private Notebook notebook;
    User(String id, String name) {
        this.id  = id;
        this.name = name;
        this.notebook = new Notebook();
    }
    public String getName() {
        return name;
    }
}
@RequestMapping("/userInfo")
    public String userInfo(User user) {
        System.out.println(user.getName());
        return user.getName();
    }

http://localhost:8080/problemBook?id=142857&time=2022-01-01 00:00:00

3 日期参数

http://localhost:8080/problemBook?id=142857&time=2022-01-01 00:00:00

@RequestMapping("/problemBook")
    public String problemBook(String id, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime time) {
        System.out.println(id);
        System.out.println(time);
        return "OK";
    }

但“yyyy-MM-dd”就识别有问题……

4 Json Body参数

通常用于Post请求。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UC3GsHzo-1685868352014)(【SpringBoot】SpringBoot-Controller接收参数的常用方式/image-20230604162017983.png)]

使用RequestBody注解。

@PostMapping("/finishProblem")
    public String finishProblem(@RequestBody User user) {
        System.out.println(user.getName());
        return "OK";
    }

也可以使用一个map接收:

    @PostMapping("/finishProblem")
    public String finishProblem(@RequestBody Map<String, String> params) {
        System.out.println(params.get("uid"));
        System.out.println(params.get("problemId"));
        return "OK";
    }

5 返回结果

@ResponseBody用于Controller类或者方法上,将方法返回值直接响应,若返回值类型是实体对象或者集合,将转为json格式相应。

为了有统一的返回方式,定义统一响应结果Result

package com.example.helloworld.controller;
/**
 * code response状态码
 * obj 返回给前端的数据
 * message 附加信息,说明具体情况
 */
public class Result {
    public int code;
    public String message;
    public Object data;
    public Result(int code, String message, Object data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }
    public static Result success(Object data) {
        return new Result(200, "success", data);
    }
    public static Result success() {
        return new Result(200, "success", null);
    }
    public static Result error(String message) {
        return new Result(404, message, null);
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • socket编程时的发送与接收数据时的问题解析

    socket编程时的发送与接收数据时的问题解析

    这篇文章主要为大家介绍了socket编程时的发送与接收数据时的问题解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Java中的static静态变量、静态方法超详细讲解

    Java中的static静态变量、静态方法超详细讲解

    Java中的static关键字用于表示静态变量和静态方法,静态变量是类的成员变量,它们属于类本身,而不是类的实例,这篇文章主要给大家介绍了关于Java中static静态变量、静态方法详细讲解的相关资料,需要的朋友可以参考下
    2024-06-06
  • SpringBoot启动参数的实现

    SpringBoot启动参数的实现

    SpringBoot通过jar文件方式启动,配置可以通过启动参数进行覆盖,本文就来介绍一下SpringBoot启动参数的实现,感兴趣的可以了解一下
    2025-01-01
  • Java常用的八种排序算法与代码实现

    Java常用的八种排序算法与代码实现

    这篇文章主要给给大家分享Java常用的八种排序算法与代码实现,下面文章将详细介绍整个实现过程,感兴趣的小伙伙伴可以跟着小编一起来学习,希望对你有所帮助
    2021-10-10
  • 基于StringBuilder类中的重要方法(介绍)

    基于StringBuilder类中的重要方法(介绍)

    下面小编就为大家带来一篇基于StringBuilder类中的重要方法(介绍)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 浅析SpringBoot自动化配置原理实现

    浅析SpringBoot自动化配置原理实现

    这篇文章主要介绍了浅析SpringBoot自动化配置原理实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 使用JAVA实现http通信详解

    使用JAVA实现http通信详解

    本文给大家汇总介绍了几种java实现http通讯的方法,非常的简单实用,有需要的小伙伴可以参考下。
    2015-08-08
  • spring声明式事务管理解析

    spring声明式事务管理解析

    这篇文章主要为大家详细介绍了spring声明式事务管理,对spring事务管理进行深入了解,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • ActiveMQ基于zookeeper的主从(levelDB Master/Slave)搭建

    ActiveMQ基于zookeeper的主从(levelDB Master/Slave)搭建

    这篇文章主要介绍了ActiveMQ基于zookeeper的主从levelDB Master/Slave搭建,以及Spring-boot下的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • SpringBoot Mybatis动态数据源切换方案实现过程

    SpringBoot Mybatis动态数据源切换方案实现过程

    这篇文章主要介绍了SpringBoot+Mybatis实现动态数据源切换方案过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04

最新评论