1. 首页
  2. IT资讯

SpringBoot 开发案例之参数传递的正确姿势

“u003Cdivu003Eu003Cblockquoteu003Eu003Cpu003E转载:https:u002Fu002Fmp.weixin.qq.comu002Fsu002F09EP3atBpQCqm5JbhPABtAu003Cu002Fpu003Eu003Cu002Fblockquoteu003Eu003Cpu003Eu003Cstrongu003E前言u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E开发这么多年,肯定还有不少小伙伴搞不清各种类型的参数是如何传递的,很多同学都是拿来即用,复制粘贴一把撸,遇到问题还是一脸懵逼。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E姿势u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E学习参数传递的正确姿势,先说怎么做,再说为什么,本质上还是复制粘贴一把撸,问题是你想问不想问为什么!u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E传递u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E用户登录u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E前端代码:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002Fpgc-imageu002F6c30fb5efed24b488ee34909302f20c9″ img_width=”513″ img_height=”163″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E后端代码:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Ff596e388e58c474fa0d9f074bf6212c1″ img_width=”586″ img_height=”201″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E当然,你也可以这么实现, @RequestParam(value=”username”, required=true) , required 默认为 true,如果前台不传递此参数,后台会报错。如果设置为 false,如果不传,默认为 null。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F6046d29686d348b2b3c4b15811b2ba16″ img_width=”565″ img_height=”139″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E用户注册u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E前端代码,提交方式与登录基本保持一致。u003Cu002Fpu003Eu003Cpu003E后端代码:u003Cu002Fpu003Eu003Cpu003E用一个对象来接收前台参数,一般后端有对应的实体类。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Fef06a611126142ba8e8ed4a3f85114a0″ img_width=”563″ img_height=”124″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E多参数无实体一u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E前端代码:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F80ecf8ddcf9f41c89ee7055dac0fd9ed” img_width=”562″ img_height=”199″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E后端实现:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F7aa6b4c21f91446aa636f776331ba7db” img_width=”562″ img_height=”126″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E多参数无实体二u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E前端代码:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Fbec67233572442fcb4a4191442c54780″ img_width=”558″ img_height=”172″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E后端实现:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F0b4cf0deaf2a4c40b26837028a944986″ img_width=”560″ img_height=”127″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E传递数组u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E前端代码:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F4295b5dfa8bc47618c02393437f33a6b” img_width=”560″ img_height=”151″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E后端实现:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fb3e867cc814b4a3c9be3712951007b43″ img_width=”563″ img_height=”126″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E传递集合u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E前端代码与传递数组保持一致。u003Cu002Fpu003Eu003Cpu003E后端实现:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F83bf5a0c3429418cbd0b83f66d3e0595″ img_width=”563″ img_height=”128″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E传递集合实体对象u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E比如,后端想接收一个实体对象集合 List<SysUser>u003Cu002Fpu003Eu003Cpu003E前端代码:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F0a9dcb653e9b431faac65cbdc4abce10″ img_width=”560″ img_height=”234″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E后端代码:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Fbc6a74ecc8894494b081d404bb5028db” img_width=”557″ img_height=”171″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E传递集合实体对象一对多u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E比如,一个用户有多个角色 List<SysRole> roleListu003Cu002Fpu003Eu003Cpu003E前端代码:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F430f46d5a0144aeca8118babd0d6b2b3″ img_width=”563″ img_height=”317″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E后端实现:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F02869e6a595a4efeab290f60af2fdb9e” img_width=”562″ img_height=”186″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E炒鸡复杂u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E传输对象有实体,有集合,有各种类型的数据,这时候最简单的方式就是传递 Key-Value 结构的 JSON字符串,后台 Map 类型接收,然后通过 FastJson的 JSON.parseObject() 和 JSON.parseArray() 方法转化为对应的实体或者集合。u003Cu002Fpu003Eu003Colu003Eu003Cliu003EString user = parseMap.get(“user”).toString();u003Cu002Fliu003Eu003Cliu003E SysUser sysUser = JSON.parseObject(user,SysUser.class);u003Cu002Fliu003Eu003Cliu003E String contractClause = parseMap.get(“rules”).toString();u003Cu002Fliu003Eu003Cliu003E List<Rule> ruleList = JSON.parseArray(contractClause,Rule.class);u003Cu002Fliu003Eu003Cu002Folu003Eu003Cpu003Eu003Cstrongu003ERESTful 风格u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E比如,访问某篇文章:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Ff4fccb3b6c8645ca9f7f9dfce3b0fac6″ img_width=”559″ img_height=”113″ alt=”SpringBoot 开发案例之参数传递的正确姿势” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E原则u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E记住一下几点:u003Cu002Fpu003Eu003Culu003Eu003Cli class=”ql-align-justify”u003E@RequestBody注解,必须与contentType 类型applicationu002Fjson配合使用。u003Cu002Fliu003Eu003Cli class=”ql-align-justify”u003E@RequestParam注解,必须与contentTyp类型applicationu002Fx-www-form-urlencoded配合使用,其为默认类型。u003Cu002Fliu003Eu003Cli class=”ql-align-justify”u003EJSON.stringify()把对象类型转换为字符串类型,配合@RequestBody注解和contentType 类型applicationu002Fjson使用。u003Cu002Fliu003Eu003Cu002Fulu003Eu003Cpu003Eu003Cstrongu003E扩展u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E在以上只涉及了两种 contentType 类型,其实还有两种常见的类型:u003Cu002Fpu003Eu003Cpu003Emultipartu002Fform-datau003Cu002Fpu003Eu003Cpu003E一般用于表单文件上传,必须让 form 的 enctype 等于这个值。u003Cu002Fpu003Eu003Colu003Eu003Cliu003E<form action=”u002Fupload” method=”post” enctype=”multipartu002Fform-data”>u003Cu002Fliu003Eu003Cliu003E <input type=”text” name=”description” value=”爪哇笔记,一个神奇的公众号”>u003Cu002Fliu003Eu003Cliu003E <input type=”file” name=”myFile”>u003Cu002Fliu003Eu003Cliu003E <button type=”submit”>Submit<u002Fbutton>u003Cu002Fliu003Eu003Cliu003E<u002Fform>u003Cu002Fliu003Eu003Cu002Folu003Eu003Cpu003Eu003Cstrongu003Etextu002Fxmlu003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E做过微信支付的小伙伴一定会知道,微信就喜欢用这种方式,去年还发生过 XXE 漏洞,在解析XML文档时,解析器通过 ENTITY 扩展的功能,读取本地受保护的文件,并且使用扩展功能将受保护的文件发送到远程地址。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E小结u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E不敢说是最完整的传参方案,但绝对敢保证是最正确的,因为所有的传参方式都经过 360° 官方检验。u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:SpringBoot 开发案例之参数传递的正确姿势

主题测试文章,只做测试使用。发布者:逗乐男神i,转转请注明出处:http://www.cxybcw.com/26462.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code