文档章节

spring @RequestParam, @RequestBody Map注入注意事项

xixingzhe
 xixingzhe
发布于 2017/09/08 17:52
字数 380
阅读 1416
收藏 1
点赞 0
评论 0

该博客内容不仅限于对map的注意项,对其他pojo一样有效。map只是给示例而已。

 

1、@RequestBody

1.1 一个参数时

@RequestMapping(value="/test3",method=RequestMethod.POST)
public boolean test3(@RequestBody Map<String, String> fieldValueList) {
	System.out.println(JSON.toJSONString(fieldValueList));
	return true;
}

测试方式:

1.2 多个参数时

@RequestMapping(value="/test4",method=RequestMethod.POST)
public boolean test4(@RequestParam("key") String key,@RequestBody Map<String, String> fieldValueList) {
	System.out.println(key+":"+JSON.toJSONString(fieldValueList));
	return true;
}

测试方式:

错误方式如下图所示,会抛出异常

“org.springframework.http.converter.HttpMessageNotReadableException”:

 

总结:

  • @RequestBody需要把所有请求参数作为json解析,因此,不能包含key=value这样的写法在请求url中,所有的请求参数都是一个json
  • 直接通过浏览器输入url时,@RequestBody获取不到json对象,需要用java编程或者基于ajax的方法请求,将Content-Type设置为application/json

  

2、@RequestParam

2.1 一个参数时

@RequestMapping(value="/test",method=RequestMethod.POST)
public boolean test(@RequestParam Map<String, String> fieldValueList) {
	System.out.println(JSON.toJSONString(fieldValueList));
	return true;
}

测试方式:

得到结果为:{"aa":"bb","cc":"dd"}

错误方式:

得到结果:{"fieldValueList":"{\"aa\":\"bb\",\"cc\":\"dd\"}"},并不是我们想要的。

2.2 多个参数时

@RequestMapping(value="/test2",method=RequestMethod.POST)
public boolean test2(@RequestParam("key") String key, @RequestParam Map<String, String> fieldValueList) {
	System.out.println(JSON.toJSONString(fieldValueList));
	return true;
}

错误方式:

得到结果:{"key":"aa","aa":"bb","cc":"dd"},并不是我们想要的。多出了"key":"aa"。

 

得到结果:{"fieldValueList":"{\"aa\":\"bb\",\"cc\":\"dd\"}","key":"aa"},并不是我们想要的。

 

总结:

  • @RequestParam参数中包含Map时,不要再写其他参数了,否则,map都会包含进去。

© 著作权归作者所有

共有 人打赏支持
xixingzhe
粉丝 1
博文 167
码字总数 43742
作品 0
西城
程序员
Spring框架 - Web框架 实现Controller

实现Controller 实现基本的Controller并处理输入输出 基本的Controller 添加了Controller Annotation声明该类是Controller 也添加RequestMapping,通过value制定的的路径 我们在函数处理之前...

抢小孩糖吃
2016/10/28
47
0
Ajax和SpringMVC之间JSON交互

Ajax和SpringMVC之间的json数据传输有两种方式: 1.直接传输Json对象 2.将Json序列化 1.直接传输Json对象 前端Ajax 后端使用 后端

努力学习ding
06/03
0
0
求解:关于spring的@RequestParam与@RequestBody参数绑定的问题

在使用springMVC过程中,遇到参数绑定的问题,望各位帮忙指定一下 1) 使用@RequestParam方式绑定参数,除了能绑定String类型的参数外,可否绑定数组类型的参数以及Date类型的参数? 2) 使用@...

mrZhan_223
2014/09/01
13.2K
8
Spring4.1.6 常用注解

常用的spring注解有如下几种: @Controller @Service @Autowired @RequestMapping @RequestParam @ModelAttribute @Cacheable @CacheFlush @Resource @PostConstruct @PreDestroy @Repositor......

大糊涂
2015/06/10
0
0
SpringMVC 4.0常用注解

注解的出现终结了使用XML配置文件的年代,它让程序拥有更高的可读性,可配置性与灵活性。上一篇介绍的SpringMVC 2.5版本的注解使用已经发布了很多年了,如今项目中使用的4.0版本发生了很大的...

黎嘉诚
2016/08/21
545
1
SpringBoot | 第六章:常用注解介绍及简单使用

前言 之前几个章节,大部分都是算介绍springboot的一些外围配置,比如日志 配置等。这章节开始,开始总结一些关于的综合开发的知识点。由于本身是基于和等各类家族的一个解决方案,可快速进行...

oKong
07/16
0
0
SpringMVC参数绑定那些事

@RequestParam @ModelAttribute @RequestBody 简单类型,复杂类型 get;post:form-data x-www-form-urlencoded 简单参数绑定 通过get方式访问(post:x-www-form-urlencoded一样) 解析@Re...

4rnold
04/15
0
0
Spring框架自学(四)注解注入

1、@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的Vie...

大二架构师
05/09
0
0
注解 springMVC

web.xml中配置servlet <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLo......

silenceyawen
2016/05/07
47
0
Java+Netty实现的RESTful框架--netty-rest-server

摘要: 在工作中用Netty做了几个服务,感觉Netty做出来的程序性能好,资源占用少,但是实现Http服务比较麻烦,于是就参考Spring MVC的注解基于Netty实现了一个轻量级的RESTful框架。 该框架提...

传授知识的天使
06/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python浏览器自动化测试库【2018/7/22-更新】

64位py2.7版本 更新 document_GetResources 枚举页面资源 document_GetresourceText 获取指定url的内容 包括页面图片 下载地址下载地址 密码:upr47x...

开飞色
15分钟前
17
0
关于DCL双重锁失效及解决方案

关于DCL双重锁失效及解决方案 Double Check Lock (DCL)实现单例 DCL 方式实现单例的优点是既能够在需要时才初始化单例,又能够保证线程安全,且单例对象初始化后调用getInstance方法不进行...

DannyCoder
21分钟前
0
0
PowerDesigner 16.5 安装配置

PowerDesigner16.5破解版是一款业内领先且开发人员常用的数据库建模工具,PowerDesigner可以从物理和概念两个层面设计数据库,方便用户制作处清晰直观的数据流程图和结构模型,欢迎有需要的朋...

Gibbons
46分钟前
0
0
mac Homebrew 指令积累

1通用命令 brew install [包名] //安装包 brew list //列举安装的包 brew info [包名] // 显示安装包的详细信息 mysql 相关 #启动mysql 服务 brew service start mysql my...

Kenny100120
今天
0
0
前端Tips: 创建, 发布自己的 Vue UI 组件库

创建, 发布自己的 Vue UI 组件库 前言 在使用 Vue 进行日常开发时, 我们经常会用到一些开源的 UI 库, 如: Element-UI, Vuetify 等. 只需一行命令, 即可方便的将这些库引入我们当前的项目: n...

ssthouse_hust
今天
1
0
大数据教程(2.13):keepalived+nginx(多主多活)高可用集群搭建教程【自动化脚本】

上一章节博主为大家介绍了目前大型互联网项目的keepalived+nginx(主备)高可用系统架构体系,相信大家应该看了博主的文章对keepalived/nginx技术已经有一定的了解,在本节博主将为大家分享k...

em_aaron
今天
4
0
Git 2.18版本发布:支持Git协议v2,提升性能

在最新的官方 Git 客户端正式版2.18中添加了对 Git wire 协议 v2 的支持,并引入了一些性能与 UI 改进的新特性。在 Git 的核心团队成员 Brandon Williams 公开宣布这一消息前几周,Git 协议 ...

六库科技
今天
0
0
Java8新特性之接口

在JDK8以前,我们定义接口类中,方法都是抽象的,并且不能存在静态方法。所有的方法命名规则基本上都是 public [返回类型] [方法名](参数params) throws [异常类型] {}。 JDK8为接口的定义带...

developlee的潇洒人生
今天
0
0
aop + annotation 实现统一日志记录

aop + annotation 实现统一日志记录 在开发中,我们可能需要记录异常日志。由于异常比较分散,每个 service 方法都可能发生异常,如果我们都去做处理,会出现很多重复编码,也不好维护。这种...

长安一梦
今天
2
0
将博客搬至CSDN

AHUSKY
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部