一、@RequestParam

这个注解用来绑定单个请求数据,既可以是url中的参数,也可以是表单提交的参数和上传的文件
它有三个属性,value用于设置参数名,defaultValue用于对参数设置默认值,required为true时,如果参数为空,会报错
好,下面展示具体例子:
首先是vm:
<h1>param1:${param1}</h1>
<h1>param2:${param2}</h1>
好吧,就为了展示两个参数
第一种情况:
@RequestMapping(value = "/hello1.htm")
public String hello1(ModelMap modelMap,Integer param1, int param2) {
modelMap.addAttribute("param1", param1);
modelMap.addAttribute("param2", param2);
return "hello";
}
这里前面的参数时包装型,后面的参数时原始类型
直接用url请求:
http://localhost:8080/hello1.htm?param1=1¶m2=2
结果:
但是:
如果不传param2:
http://localhost:8080/hello1.htm?param1=1
直接就报错了
因为无法将null转换为原始类型
所以:建议所有的参数都用包装类型,别用原始类型
第二种情况:
仍然是上面的那个controller,地址改为
http://localhost:8080/hello1.htm?param2=1¶m1=2
就是让param2=1,param1=2,想试验下,参数绑定是和顺序有关,还是只和参数名称有关,结果:
所以,springMvc参数绑定只和参数名字有关系
第三种情况:
如果页面上表单里的参数和代码里的参数名不一样怎么办,这时候就可以用注解了:
@RequestMapping(value = "/hello1.htm")
public String hello1(ModelMap modelMap, @RequestParam(value = "paramTest") Integer param1, Integer param2) {
modelMap.addAttribute("param1", param1);
modelMap.addAttribute("param2", param2);
return "hello";
}
在param1前面加上了注解,这时候第一个参数只接受paramTest名字的参数,param1此时无效了。
如果此时我们这么请求:
http://localhost:8080/hello1.htm?param1=1¶m2=2
spring直接报错,必须要这么请求了:
http://localhost:8080/hello1.htm?paramTest=1¶m2=2
结果:
第四种情况:
有时候页面上的表单客户不填任何值,但是在控制器里希望它有默认值
可以这样:
@RequestMapping(value = "/hello1.htm")
public String hello1(ModelMap modelMap, @RequestParam(defaultValue = "5") Integer param1, Integer param2) {
modelMap.addAttribute("param1", param1);
modelMap.addAttribute("param2", param2);
return "hello";
}
这里用了RequestParam的defaultValue属性,如果url参数中没传param1,也不会报错,使用默认值,比如我们这么请求:
http://localhost:8080/hello1.htm?param2=2
结果:
但是,如果url中对param1赋值了:
http://localhost:8080/hello1.htm?param1=3¶m2=2
结果:
也就是说,我们赋的值会修改默认值
第五种情况:
RequestParam还有个属性:required
意思是必须传值,否则报错,就是这么任性
@RequestMapping(value = "/hello1.htm")
public String hello1(ModelMap modelMap, @RequestParam(required = true) Integer param1, Integer param2) {
modelMap.addAttribute("param1", param1);
modelMap.addAttribute("param2", param2);
return "hello";
}
但是当required=true,和defaultValue= 同时出现时,required失效,可传可不传
简单类型参数绑定小结:
springMVC默认根据参数名字来绑定,而不是参数位置
使用包装类型,否则如果不传值,会报错
使用@RequestParam(value="")来改变参数名字
使用@RequestParam(defaultValue=""),不传参时,使用默认值
使用@RequestParam(required=true),强制必须传参数
二、@PathVariable
用这个注解可以将URL中的占位符参数绑定到控制器处理方法的入参中,可以这样用:
@RequestMapping("/hello2.htm/{param1}/{param2}")
public String hello2(ModelMap modelMap, @PathVariable Integer param1, @PathVariable Integer param2) {
System.out.println("进入了hello2控制器");
System.out.println(param1 + "," + param2);
modelMap.addAttribute("param1", param1);
modelMap.addAttribute("param2", param2);
return "hello";
}
URL:
http://localhost:8080/hello2.htm/1/2
结果:
如果不加PathVariable注解,是无法绑定的
@RequestMapping("/hello2.htm/{param1}/{param2}")
public String hello2(ModelMap modelMap,Integer param1, @PathVariable Integer param2) {
System.out.println("进入了hello2控制器");
System.out.println(param1 + "," + param2);
modelMap.addAttribute("param1", param1);
modelMap.addAttribute("param2", param2);
return "hello";
}
去掉了第一个参数的注解:
http://localhost:8080/hello2.htm/1/2
结果:
传了空值到页面,无法绑定
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# spring
# boot
# 参数绑定
# 参数
# 接收参数
# Spring MVC的参数绑定和返回值问题
# 为spring get请求添加自定义的参数处理操作(如下划线转驼峰)
# 基于SpringMVC中的路径参数和URL参数实例
# 绑定
# 报错
# 默认值
# 不传
# 表单
# 第一个
# 这时候
# 也不
# 有个
# 上了
# 可以用
# 错了
# 用了
# 掉了
# 好吧
# 仍然是
# 现时
# 都用
# 既可
# 不加
相关文章:
如何用虚拟主机快速搭建网站?详细步骤解析
如何在云主机上快速搭建网站?
再谈Python中的字符串与字符编码(推荐)
如何通过山东自助建站平台快速注册域名?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
开心动漫网站制作软件下载,十分开心动画为何停播?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
如何解决VPS建站LNMP环境配置常见问题?
如何设置并定期更换建站之星安全管理员密码?
高防服务器租用指南:配置选择与快速部署攻略
建站之星后台密码遗忘?如何快速找回?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
深圳网站制作的公司有哪些,dido官方网站?
建站主机是否等同于虚拟主机?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
移民网站制作流程,怎么看加拿大移民官网?
视频网站制作教程,怎么样制作优酷网的小视频?
网站制作壁纸教程视频,电脑壁纸网站?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
建站主机空间推荐 高性价比配置与快速部署方案解析
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
电商网站制作公司有哪些,1688网是什么意思?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
盘锦网站制作公司,盘锦大洼有多少5G网站?
装修招标网站设计制作流程,装修招标流程?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
如何通过服务器快速搭建网站?完整步骤解析
建站org新手必看:2024最新搭建流程与模板选择技巧
C++如何使用std::optional?(处理可选值)
专业商城网站制作公司有哪些,pi商城官网是哪个?
个人摄影网站制作流程,摄影爱好者都去什么网站?
长沙企业网站制作哪家好,长沙水业集团官方网站?
建站主机类型有哪些?如何正确选型
如何用西部建站助手快速创建专业网站?
创业网站制作流程,创业网站可靠吗?
如何在局域网内绑定自建网站域名?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
如何在阿里云虚拟主机上快速搭建个人网站?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
制作旅游网站html,怎样注册旅游网站?
网站制作模板下载什么软件,ppt模板免费下载网站?
电商平台网站制作流程,电商网站如何制作?
建站之星客服服务时间及联系方式如何?
广州商城建站系统开发成本与周期如何控制?
建站之星伪静态规则如何设置?
教学网站制作软件,学习*后期制作的网站有哪些?
金*站制作公司有哪些,金华教育集团官网?
高防服务器如何保障网站安全无虞?
如何通过NAT技术实现内网高效建站?
*请认真填写需求信息,我们会在24小时内与您取得联系。