SpringBoot接值实现方法详解

 更新时间:2023年05月12日 11:22:19   作者:春哥的魔法书  
这篇文章主要介绍了SpringBoot接值实现方法,SpringBoot接值是指在SpringBoot应用程序中接收请求参数,从HTTP请求中获取参数,并将其绑定到Java对象中进行处理的过程,感兴趣想要详细了解可以参考下文

接值

通过方法的参数来接收请求传来值

请求时传值的方式有三种方式 :

  • URL?name=value
  • form表单
  • Ajax异步传值

接收传来的值有三类 :

  • 单一值
  • 对象
  • 数组

传值

URL?传值

URL?标识1=值1&标识2=值2

URL后面使用 ? 连接参数, 每组参数使用 = 连接标识与值, 多组参数使用 & 连接

以 超链接为例 , 通过URL? 进行传值

<a href="/test/test04?name=wang&age=12" rel="external nofollow" >test04</a> <br>

form表单传值

<input name="标识" value="值">

在表单中 可以 , , 等标签传递值, name属性 是传值的标识 , value属性 是要传递的值

以 表单为例, 进行传值

    <form action="/test/test04" method="post" >
        <input name="name" value="wang"> 
        <input name="age" value="12">
        <input type="submit" value="提交">
    </form>

Ajax异步传值

var data = { "标识1" : "值1", "标识2" : "值2" }

将 要传递的信息封装成 JSON 结构, 通过 Ajax异步进行传值

这里使用 JQuery 的 Ajax 写法 , 修改 fn 函数

    function fn() {
        var url = "/test/test04";
        var data = {"name":"wang", "age":12};
        $.ajax({
            async: true,
            type: "POST",
            url: url,
            data: data
        })
    }

接单一值

通过 方法的参数接单一结构的值

在Controller类中增加 test04 方法

    @RequestMapping("/test/test04")
    public String test04(String name , Integer age){
        System.out.println("name = " + name);
        System.out.println("age = " + age);
        System.out.println(" controller 中的测试方法 test 04 ");
        return "ref";
    }

在页面上分别点击 , 进行传值测试 在idea的控制台都可以看到接收到的值

注意 要测试 Ajax 页面要导入 JQuery的依赖 js 包

@RequestParam注解

在不使用 @RequestParam注解 的情况要 , 方法形式参数的名 要与传值的标识对应

使用@RequestParam注解后, 可以通过注解与传值的标识对应, 而方法的形式参数名就不受限制

修改 test04方法为 name参数增加 @RequestParam注解 , 并通过注解与传值标识匹配

    @RequestMapping("/test/test04")
    public String test04(@RequestParam("name") String n , Integer age){
        System.out.println("name = " + n);
        System.out.println("age = " + age);
        System.out.println(" controller 中的测试方法 test 04 ");
        return "ref";
    }

现在测试依然能得到 打印结果

@RequestParam注解属性

但 使用了@RequestParam注解后就必须传递对应的参数

当然也可以通过设置@RequestParam注解的属性进行调整

将页面表单中的 注释掉

    <form action="/test/test04" method="post" >
<!--        <input name="name" value="wang">-->
        <input name="age" value="12">
        <input type="submit" value="提交">
    </form>

再测试, 会报 400 异常

修改 @RequestParam注解的属性

required : 是否是必须的

defaultValue : 没有接到值时, 默认设置的值

    @RequestMapping("/test/test04")
    public String test04(@RequestParam(value = "name", required = false, defaultValue = "hello") String n , Integer age){
        System.out.println("name = " + n);
        System.out.println("age = " + age);
        System.out.println(" controller 中的测试方法 test 04 ");
        return "ref";
    }

对象接值

将传递信息封装成实体类对象, 通过实体类对象接值

创建实体类User

创建 entity 包(文件夹) , 在entity包(文件夹)下创建User实体类

User实体类

package com.yuan.entity;
import lombok.Data;
@Data
public class User {
    private String name;
    private Integer age;
}

增加新的处理方法

添加test05方法, 参数为 User 类

    @RequestMapping("/test/test05")
    public String test05(User user){
        System.out.println("name = " + user.getName());
        System.out.println("age = " + user.getAge());
        System.out.println(" controller 中的测试方法 test 05 ");
        return "ref";
    }

修改页面并测试

修改start.html页面请求URL

    <a href="/test/test05?name=wang&age=12" rel="external nofollow" >test05</a> <br>
    <form action="/test/test05" method="post" >
        <input name="name" value="wang">
        <input name="age" value="12">
        <input type="submit" value="提交">
    </form>

在浏览器发语法 , 就可以在idea控制台看到接收到信息

数组接值

传数组

多个相同的传值标识, 可以传递数组

修改start.html页面

    <a href="/test/test06?ids=1&ids=2&ids=3" rel="external nofollow" >test06</a> <br>
    <form action="/test/test06" method="post" >
        <input name="ids" value="1">
        <input name="ids" value="2">
        <input name="ids" value="3">
        <input type="submit" value="提交">
    </form>

增加接值方法test06并测试

    @RequestMapping("/test/test06")
    public String test06(Integer[] ids){
        System.out.println("Arrays.toString(ids) = " + Arrays.toString(ids));
        System.out.println(" controller 中的测试方法 test 06 ");
        return "ref";
    }

Ajax传数组一

传递 JS数组结构

修改start.html页面

    function fn() {
        var url = "/test/test07";
        // var data = { "ids" : [1, 2, 3] };
        var idss = $("[name=ids]").map(function () {
            return this.value
        }).get()
        var data = {"ids": idss}
        $.ajax({
            async: true,
            type: "POST",
            url: url,
            data: data
        });
    }

添加新的接值方法test07并测试, 注意这里增加 @RequestParam("ids[]") 注解

    @RequestMapping("/test/test07")
    public String test07(@RequestParam("ids[]") Integer[] ids){
        System.out.println("Arrays.toString(ids) = " + Arrays.toString(ids));
        System.out.println(" controller 中的测试方法 test 07 ");
        return "ref";
    }

字符串传数组

用 “,” 将信息连接成一个字符串进行传递

修改start.html页面

    <a href="/test/test06?ids=1,2,3" rel="external nofollow" >test06</a> <br>
    <form action="/test/test06" method="post" >
        <input name="ids" value="1,2,3">
        <input type="submit" value="提交">
    </form>

使用接值方法test06并测试

    @RequestMapping("/test/test06")
    public String test06(Integer[] ids){
        System.out.println("Arrays.toString(ids) = " + Arrays.toString(ids));
        System.out.println(" controller 中的测试方法 test 06 ");
        return "ref";
    }

Ajax传数组二

从 表单中获取数据, 组成数组, 再将数组使用 ","连接起来

修改start.html页面

    function fn() {
        var url = "/test/test06";
        var idss = $("[name=ids]").map(function () {
            return this.value
        }).get()
        console.log(idss)
        var data = {"ids": idss.join(",")}
        $.ajax({
            async: true,
            type: "POST",
            url: url,
            data: data
        });
    }

使用接值方法test06并测试

    @RequestMapping("/test/test06")
    public String test06(Integer[] ids){
        System.out.println("Arrays.toString(ids) = " + Arrays.toString(ids));
        System.out.println(" controller 中的测试方法 test 06 ");
        return "ref";
    }

到此这篇关于SpringBoot接值实现方法详解的文章就介绍到这了,更多相关SpringBoot接值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Springboot报错java.lang.NullPointerException: null问题

    Springboot报错java.lang.NullPointerException: null问题

    这篇文章主要介绍了Springboot报错java.lang.NullPointerException: null问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • JVM知识总结之垃圾收集算法

    JVM知识总结之垃圾收集算法

    本博客为读书笔记,读的是《深入理解Java虚拟机》一书,在看这个书的时候,最大的一个感受便是“当初怎么就没有好好学习操作系统呢,不然也不会有这么多看的云里雾里的地方了”,不过那都是过去的事了,学习最好的时刻便是现在,需要的朋友可以参考下
    2021-06-06
  • java面向对象设计原则之里氏替换原则示例详解

    java面向对象设计原则之里氏替换原则示例详解

    这篇文章主要为大家介绍了java面向对象设计原则之里氏替换原则示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2021-10-10
  • MyBatis 多表操作的实现

    MyBatis 多表操作的实现

    这篇文章主要介绍了MyBatis 多表操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 一篇文章带你了解Java基础-抽象

    一篇文章带你了解Java基础-抽象

    这篇文章主要给大家介绍了关于Java抽象定义以及举例的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • java super关键字知识点详解

    java super关键字知识点详解

    在本篇文章里小编给大家整理的是一篇关于java super关键字知识点详解内容,有兴趣的朋友们可以参考下。
    2021-01-01
  • Java排序之Comparable和Comparator比较器详解

    Java排序之Comparable和Comparator比较器详解

    这篇文章主要介绍了Java排序之Comparable和Comparator比较器详解,Comparable<T>是内部比较器,Comparator<T>是外部比较器,最推荐使用Comparator<T>接口排序,Comparator提供静态方法很方便,推荐使用,需要的朋友可以参考下
    2024-01-01
  • Springboot jdbctemplate整合实现步骤解析

    Springboot jdbctemplate整合实现步骤解析

    这篇文章主要介绍了Springboot jdbctemplate整合实现步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • jvm垃圾回收算法详细解析

    jvm垃圾回收算法详细解析

    这篇文章主要介绍了jvm垃圾回收算法详细解析,JVM有一套完整的垃圾回收算法,可以对程序运行时产生的垃圾对象进行及时的回收,以便释放JVM相应区域的内存空间,确保程序稳定高效的运行,但在真正了解垃圾回收算法之前,有必要对JVM的对象的引用做一个简单的铺垫
    2022-07-07
  • 一篇文章了解Jackson注解@JsonFormat及失效解决办法

    一篇文章了解Jackson注解@JsonFormat及失效解决办法

    这篇文章主要给大家介绍了关于如何通过一篇文章了解Jackson注解@JsonFormat及失效解决办法的相关资料,@JsonFormat注解是一个时间格式化注解,用于格式化时间,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11

最新评论