SpringMVC的@RequestParam的解释

振动能量采集技术:从原理到实战,破解物联网供电难题 能量采集技术旨在捕获环境中的废弃能量(如机械振动、热能、光能)并将其转化为电能,其核心原理在于通过压电、电磁、静电或摩擦电等物理效应实现能量形式的转换。这项技术的核心价值在于为物联网(IoT)中难以布线或更换电池的分布式传感器节点、植入式医疗设备等提供近乎永续的电力解决方案,从而解决物联网部署的“最后一米供电”瓶颈。其应用场景广泛覆盖工业预测性维护、结构健康监测、可穿戴设备及消费电子等领域。本文聚焦于振动能量采集这一细分方向,深入剖析了压电式、电磁式、电容式及摩擦纳米发电机(TENG)等主流技术路线的实战考 阅读详情

 

目录

自SpringMVC4.2之后,RequestParam内部有4个参数:

1、String name

2、String value

3、boolean required

4、String defaultValue

其中name和value分别是对方的别名,即二者没区别,我个人比较喜欢用name,因为它的某些特性使得name这个名字更直观,下面会说到。

先看第一个映射方法的定义:

@RequestMapping("/paramTest0")
    public @ResponseBody String paramTest(Long id){
        String result = "";
        result += id;
        return result;
    }

①然后我在浏览器地址栏上输入:http://localhost:8080/test/hello/paramTest0

浏览器显示:null

这里引申出了SpringMVC的一个特性,即当浏览器中没有输入相应参数和值,那么SpringMVC不会给id赋值即id值是默认值null,因此参数都最好不要用基础类型。

②在浏览器中输入:http://localhost:8080/test/hello/paramTest0?userName=zhang&userName=li&id=9&userName=shit

浏览器显示:9

说明浏览器中只要有输入需要的参数即可,而不管是否包含多余的参数,且没有规定顺序(因为后台是可以根据key来获取值的,而如果是通过QueryString则顺序也不影响解析参数)。

③在浏览器中输入:http://localhost:8080/test/hello/paramTest0?id=6

显示为:6

这个就不解释了。

#########################################分隔符##################################################

再看第二个映射方法的定义:

    @RequestMapping("/paramTest")
    public @ResponseBody String paramTest(@RequestParam(name="userName", required = false) String[] userNames, Long id){
        String result = "";
        if(userNames != null){
            for(int i=0;i<userNames.length;i++){
                result += userNames[i] + "#";
            }
        }
        result += id;
        return result;
    }

①然后在浏览器输入:http://localhost:8080/test/hello/paramTest?userName=zhang&userName=li&id=5&userName=fuck

显示为:zhang#li#fuck#5

由此引申出:首先URL请求的参数部分可以有多对参数的参数名一样,如上面的userName,且它们中间可以用其它参数隔开(上面用了id=5隔开)而不会影响这几个参数名一样的参数值构成“数组”(对于浏览器而言它只是URL中的字符串而已是否重复没半毛钱关系,Tomcat也不会主动将它拼成数组),

相同的参数名的值会被SpringMVC通过request.getQueryString()方法获取完整的参数然后再将相同key的Entry转换成数组(应该是SpringMVC判断参数里有数组就不用getParameter方法而用getQueryString方法获取参数),这里的元素值的顺序则是跟在URL请求中的顺序是对应的。

然后看我们方法参数里的是userNames而非userName,但是仍然显示正确,这是因为RequestParam的name或value属性的值userName才是和

浏览器那边传过来的参数名对应(个人认为这是name比value更直观一点的原因),而它注解的参数userNames就是

此注解"userName"要“赋值”的变量(或说SpringMVC因为有RequestParam而做了个参数映射将客户端请求中的参数值映射到相应方法的参数上,即userNames)。

还要注意,一个@RequestParam只能注解一个参数,即后面的Long id上是没有该注解的。

RequestParam中的required是指这个参数是否客户端必须提供,defaultValue则是如果没有提供该参数默认值是什么(故required=true, defaultValue="xxx"就没意义了)。

 

YOLOV26详解 从原理到部署 计算机视觉领域最具影响力的目标检测框架迎来重大里程碑。2026年1月,Ultralytics 正式发布 YOLOv26——这不是一次简单的版本迭代,而是一场面向边缘计算时代的架构重构。本专栏基于 Ultralytics 官方技术白皮书、YOLO Vision 2025 大会首发内容及国际前沿研究成果,系统拆解 YOLOv26 从算法原理到工程落地的全栈技术体系。与常规教程不同,我们聚焦与,帮助你在端侧 AI 部署的实战中掌握核心竞争力。 阅读详情

相关推荐

保姆级教程:用GPU-Burn给你的NVIDIA Tesla服务器做个“压力体检”(附温度功耗监控脚本)

本文提供了一份详细的GPU服务器压力测试指南,重点介绍如何使用GPU-Burn工具对NVIDIA Tesla服务器进行全面的性能测试和温度功耗监控。从环境部署、多GPU测试策略到专业级监控指标解析,帮助运维人员构建标准化的GPU健康评估体系,确保AI训练和科学计算等关键业务的稳定性。

weixin_30619101的博客 395

【详解】@RequestParam注解的用法

@RequestParam用于将指定参数赋值给方法中的形参。意思就是标注浏览器地址栏参数名称。 @RequestParam有3个名称: 1、 value:在浏览器地址栏请求参数的名称,如http://localhost:8080/login?name=zhangsan ,也就是@RequestParam(value = "name") 如果不写value的值,则默认形参的参数名为该变量名,http://localhost:8080/login?userName=zhangsa...

CodingLJ 8195

spdk + fio测试nvme 设备的性能

fio的测试对象可以是块设备、文件等,在spdk的使用过程中会unbind默认的nvme driver,所以在系统中是看不到nvme块设备的,在spdk中可以通过fio_plugin的方式,将spdk的用户态driver部分的io功能打包成一个ioengine提供给fio使用,可以综合spdk的高性能和fio提供的复杂场景。更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加。这个jobfile是spdk中提供的例子。领取,关注我持续更新哦!2.7 jobfile的例子。

lingshengxiyou的博客 1089

@PathVariable,@RequestParam中的name和value

@PathVariable中有个属性value常用,不过里面还有个name。 如果两个属性同时使用会报错的,今天遇到了记录一下,从报错信息上来看name应该是value的别名,它们两个中只有一个能被允许存在。name其实就是我们在前台页面的表单中input中的name,用来解决前后台传入参数不一致的问题。比如前台通过ajax传入后台的参数名是phone,然而后台想接受的phoneNum并且后台代...

cauchy6317的博客 1万+

深度学习与神经网络有什么区别

人工神经网络(ArtificialNeuralNetwork,即ANN)是从信息处理角度对人脑神经元网络进行抽象,是20世纪80年代以来人工智能领域兴起的研究热点,其本质是一种运算模型,由大量的节点(或称神经元)之间相互联接构成,在模式识别、智能机器人、自动控制、生物、医学、经济等领域已成功地解决了许多现代计算机难以解决的实际问题,表现出了良好的智能特性。...

super67269的博客 8488

DDR4内存PCB设计实战:8层板Fly-by拓扑信号完整性优化

本文深入探讨了DDR4内存条在8层PCB板上采用Fly-by拓扑时的信号完整性优化实战。文章详细解析了层叠规划、阻抗控制、电源分割、等长布线及串扰抑制等关键设计要点,并强调了仿真验证的重要性,为硬件工程师提供了从理论到实践的完整设计指南与自查清单。

weixin_29296241的博客 340

@RequestParam name和value属性的区别

RequestParam内部有4个参数: 1、String name; 2、String value; 3、boolean required; 4、String defaultValue; 源码中name的别名是value,value的别名是name, 所以说name和value两个属性基本是等价的,都是获取从前台传入的参数 ...

wenyixicodedog的博客 8535

告别Keil手动分区!用CubeMX+VS Code一键生成带Bootloader的STM32 OTA工程

本文详细介绍了如何利用STM32CubeMX和VS Code实现STM32 OTA工程的自动化构建,告别传统Keil手动分区的繁琐流程。通过图形化配置Flash分区、自动生成链接脚本以及实现Bootloader跳转逻辑,开发者可以高效完成远程升级功能开发,显著提升嵌入式开发效率。

weixin_33720956的博客 389

@RequestParam注解

这样,即使请求中没有指定"param"参数,方法也可以正常执行,并使用默认值。注解时,可以使用一些属性来指定参数的名称、默认值、是否必需等信息。:指定请求参数的默认值。如果请求中没有指定该参数,将会使用默认值。表示如果请求中没有"param"参数,则将使用默认值"default"。表示将请求中名为"param"的参数的值绑定到方法的参数上。,并且请求中没有指定该参数,将会抛出异常。属性指定了请求参数的名称为"param",属性作用相同,用于指定请求参数的名称。:指定请求参数是否是必需的,默认值为。

qq_61818443的博客 1281

Lammps实现结冰匀相成核

Lammps实现结冰匀相成核

Rockyoung 3846

EtherCAT主站教程3--适配伺服驱动器(模式配置)

目前通用的伺服驱动器的位置模式、速度模式以及其他模式是伺服系统中常见的控制模式,切换这些模式通常需要根据具体的伺服驱动器型号和控制协议(如EtherCAT、CANopen、Modbus等)进行配置。以下是这些模式的概述及切换方法的一般性指导:协议规范中,一共有以下几种模式:其中模式1、3、6对于比较常用,也更容易上手。

weixin_52626887的博客 793

SpringMVC注解@RequestParam(value="xxxx",required=false)解释

正则表达式

蜂蜜柚子茶 5598

luks-磁盘加密工具

linux磁盘加密配置工具及步骤详解

zdd56789的博客 120

SpringMVC @RequestParam注解

SpringMVC后台Controller中获取前段页面request中的参数 的方法主要是两种: 1.request.getParameter(“name”);2.@RequestParam直接获取,如下:public void getUser( @RequestParam String userName, @RequestParam String userPassw

机器人、嵌入式工程师 7572

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SpringMvc中controller接收前端参数-@RequestBody和@RequestParam

目录 controller使用实体类接收json数据 接收路径上的单独参数 controller使用实体类接收json数据 注解:@RequestBody ​​​​​​​@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody,前端要用POST方式进行提交 一个请求,只有一个RequestBody;一个请求,可以有多个RequestParam。 @PostMapping("/test.

瑶山的博客 3659

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

@RequestParam与@PathVariable的区别

在spring MVC中,两者的作用都是将request里的参数的值绑定到contorl里的方法参数里的,区别在于,URL写法不同。 使用@RequestParam时,URL是这样的:http://host:port/path?参数名=参数值 使用@PathVariable时,URL是这样的:http://host:port/path/参数值 例如: @RequestMappin

骨哥博客 7916

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SpringMVC注解@RequestParam全面解析

一、基本使用,获取提交的参数 @RequestMapping("testRequestParam") public String filesUpload(@RequestParam String inputStr, HttpServletRequest request) { System.out.println(inputStr); int ...

诚 214

springmvc基础知识(21):springmvc常用注解

@Controller@Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如下特点:    不需要继承任何类, 也不需要实现任何接口    可以处理多个请求    可以使用Servlet的相关特性 springmvc容器自动扫描所有被@Controller注解的类, 并将其注册为springmvc容器的bean。Dispa...

YellowStar的博客 4337

SpringMVC中@RequestParam和@RequestBody注解

该参数是否为必传项。默认是true,表示请求中一定要传入对应的参数,否则会报404错误,如果设置为false时,当请求中没有此参数,将会默认为null,而对于基本数据类型的变量,则必须有值,这时会抛出空指针异常。请求中传入参数的名称,如果不设置后台接口的value值,则会默认为该变量名。比如上图中第一个参数如果不设置value=“page”,则前端传入的参数名必须为pageNum,否则在后台接口中pageNum将接收不到对应的数据。参数的默认值,如果请求中没有同名的参数时,该变量默认为此值。

weixin_44249746的博客 653

@RequestParam,@PathVariable注解的区别

参考:https://blog.youkuaiyun.com/u011410529/article/details/66974974 @RequestParam和@PathVariable注解是用于从request中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam是从request里面拿取值,而@PathVariable是从一个URI模板里面来填充 @RequestParam http://localhost:8080/springmvc/hello/101?param1=10...

服务端开发进阶之路 186

谈谈关于@RequestParam注解

我们知道RequestParam中有三个参数值1、关于执行流程① name(value) → 从请求中提取对应名字的参数 ↓ ② 判断:请求里有没有拿到这个参数 ├─有参数 → 直接拿前端传的值,结束,required、defaultValue都不触发 └─,进入下面逻辑 ↓ ③ 如果写了 defaultValue → 使用默认值注意赋null值也算默认,注意我的意思是只要你写了defaultValue不管你有没有赋值都不会执行required),

yu7299的博客 174

springMVC的注解@RequestParam与@PathVariable的区别

1、在SpringMVC后台控制层获取参数的方式主要有两种, 一种是request.getParameter(“name”),另外一种是用注解@RequestParam直接获取。 这里主要讲这个注解 @RequestParam 接下来我们看一下@RequestParam注解主要有哪些参数: value:参数名字,即入参的请求参数名字,如username表示请求的参数区中的名字为usernam

小树不倒我不倒 610

springmvc中@PathVariable和@RequestParam的区别

我的url;  http://localhost:8080/Springmvc/user/page.do?pageSize=3&pageNow=2  在controller中这么写:  @RequestMapping(value="/page.do/{pageSize}/{pageNow}")  public String page(@PathVariable int pageSize

xwq911的专栏 381
上一篇: 注解@RequestParam与@RequestBody的使用场景
下一篇: 如何通过ajax上传实体参数,springboot后台接口接收实体对象
It_BeeCoder
博客等级 码龄10年 967粉丝 238原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值