springboot项目中后端接收前端传参的方法示例详解

 更新时间:2023年06月13日 10:43:01   作者:Bruce1801  
这篇文章主要介绍了springboot项目中一些后端接收前端传参的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

先创建一个springboot项目,并在pom文件中添加web依赖:

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
</dependency>

创建user对象:

public class User {
    private String name;
    private Integer age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

创建一个controller:

@RestController
@RequestMapping("/store")
public class TestController {
}

1、java方法入参里面什么注解都没有

/**
     * 第一种:java方法入参里面什么注解都没有
     * */
    @RequestMapping("/noAnnotation")
    public String noAnnotation(User user){
        return user.toString();
    }

结果

适用于:请求参数比较少
缺点:请求参数比较多的时候,可能会丢参数,因为get请求有长度限制。

如果参数重复了,比如:http://localhost:8080/store/noAnnotation?age=18&age=20&name=yuanhaoz,参数中age有两个,一个等于18,另一个等于20,如果是int类型的则取最先声明的那个;如果是String类型的,则会叠加

2、@PathVariable这种方式接收URL路径参数作为参数

/**
     * 第二种:不使用?&来拼接参数
     * */
    @RequestMapping("/havaPathVariable/{name}/{age}")
    public String havaPathVariable(@PathVariable(value = "name")String name, @PathVariable(value = "age")int age ){
        return name+age;
    }

@PathVariable根据value将url中的参数取出来

结果:

适用于:参数比较少,以及动态接口情况

如何改成参数非必传:
不仅要在@PathVariable()中加required = false,还要设置多个url path,这是因为url要求带参,属于REST参数。

结果:

如果只设置required = false话,是无法请求的。

3、@RequestBody这种方式接收前端发送过来的请求体

/**
     * 第三种:@RequestBody
     * */
    @RequestMapping("/haveRequestBody")
    public String haveRequestBody(@RequestBody User user){
        return user.toString();
    }

结果:

这个注解会从http请求的body当中拿到json,并且反序列化成java对象
适用于:请求参数非常多(因为body没有长度限制)
如果参数重复了,无论什么类型取声明的最后一个

解析list怎么写
body:

controller:

解析嵌套对象怎么写
body:
在json中的每个对象里添加一个phone对象

创建phone对象(可以根据json中的phone对象创建所有字段,也可设置部分字段)

public class Phone {
    private String name;
    private String code;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    @Override
    public String toString() {
        return "Phone{" +
                "name='" + name + '\'' +
                ", code='" + code + '\'' +
                '}';
    }
}

User中要添加与json中对应的对象,才会将json中的嵌套对象解析出来。
在user对象中添加phone,并修改tostring方法;

controller:

结果:

4、RestFul风格 概念

Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

功能

资源:互联网所有的事物都可以被抽象为资源
资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。
分别对应 添加、 删除、修改、查询。
传统方式操作资源:通过不同的参数来实现不同的效果!方法单一,post 和 get
http://127.0.0.1/item/queryItem.action?id=1 查询,GET
http://127.0.0.1/item/saveItem.action 新增,POST
http://127.0.0.1/item/updateItem.action 更新,POST
http://127.0.0.1/item/deleteItem.action?id=1 删除,GET或POST
使用RestFul操作资源:可以通过不同的请求方式来实现不同的效果!如下:请求地址一样,但是功能可以不同!
http://127.0.0.1/item/1 查询,GET
http://127.0.0.1/item 新增,POST
http://127.0.0.1/item 更新,PUT
http://127.0.0.1/item/1 删除,DELETE
相比于传统方式使用链接来访问请求,Resful可以通过使用通过不同的请求方式来达到不同的效果

基本使用

    @RequestMapping("/noAnnotation",method = {RequestMethod.GET})
    public String noAnnotation(User user){
        return user.toString();
    }

也可通过将RequestMapping替换为:

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping

例如:

    @GetMapping("/noAnnotation")
    public String noAnnotation(User user){
        return user.toString();
    }

注:所有的地址栏请求默认都会是 HTTP GET 类型的。

到此这篇关于springboot项目中一些后端接收前端传参的方法的文章就介绍到这了,更多相关springboot后端接收前端传参内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Springbean的几种注入方式都了解吗

    Springbean的几种注入方式都了解吗

    这篇文章主要介绍了Springbean的几种注入方式都了解吗,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Java8新特性之精简的JRE详解_动力节点Java学院整理

    Java8新特性之精简的JRE详解_动力节点Java学院整理

    这篇文章主要介绍了Java8新特性之精简的JRE详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • 原生Java操作兔子队列RabbitMQ

    原生Java操作兔子队列RabbitMQ

    这篇文章主要介绍了原生Java操作兔子队列RabbitMQ,MQ全称为Message Queue,即消息队列,“消息队列”是在消息的传输过程中保存消息的容器,需要的朋友可以参考下
    2023-05-05
  • java判断一个文件是否为二进制文件的方法

    java判断一个文件是否为二进制文件的方法

    这篇文章主要介绍了java判断一个文件是否为二进制文件的方法,涉及java针对文件的读取及编码判断技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • java中自定义Spring Security权限控制管理示例(实战篇)

    java中自定义Spring Security权限控制管理示例(实战篇)

    本篇文章主要介绍了java中自定义Spring Security权限控制管理示例(实战篇) ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02
  • java.text.DecimalFormat类十进制格式化

    java.text.DecimalFormat类十进制格式化

    这篇文章主要为大家详细介绍了java.text.DecimalFormat类十进制格式化的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Jmeter工作原理及常见错误解析

    Jmeter工作原理及常见错误解析

    这篇文章主要介绍了Jmeter工作原理及常见错误解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 初识JAVA数组

    初识JAVA数组

    java语言中,数组是一种最简单的复合数据类型。数组是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和下标来唯一地确定数组中的元素。数组有一维数组和多维数组。
    2014-08-08
  • 浅析Jmeter多用户token使用问题

    浅析Jmeter多用户token使用问题

    这篇文章主要介绍了Jmeter多用户token使用问题,通过具体的例子给大家介绍了Jmeter多用户token使用场景接口分析,需要的朋友可以参考下
    2021-10-10
  • 使用BindingResult 自定义错误信息

    使用BindingResult 自定义错误信息

    这篇文章主要介绍了使用BindingResult 自定义错误信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10

最新评论