SpringMVC中@RequestBody接收前端传来的多个参数
在使用ajax发送请求时,如果发送的JSON数据是一个类中的不同属性,在Controller方法中使用@RequestBody会直接封装进该类中
例如:
前端部分代码
JavaScript
<script language="JavaScript">
function login(){
var user_name = $("#user_name").val(); //用户名
var user_password = $("#user_password").val; //用户密码 $.ajax({
url:"<%=path%>/User/Login",
type:"POST",
async: false,
contentType:"application/json;charset=UTF-8",
dataType:'json',
data:JSON.stringify({"user_name":user_name,"user_password":user_password}), //将JSON对象转为字符串
success:function(data){ }
});
}
</script>
form表单
<form>
<div class="form-group">
<label for="user_name" stype="display:inline;">用户名:</label>
<input id="user_name" type="text" class="form-control" style="display:inline;" autocomplete="off" />
</div>
<div class="form-group">
<label for="user_password" style="display:inline;">用户密码:</label>
<input id="user_password" type="text" class="form-control" style="display:inline;" autocomplete="off" />
</div>
<div class="col">
<div class="col-md-4" style="text-align: right;">
<button type="submit" class="btn btn-success" onclick="login()">登录</button>
</div>
</div>
</form>
此时前端向后端传入JSON数据
User类部分代码
public class User implements Serializable {
private Integer user_name; //用户名
private String user_password; //用户密码
......
}
Controller部分代码
@Controller
@RequestMapping("/User")
public class UserController { @RequestMapping(value = "/Login",method = {RequestMethod.POST})
public @ResponseBody Boolean Login(@RequestBody User user) {
//此时user.getUser_name()就是前端的user_name
//user.getUser_password()就是前端的user_password
//根据输入的用户名及用户密码和数据库对比判断是否登录成功,并返回一个布尔值告诉前端
······
return true/false;
}
如果此时ajax提交的JSON数据为
data:JSON.stringify({"user_name":admin,"user_password":123)
在Controller内加入输出语句
public @ResponseBody Boolean Login(@RequestBody User user) {
System.out.println(user.getUser_name());
System.out.println(user.getUser_password());
······
return true/false;
}
输出的结果为
admin
123
但是,如果我们需要同时接收多个参数,但这些参数并不是同一个类的不同属性,应该如何处理呢?
例如:
form表单中增加了一项验证码:verifycode。此时,假如ajax提交的JSON数据为
data:JSON.stringify({"user_name":admin,"user_password":123,"verifycode":666})
但是verifycode并不是User类中的属性,不能由@RequestBody User user接收
如果采用String接收,输出的将是JSON字符串
@RequestMapping(value = "/Login",method = {RequestMethod.POST})
public @ResponseBody Boolean Login(@RequestBody String body) {
//此时body是整个请求体的内容
System.out.println(body);
//······
}
输出的结果为
{"user_name":admin,"user_password":123,"verifycode":666}
但我们想拿到每个参数的对应值,此时可以采用Map<String,String>接收
@RequestMapping(value = "/Login",method = {RequestMethod.POST})
public @ResponseBody Boolean Login(@RequestBody Map<String,String> map) {
//此时map.get("user_name")就是前端的user_name
System.out.println(map.get("user_name"));
//map.get("user_password")就是前端的user_password
System.out.println(map.get("user_password"));
//map.get("verifycode")就是前端的verifycode
System.out.println(map.get("verifycode"));
······
}
输出的结果为
admin
123
666
SpringMVC中@RequestBody接收前端传来的多个参数的更多相关文章
- SpringMVC中控制器接收JSP页面表单的参数接收方式详解及细节注意(400错误)
控制器方法中参数的接收 (1)以前的参数接收: String param = req.getParameter(name): (2)SpringMVC简化这个操作,只需要给控制器方法添加参数即可 a ...
- SpringMVC过程中@RequestBody接收Json的问题 总是报415
在SpringMVC中用@RequestBody接收Json的问题,总是报415,经过一翻查找 前台js的post: var postdata = '{"title":" ...
- Ajax json交互和SpringMVC中@RequestBody
Ajax json交互和SpringMVC中@RequestBody 标签: 背景 自己提供出去得接口中参数设置为@RequestBody VipPromotionLog vipPromotionLo ...
- 项目记事【SpringMVC-1】:后台接收前端传来的JSON,并转成对象
背景: 最近项目中使用SpringMVC,需要从前端接收JSON格式的请求,在后端自动转成一个与JSON格式相同的对象. 由于是一个老项目,Spring的版本是3.2.7. 问题1:POST or G ...
- Java如何接收前端传来的多层嵌套的复杂json串
想看问题直接解决方式,直接拉到博文底部. Spring的controller在接收前端传参的时候如果参数使用@RequestBody标注的时候 @RequestBody 则会把前端参数转为JSON的形 ...
- 【Spring学习笔记-MVC-6】SpringMVC 之@RequestBody 接收Json数组对象
作者:ssslinppp 1. 摘要 程序流程: 前台使用ajax技术,传递json字符串到后台: 后台使用Spring MVC注解@RequestBody 接受前台传递的json字符串, ...
- SpringMVC 之@RequestBody 接收Json数组对象
1. 摘要 程序流程: 前台使用ajax技术,传递json字符串到后台: 后台使用Spring MVC注解@RequestBody 接受前台传递的json字符串,并返回新的json字符串到前台: 前台 ...
- SpringMVC中@RequestBody引起的400异常处理,返回校验失败具体信息
问题 使用@RequestBody接收一个json数据的时候,如果传入的参数不符合条件,就会直接返回400的error page. 但究竟是为什么会400并没有抛出来.这对大量参数字段的我们来说,排错 ...
- SpringMVC的控制器接收前端数据的方式
1.请求处理方法中可以出现以下几种参数类型,直接在controller方法形参上定义默认类型的对象,就可以使用这些对象.可以通过下列对象来获取前台传来的参数: ①HttpServletRequest对 ...
随机推荐
- 用 Explain 命令分析 MySQL 的 SQL 执行
在上一篇文章<MySQL常见加锁场景分析>中,我们聊到行锁是加在索引上的,但是复杂的 SQL 往往包含多个条件,涉及多个索引,找出 SQL 执行时使用了哪些索引对分析加锁场景至关重要. 比 ...
- LeetCode 78,面试常用小技巧,通过二进制获得所有子集
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题第47篇文章,我们一起来看下LeetCode的第78题Subsets(子集). 这题的官方难度是Medium,点赞 ...
- Optional 容器类
什么是Optional容器类 Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的 ...
- 多语言工作者の十日冲刺<1/10>
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺--第一天(04.30) 作业正文 ...
- 警告Establishing SSL connection without server's identity verification is not recommended
[本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] SpringBo ...
- vue通过属性绑定为元素绑定style行内样式
1.直接在元素上通过:style绑定书写 <h1 :style="{color: 'red','font-size': '40px'}">这是一 ...
- ajax前后端交互原理(4)
4.JSON 4.1 什么是JSON? JavaScript 对象表示法(JavaScript Object Notation)简称JSON,是一种轻量级的数据交换格式.虽然它基于JavaScript ...
- IIS发布之后可能出现的问题集及解决方案
1,首先注意发布的net目标框架,和发布的服务器所使用的框架是否一致
- 注册中心(Eureka/Consul)
基于SpringBoot1.5.4与SpringCloud(Dalston.SR2)的SpringCloud学习博客,转载请标明出处,O(∩_∩)O谢谢 - Spring Cloud简介 Spring ...
- Linux中快捷生成自签名ssl证书_113资讯网
一.生成CA私钥 mkdir ca cd ca #创建私钥 (建议设置密码) openssl genrsa -des3 -out myCA.key 2048 生成CA证书 # 20 年有效期 open ...