快速解决SpringMVC @RequestBody 用map接收请求参数的问题
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
快速解决SpringMVC @RequestBody 用map接收请求参数的问题 在 SpringMVC 中,使用 @RequestBody 注解可以将请求体中的数据转换为 Java 对象,但是在使用 map 接收请求参数时,经常会遇到一些问题。本文将讨论如何快速解决 SpringMVC @RequestBody 用map接收请求参数的问题。 一、遇到跨域调用,传入参数不定的问题 在跨域调用时,传入的参数可能不定,这时我们需要使用 map 来接收参数并进行签名验证等操作。但是,在使用 @RequestBody 注解时,我们发现 map 里并没有获取到传来的 key-value 值。例如: ```java @RequestMapping(value = "/callback", produces = "text/html;charset=UTF-8") @ResponseBody public String callback(@RequestBody Map<String, String> params) { return null; } ``` 解决方法是使用 HttpServletRequest 的 getParameterMap() 方法来获取参数。例如: ```java @RequestMapping(value = "/callback", produces = "text/html;charset=UTF-8") @ResponseBody public String callback(HttpServletRequest httpServletRequest) { Map<String, String> params = httpServletRequest.getParameterMap(); return null; } ``` 但是,这个方法返回的是一个 Map<String, String[]> 对象,而不是我们想要的简单的 Map<String, String> 类型。所以,我们需要手动进行转换。 二、使用 @RequestParam 解决问题 使用 @RequestParam 注解可以将请求参数转换为 map 对象。例如: ```java @RequestMapping(value = "/callback", produces = "text/html;charset=UTF-8") @ResponseBody public String callback(@RequestParam Map<String, String> params) { return null; } ``` 这样,我们就可以轻易地接收到请求参数。 三、@RequestBody 接收 Json 对象字符串 在使用 @RequestBody 注解时,我们需要注意的是,它接收的是一个 Json 对象的字符串,而不是一个 Json 对象。例如: ```java @RequestMapping(value = "saveUser", method = {RequestMethod.POST}) @ResponseBody public void saveUser(@RequestBody List<User> users) { userService.batchSave(users); } ``` 在这个例子中,我们使用 @RequestBody 注解将请求体中的 Json 对象字符串转换为 List<User> 对象。 四、ajax 请求时的注意事项 在使用 ajax 请求时,我们需要指定 dataType: "json",contentType: "application/json",并使用 JSON.stringify() 方法将对象转换为字符串。例如: ```javascript $.ajax({ type: "POST", url: "user/saveUser", dataType: "json", contentType: "application/json", data: JSON.stringify(saveData), success: function(data) { // ... } }); ``` 这样,我们就可以轻易地将一个对象或者 List 传到 Java 端,并使用 @RequestBody 注解绑定对象或者 List。 使用 @RequestBody 注解可以快速解决 SpringMVC 中的请求参数接收问题,但是需要注意一些细节,如使用 @RequestParam 注解,使用 getParameterMap() 方法,使用 JSON.stringify() 方法等。

























- 粉丝: 6
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- Vue3 源码解读:响应式核心实现逻辑.doc
- Redis 的五种数据结构及应用场景总结.doc
- 小程序云开发全流程教程(登录、数据库、云函数).doc
- Node + MongoDB 实现一个简易图书管理平台.doc
- Java HashMap 源码全解析(JDK1.8).doc
- React Native 跨平台开发实战:ToDo 应用案例.doc
- Vue 项目性能优化完整攻略(从40分到98分).doc
- 为什么 Kafka 一秒能吞百万消息?核心机制剖析.doc
- 用 ChatGPT 辅助写代码的正确姿势(附实测对比).doc
- 如何让你的 GitHub 项目更受欢迎?.doc
- 使用 Python 自动整理 Excel 报表并邮件发送.doc
- Spring Security 登录认证流程源码分析.doc
- 用 Git 命令行做团队协作的高效流程总结.doc
- 零基础搭建一个 Node.js 文件上传服务(附源码).doc
- 使用 Typora 写博客:图床 + 代码块 + 目录全搞定.doc
- 前端文件拖拽上传完整方案(含防抖与进度条).doc


