spring获取controller参数过程

news/2024/11/29 5:29:20/

handler在调度controller的方法之前会对HTTP参数和上下文进行解析,将其转换为控制器所需参数,然后传递给控制权。
有四种参数:

  • 查询参数(Query Parameters)在url后面的?后的参数
    https://example.com/search?q=apple&category=fruits&page=1
  • 路径参数(Path Parameters)
    https://example.com/users/{userId}/posts/{postId}
  • 请求头中的参数(通常情况下,请求头中包含的参数是标准化的元数据和授权信息,但也可以在请求头中携带自定义的参数)
    Host: example.com
    Authorization: Bearer token123
    X-Custom-Header: value123
  • 请求体中的JSON或者表格参数

在无注解下获取URL中的查询参数(Query Parameters)

请求URL:http://localhost:8080/my/no/annotation?iniVal=10&longVal=200

@GetMapping("/no/annotation")
@ResponseBody
public String noAnnotation(int intVal,long longVal){ 
return "success"
};

在URL中的参数和Controller方法中的参数名一致

使用@RequestParam获取URL的查询参数(Query Parameters)

请求URL:http://localhost:8080/my/no/annotation?ini_val=10&longVal=200

@GetMapping("/no/annotation")
@ResponseBody
public String noAnnotation(@RequestParam(value="int_val",required=false)int intVal,long longVal){ 
return "success"
};

无注解下自动获取URL的查询参数(Query Parameters)数组

请求URL:http://localhost:8080/my/no/annotation?iniVal=1,2,3&longVal=4,5,6

@GetMapping("/no/annotation")
@ResponseBody
public String noAnnotation(int【】 intVal,long【】 longVal){ 
return "success"
};

获取HTTPbody中的json对象

@GetMapping("/insert")
@ResponseBody
public String noAnnotation(@RequestBody User user){ 
return user;
};

@ResquestBody接收前端的JSON请求体(JSON对象的属性名称和User类的属性名称必须一致),这样就能将JSON请求对象转换为Java对象。

获取HTTP的路径参数

@GetMapping("/{id}")
@ResponseBody
public User get(@PathVariable("id") long id){};

自定义参数转换规则

@Component
public class StringToUserConverter implements Converter<String,User>{@Overridepublic User convert(String userStr){.....return user;}
}

实现Converter接口,使用@Component标注,注册到ioc中,handler会自动找到这个进行参数转换。

当你注册了自定义的转换器后,它会覆盖Spring MVC 默认的参数转换规则。这意味着当Spring MVC 遇到需要将字符串转换为User对象的情况时,会优先使用你提供的StringToUserConverter来执行转换,而不是使用默认的转换规则。

实现CenericConverter集合和数组的转换


http://www.ppmy.cn/news/1446216.html

相关文章

分享一个网站实现永久免费HTTPS访问的方法

免费SSL证书作为一种基础的网络安全工具&#xff0c;以其零成本的优势吸引了不少网站管理员的青睐。要实现免费HTTPS访问&#xff0c;您可以按照以下步骤操作&#xff1a; 一、 选择免费SSL证书提供商 选择一个提供免费SSL证书的服务商。如JoySSL&#xff0c;他们是国内为数不…

费曼学习法个人总结-1

2024年4月27日 1&#xff0c;知道它叫什么和懂得它是什么是两件事&#xff0c;要了解事物的本质&#xff0c;不应该只是了解名字。 2&#xff0c;输出倒逼输入。 3&#xff0c;实施的5步骤 调整心态&#xff0c;开始行动指定目标&#xff0c;养成习惯找对方法&#xff0c;高…

你用过最好用的AI工具有哪些?【模板】

你用过最好用的AI工具有哪些&#xff1f; 简介&#xff1a;探讨人们在使用AI工具时&#xff0c;最喜欢的和认为最好用的工具是哪些&#xff0c;展示AI技术的实际应用和影响。 提醒&#xff1a;在发布作品前&#xff0c;请把不需要的内容删掉。 方向一&#xff1a;常用AI工具 提…

Go 语言变量

变量来源于数学&#xff0c;是计算机语言中能储存计算结果或能表示值抽象概念。 变量可以通过变量名访问。 Go 语言变量名由字母、数字、下划线组成&#xff0c;其中首个字符不能为数字。 声明变量的一般形式是使用 var 关键字&#xff1a; var identifier type 可以一次声…

【论文速读】|理解基于大语言模型的模糊测试驱动程序生成

本次分享论文&#xff1a;Understanding Large Language Model Based Fuzz Driver Generation 基本信息 原文作者&#xff1a;Cen Zhang, Mingqiang Bai, Yaowen Zheng, Yeting Li, Xiaofei Xie, Yuekang Li, Wei Ma, Limin Sun, Yang Liu 作者单位&#xff1a;南洋理工大学…

【35分钟掌握金融风控策略14】AB测试和随机测试策略调优

目录 AB测试和随机测试策略调优 AB测试 AB测试应用举例 随机测试 随机测试应用举例 AB测试和随机测试策略调优 为了监控和优化线上运行的策略&#xff0c;往往会从原流量中切出一定比例的流量执行测试策略待测试完成后&#xff0c;通过分析测试结果&#xff0c;可评估线上…

Android kotlin创建App实例

Android kotlin创建App实例 正常情况下&#xff0c;代码如下 class MyApp : Application() {override fun onCreate() {super.onCreate()instance this}companion object {private var instance: Application? nullfun instance() instance!!} }在这个情景下&#xff0c;…

【论文阅读】IPT:Pre-TrainedImageProcessingTransformer

Pre-TrainedImageProcessingTransformer 论文地址摘要1. 简介2.相关作品2.1。图像处理2.2。 Transformer 3. 图像处理3.1. IPT 架构3.2 在 ImageNet 上进行预训练 4. 实验4.1. 超分辨率4.2. Denoising 5. 结论与讨论 论文地址 1、论文地址 2、源码 摘要 随着现代硬件的计算能…