全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

对SpringMVC的@RequestParam的解释

自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赋值为null,注意是null而非0,因此参数都最好不要用基础类型。

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

浏览器显示:9

说明浏览器中只要有输入需要的参数即可,而不管是否包含多余的参数,且没有规定顺序。

③在浏览器中输入: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隔开)而不会影响这几个参数名一样的参数值构成“数组”,

相同的参数名的值将会被浏览器变成类似userName="zhang,li,fuck",告诉服务器这是个数组,这里的元素值的顺序则是跟在URL请求中的顺序是对应的。

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

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

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

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

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

以上这篇对SpringMVC的@RequestParam的解释就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# SpringMVC  # @RequestParam  # SpringMVC自定义参数绑定实现详解  # 浅谈@RequestParam 参数是否必须传的问题  # @RequestParam使用defaultValue属性设置默认值的操作  # SpringMVC注解@RequestParam方法原理解析  # 使用@RequestParam 绑定List参数  # 器中  # 则是  # 给大家  # 而非  # 的是  # 客户端  # 这是  # 我在  # 出了  # 第一个  # 才是  # 将会  # 就不  # 是指  # 可以用  # 说到  # 有多  # 就没  # 用了  # 希望能 


相关文章: 如何用VPS主机快速搭建个人网站?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  如何在阿里云高效完成企业建站全流程?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  安徽网站建设与外贸建站服务专业定制方案  如何在腾讯云免费申请建站?  制作证书网站有哪些,全国城建培训中心证书查询官网?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  建站之星后台管理:高效配置与模板优化提升用户体验  制作企业网站建设方案,怎样建设一个公司网站?  招贴海报怎么做,什么是海报招贴?  定制建站流程解析:需求评估与SEO优化功能开发指南  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  宝塔新建站点为何无法访问?如何排查?  c# await 一个已经完成的Task会发生什么  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  北京企业网站设计制作公司,北京铁路集团官方网站?  建站之星如何快速更换网站模板?  如何挑选高效建站主机与优质域名?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  建站之星微信建站一键生成小程序+多端营销系统  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  建站之星如何配置系统实现高效建站?  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何实现建站之星域名转发设置?  如何通过建站之星自助学习解决操作问题?  独立制作一个网站多少钱,建立网站需要花多少钱?  想学网站制作怎么学,建立一个网站要花费多少?  如何选择网络建站服务器?高效建站必看指南  建站VPS配置与SEO优化指南:关键词排名提升策略  c# 服务器GC和工作站GC的区别和设置  家具网站制作软件,家具厂怎么跑业务?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  高端网站建设与定制开发一站式解决方案 中企动力  如何快速搭建个人网站并优化SEO?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  如何高效利用200m空间完成建站?  模具网站制作流程,如何找模具客户?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  行程制作网站有哪些,第三方机票电子行程单怎么开?  深圳网站制作平台,深圳市做网站好的公司有哪些?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  如何在宝塔面板创建新站点?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  电商网站制作公司有哪些,1688网是什么意思? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。