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对 ...
随机推荐
- filter()函数过滤序列
''' Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据 ...
- 在android项目中使用FontAwesome字体
在android项目中使用FontAweSome图标集,可以方便的适配各种屏幕分辨率,不必在各种不同分辨率文件夹中新建资源文件.使用字体是一种很巧妙的方法,把图像以字体的方式呈现,这样以前设置为and ...
- jni 字符串的梳理
1.实现的功能是java层传递一个字符串到c层2.c层首先将jstring类型转换成char*类型3.c层对字符串进行处理之后,将处理之后的char*类型转换成jstring类型返回给上层的 pack ...
- appium安装的permission deny处理方法-20200204
npm -v 报错:Error: EPERM: operation not permitted, mkdir 'C:\soft\nodejs' 起因:原本安装node在C盘soft文件夹下,按node ...
- Python 简明教程 --- 19,Python 类与对象
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 那些能用计算机迅速解决的问题,就别用手做了. -- Tom Duff 目录 上一节 我们介绍了Pyt ...
- 面试官:你精通多少种语言的 Hello World?
Hello World,是程序员入门编程语言的第一课.不论是C.C++还是Java ,我们写的第一个程序就是它了,还记得小编在大一C语言课上,花了一整节课时间才把它打印到控制台上.万事开头难啊,相信看 ...
- dart快速入门教程 (7.2)
7.4.抽离类为单独文件 新建一个文件,单独存放一个类,例如:Person类抽离到person.dart文件中 class Person { final String name; final num ...
- MFC:CImage显示OpenCV:Mat矩阵图像
*************************************/ //1.读入Mat矩阵(cvMat一样),Mat img=imread("*.*");//cvLoad ...
- Java String的相关性质分析
引言 String可以说是在Java开发中必不可缺的一种类,String容易忽略的细节也很多,对String的了解程度也反映了一个Java程序员的基本功.下面就由一个面试题来引出对String的剖析. ...
- 【搬砖】/etc/passwd 文件结构
文件的内容: 每个Linux都会有root账号,以此来说明,从内容上看,每行都使用[:]分隔(注意:每行前面的数字是行号,不是内容),所以一共有七部分内容,分别是: 1. 账号名称:root,用来对应 ...