当前位置: 代码网 > it编程>编程语言>Java > springMVC中@RequestParam和@RequestPart的区别

springMVC中@RequestParam和@RequestPart的区别

2024年07月03日 Java 我要评论
@requestpart@requestpart这个注解用在multipart/form-data表单提交请求的方法上。支持的请求方法的方式multipartfile,属于spring的multipa

@requestpart

  • @requestpart这个注解用在multipart/form-data表单提交请求的方法上。
  • 支持的请求方法的方式multipartfile,属于spring的multipartresolver类。这个请求是通过http协议传输的

@requestparam

@requestparam支持’application/json’,也同样支持multipart/form-data请求

@requestparam用来处理content-type: 为 application/x-www-form-urlencoded编码的内容。(http协议中,如果不指定content-type,则默认传递的参数就是application/x-www-form-urlencoded类型)

@requestparam可以接受简单类型的属性,也可以接受对象类型。(实质是将request.getparameter() 中的key-value参数map利用spring的转化机制conversionservice配置,转化成参数接收对象或字段。)

知识点:在content-type: application/x-www-form-urlencoded的请求中,get 方式中querystring的值,和post方式中body data 的值都会被servlet接受到并转化到request.getparameter()参数集中,所以@requestparam可以获取的到。

区别

  • 当请求方法的请求参数类型不是string 或 multipartfile / part时,而是复杂的请求域时,@requestparam 依赖converter or propertyeditor进行数据解析, requestpart参考 ‘content-type’ header,依赖httpmessageconverters 进行数据解析

  • 当请求为multipart/form-data时,@requestparam只能接收string类型name-value值,@requestpart可以接收复杂的请求域(像json、xml);@requestparam 依赖converter or propertyeditor进行数据解析, @requestpart参考'content-type' header,依赖httpmessageconverters进行数据解析

前台请求:
jsondataperson对象的json字符串
uploadfile为上传的图片

在这里插入图片描述

后台接收:

  • @requestpart可以将jsondatajson数据转换为person对象
@requestmapping("jsondataanduploadfile")
@responsebody
public string jsondataanduploadfile(@requestpart("uploadfile") multipartfile uploadfile,
                                    @requestpart("jsondata") person person) {
    stringbuilder sb = new stringbuilder();
    sb.append(uploadfile.getoriginalfilename()).append(";;;"));
    return person.tostring() + ":::" + sb.tostring();
}
  • @requestparam对于jsondatajson数据只能用string字符串来接收
@requestmapping("jsondataanduploadfile")
@responsebody
public string jsondataanduploadfile(@requestpart("uploadfile") multipartfile uploadfile,
                                    @requestparam("josndata") string jsondata) {
    stringbuilder sb = new stringbuilder();
    sb.append(uploadfile.getoriginalfilename()).append(";;;"));
    return person.tostring() + ":::" + sb.tostring();
}

总结

当请求头中指定content-type:multipart/form-data时,传递的json参数,@requestpart注解可以用对象来接收,@requestparam只能用字符串接收

到此这篇关于springmvc中@requestparam和@requestpart的区别的文章就介绍到这了,更多相关@requestparam和@requestpart区别内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com