当前位置: 首页 > article >正文

Spring Boot参数处理秘籍:从手动到自动的华丽蜕变

🔥Spring Boot参数处理秘籍:从手动到自动的华丽蜕变🔥

文章目录

  • 🔥Spring Boot参数处理秘籍:从手动到自动的华丽蜕变🔥
  • 一、简单参数
  • 二、实体参数
  • 三、数组集合参数
  • 四、日期参数
  • 五、Json参数
  • 六、路径参数

🚀 开篇寄语:
还在为Spring Boot中的参数处理而手忙脚乱吗?这篇秘籍将带你从原始的HttpServletRequest手动获取参数,一路进阶到Spring Boot的自动化参数绑定,让你的代码更加简洁、高效!无论你是初学者还是有一定经验的开发者,都能从中找到提升技能的关键点。

📖 精彩预告:

原始方式:
HttpServletRequest手动获取参数
繁琐的字符串解析,手动类型转换,一切尽在掌握,但效率有待提高。

Spring Boot自动化参数绑定
支持自动类型转换,方法形参直接接收请求参数,代码简洁明了。
形参名与请求参数名一致时,无需额外注解,直接使用。
形参名与请求参数名不一致时,使用@RequestParam注解轻松解决。

实体参数接收
简单实体对象,复杂嵌套对象,请求参数名与对象属性名保持一致,一键接收。
无需手动解析JSON,Spring Boot自动将请求参数封装为对象。

数组与集合参数处理
使用数组或集合接收多个请求参数,轻松应对多样化需求。

日期参数格式化
使用@DateTimeFormat注解,自定义日期格式,让日期处理更加灵活。

JSON参数处理
JSON数据键名与形参对象属性名一致,使用@RequestBody注解一键接收。

路径参数传递
通过URL路径直接传递参数,使用@PathVariable注解轻松获取。

💡 为什么值得一读:
实战导向: 通过具体实例,展示Spring Boot参数处理的精髓。
高效学习: 去除冗长理论,直击要点,助你快速掌握。
简洁明了: 语言简洁,符合开发者口味,一读即懂。

一、简单参数

1. 原始方式
在原始的web程序,通过HttpServletRequest对象手动获取
例如请求url为:http://localhost:8080/testParam?name=jack&age=12

    @RequestMapping("/testParam")
    public String testParam(HttpServletRequest request){
        String name = request.getParameter("name");
        String ageStr = request.getParameter("age");
        int age = Integer.parseInt(ageStr);
        System.out.println(name+" : "+age);
        return "OK";
    }

可以看到获取到的参数都是String类型变量,其他类型的变量还需要自己手动转换一下,比较繁琐。

2. spring boot方式(自动类型转换)
spring boot支持自动类型转换,使用方法如下:
public String 方法名(类型1 变量名1,类型1 变量名1,···)

    @RequestMapping("/testParam1")
    public String testParam1(String name, Integer age){
        System.out.println(name+" : "+age);
        return "OK";
    }

可以发现,代码非常简洁,极大的减少了代码量。
注意:方法形参名必须和请求参数名称一致 (形参名==请求参数名)

3. 方法形参名必须和请求参数名不一致(@RequestParam注解)

    @RequestMapping("/testParam2")
    public String testParam2(@RequestParam(name = "name") String username, Integer age){
        System.out.println(username+" : "+age);
        return "OK";
    }

二、实体参数

简单的实体对象:

	public class User {
    	private String name;
    	private Integer age;
	}

复杂的实体对象

public class Address {
    String province;
    String city;
}
public class User {
    private String name;
    private Integer age;
    private Address address;
}

请求的参数名和对象的属性名保持一致(参数名==属性名)

    @RequestMapping("/testPojo")
    public String testPojo(User user){
        System.out.println(user);
        return "OK";
    }

三、数组集合参数

1. 使用数组接收参数

    @RequestMapping("/arrayParam")
    public String arrayParam(String[] hobby){
        System.out.println(Arrays.toString(hobby));
        return "OK";
    }

2. 使用集合接收参数

    @RequestMapping("/arrayParam")
    public String arrayParam(String[] hobby){
        System.out.println(Arrays.toString(hobby));
        return "OK";
    }

四、日期参数

使用@DateTimeFormat 注解调整数据格式

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

五、Json参数

JSON数据键名形参对象属性名需保持相同,定义POJO类型形参可以接收参数,需要使用@RequestBody注解标识

    @RequestMapping("/jsonParam")
    public String jsonParam(@RequestBody User user){
        System.out.println(user);
        return "OK";
    }

六、路径参数

通过url直接传递参数,比如http://localhost:8080/path/1

    @RequestMapping("/path/{id}")
    public String jsonParam(@PathVariable Integer id){
        System.out.println(id);
        return "OK";
    }

​ 🔥 结语:
希望本文能够帮助读者更好地理解和运用Spring Boot获取请求参数的相关知识,为Web开发之路打下坚实的基础。
别再为Spring Boot中的参数处理而烦恼了!跟随这篇秘籍,从手动到自动,一步步提升你的开发效率。相信在不久的将来,你也能成为Spring Boot参数处理的高手!赶快行动起来吧!


http://www.kler.cn/a/402249.html

相关文章:

  • css:浮动
  • 服务器上部署并启动 Go 语言框架 **GoZero** 的项目
  • C++ —— 剑斩旧我 破茧成蝶—C++11
  • macOS 的目录结构
  • 苹果ASA归因对接以及API接入
  • Linux高阶——1116—环形队列生产者消费者
  • 优选算法 - 4 ( 链表 哈希表 字符串 9000 字详解 )
  • 【Android】线程池的解析
  • 【西瓜书】机器学习的模型评估
  • Spark RDD 中的 repartition 和 coalesce 是两种常用的分区调整算子的异同点
  • MMaction2:常见问题解答
  • 【AI+教育】一些记录@2024.11.16
  • 从0开始学习机器学习--Day26--聚类算法
  • vxe-table 表格多选启用快捷选择功能,鼠标滑动范围选择功能
  • 【Java系列】优化spring boot项目的启动加载,减少启动时的资源耗费的几种方案
  • 【MySQL-3】表的约束
  • 接口文档判断返回 List 还是 Array
  • 《Django 5 By Example》阅读笔记:p165-p210
  • [JavaWeb]微头条项目
  • UE5开发记录-如何解决播放完开始动画Sequence然后再显示UI?