问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

springMVC获取请求参数有哪几种方式?

发布网友 发布时间:2024-09-28 10:48

我来回答

1个回答

热心网友 时间:2024-09-29 05:40

一、前言

大家在学习springMVC框架的时候,一定学习过使用这个框架来获取请求的参数,那么各位小伙伴们,获取请求参数有几种方法呢?使用哪种方式最好呢?在什么时候使用这些方法呢?那么这一篇文章,我就带大家来看一看这些问题的答案。

废话不多说,满满的干货,赶快来看看吧~

二、初步认识

那么什么是请求参数呢?

可以直接在请求地址中给于请求参数的值还可以以表单提交的方式,例如:

<form>用户名:<inputtype="text"name="username"/><br/>密码:<inputtype="password"name="password"/><br/>爱好:<inputtype="checkbox"name="hobby"value="C++"/>C++<inputtype="checkbox"name="hobby"value="Java"/>Java<inputtype="checkbox"name="hobby"value="C"/>C<br/><buttontype="submit">提交</button></form>

表单就是这样:

三、servletAPI

HttpServletRequest是我们在javaweb学习中学到的,它也可以用在我们springMVC框架中,将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象。

具体代码如下:

@RequestMapping("/one")publicStringtestParam(HttpServletRequestrequest){Stringusername=request.getParameter("username");Stringpassword=request.getParameter("password");String[]hobbies=request.getParameterValues("hobby");return"success";}

当我们在表单中设置正确的请求地址后,提交表单时,就会调用该方法,然后根据表单的name属性值获取相应的参数值。相信大家可以看到,getParameter是获取单个属性的值,getParameterValues是获取多个属性的值。

四、方法参数

接下来介绍第二种方法。

在控制器方法的形参位置,设置和请求参数同名的形参,当浏览器发送请求,匹配到请求映射时,在DispatcherServlet中就会将请求参数赋值给相应的形参。

具体代码如下:

@RequestMapping("/two")publicStringtestTwo(Stringusername,Stringpassword,Stringhobby){System.out.println("username:"+username+",password:"+password+",hobby:"+hobby);return"success";}

当然,也可以写成这样:

@RequestMapping("/two")publicStringtestTwo(Stringusername,Stringpassword,String[]hobby){System.out.println("username:"+username+",password:"+password+",hobby:"+hobby);return"success";}

这两种都可以,第一种会把多个参数的值转换成一个数组;第二组会把参数值放进数组中,需要自己遍历得到结果。

五、@RequestParam

推荐使用这种方式,非常好用。

@RequestParam是将请求参数和控制器方法的形参创建映射关系。

@RequestMapping("/three")publicStringtestThree(@RequestParam(value="username",required=false,defaultValue="hello")Stringusername,@RequestParam(value="password")Stringpassword,@RequestParam(value="hobby")Stringhobby){System.out.println("username:"+username+",password:"+password+",hobby:"+hobby);return"success";}

@RequestParam注解一共有三个属性:

value:指定为形参赋值的请求参数的参数名

required:设置是否必须传输此请求参数,默认值为true

若设置为true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置defaultValue属性,则页面报错400:Required String parameter 'xxx' is not present;若设置为false,则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为null

defaultValue:不管required属性值为true或false,当value所指定的请求参数没有传输或传输的值为""时,则使用默认值为形参赋值

运行结果完全正确:

六、实体类

最后一种方式,可以在控制器方法的形参位置设置一个实体类类型的形参,此时若浏览器传输的请求参数的参数名和实体类中的属性名一致,那么请求参数就会为此属性赋值

下面看代码:

publicclassUser{privateStringusername;privateStringpassword;privateString[]hobby;}

这个user实体类的getter和setter以及toString就不列出来了

@RequestMapping("/four")publicStringtestFour(Useruser){System.out.println(user);return"success";}

测试一下:

提交后运行结果也是完全正确的:

七、总结

乐莫乐兮新相知,很高兴各位小伙伴可以坚持看完这篇文章。以上四种方式获取请求参数就介绍完了,大家可以根据自己的需要选择合适的方式哦~ 如果对你有帮助,可以给博主三连支持一下哦~~ 非常感谢, 一起加油,一起进步!

原文:juejin.cn/post/7127259281895735333

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 防晒霜的UPF50+和UPF100+有什么区别? upf50防晒衣跟upf100防晒衣有什么区别呢? 摩尔好玩还是奥比好玩 大家觉的摩尔好还是奥比好?玩过的都来啊!!! 你们觉的奥比好玩还是摩尔好玩? 现在有许多人都说奥比抄袭摩尔 (我... 我到底是玩摩尔还是奥比? 奥比和摩尔哪个好 摩尔好玩还是奥比好玩呢 摩尔庄园和奥比岛哪个更好玩?各自的优点和缺点? 房颤最好的治疗,方法7指药物_百度拇指医生 治疗房颤哪种方法效果好 梦见死去的婆婆又放到棺材里面在家里放了几天。 梦到一口棺材,棺材里躺着一个老婆婆,门口坐着一个老爷爷手刚抓到我的... 梦到我妈家看见一具棺材我妈说棺材里是我婆婆有什么寓意 梦见在世的婆婆为以后准备的棺材 让我守着 我把棺材抱出去又抱回来意味... 梦到红色棺材和老婆婆躺在上面 快速缓解心房颤动的方法 ...南路商城路口八佰伴对面1038弄3号楼1101室 电话: 021-58403129_百度... 01050913641打来电话说是苹果5S推广活动售价1038货到付款,赠送1000元充 ... 1038-5544是什么电话 upf50+和upf100+有什么区别啊? 防晒衣upf50+和upf100+有什么区别? 我的车有两年没验了,现在我想买一新车,但旧车又舍不得买,新车还想挂... 新车能否申请保留原号牌号码 有旧车又买了新车想用旧车号该怎么办_百... ...原车牌照,怎样才能让新买的车用上原车牌照? 想换辆新车,还想用旧车的牌照,但是旧车车主是老公的名字,新车打算车主... 工作中保持谦虚的心态 智能开关控制器怎调节定时时间 用山药,红枣,黑芝麻,核桃,黑米,枸杞,黑豆,绿豆,小米熬粥,怎么吃,有什... 红枣黑豆红豆黑米核桃一起榨有什么好处和坏处 有没有一首诗整篇都是一什么一什么的 一什么山脉,一什么倒影,一什么沙滩,一什么河流,一什么家园,一什么月 ... 用万用表怎样能简单有效的检查电动机的好坏?主要是三相异步电动机建筑... 什么叫蓝筹股哦 360安全卫士里的强制卸载电脑软件的插件和优化大师的卸载功能 比 那个... E3 1230V3和I73770K性能有多大的差距? 为什么有的软件重装机后还可以用。那软件是需要光盘镜像数字的。_百度... 汽车防冻液性能的要求有哪些(现在汽车防冻液的优点有哪些:丙二醇防冻液优... 晚上做梦射精直接醒了怎么回事 为什么晚上做梦会射精 为什么做梦射精