您的位置:首页 > 编程语言 > Java开发

SpringMVC使用@RequestBody与@ResponseBody注解与前台进行json格式的数据

2017-12-12 14:58 901 查看
一、前端页面代码



<form id="reForm" action="">
<table>
<tr>
<td>姓名:</td>
<td><input name="username" type="text"></td>
</tr>
<tr>
<td>年龄:</td>
<td><input name="age" type="text"></td>
</tr>
<tr>
<td>家庭住址:</td>
<td><input name="address" type="text"></td>
</tr>
</table>
</form>
<div style="text-align: center">
<p><button id="commit">话费充值</button></p>
</div>


[b]二、页面JS代码[/b]

<script type="text/javascript" src="./js/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(function(){
$("#commit").click(function(){

// 1、使用JQ获取整个form表单的数据,获得的对象是个Object数组
var form = $("#reForm").serializeArray();//[Object][Object][Object]

// 2、用来保存遍历数组后的数据,获得的对象是一个Object
var source = {};
$.each(form,function(i,n){
source[form[i].name] = form[i].value;
});

// 3、从Object对象中提取成json字符串
var data = JSON.stringify(source);//{"name":"John","age":24,"address":"USA"}

// 4、本人使用的是利用ajax进行传值,由于是采用Json格式传值,需要设置 "contentType='application/json'"
//	    但是只有 $.ajax() 方法有这个属性选项,如果要使用$.get()或者$.post()方法需要重写,这里不做介绍,需要的自行百度
/*
$.post("${pageContext.request.contextPath}/Freemarker/json.action",
{"data":data},function(msg){
alert(msg);
},"json");  /不可直接使用
*/
$.ajax({
url:"${pageContext.request.contextPath}/Freemarker/json.action",
type:"POST",
data:data,
contentType:"application/json",
dataType:"json",
success:function(msg){
alert(msg);
}
});
});
});
</script>


三、后端Java代码

@RequestMapping("/json.action")
public @ResponseBody User json(@RequestBody User data){
System.out.println(data.toString());
//输出结果为User [username=John, age=24, address=USA](toString()方法)
return data;
}


四、一些注意事项

1、需要 jackson包的支持,本人使用的是maven创建项目,只需要在pom.xml中配置下即可

     创建普通Web项目 导入下图中的三个包即可。

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>



注:只需要配置jackson-databind即可,其它两个包会依赖注入。

2、使用的ajax必须设置contentType属性为application/json。

3、springmvc是配置文件中开启自动配置处理器映射器与处理器适配器

<!-- 使用注解配置处理器映射器与处理器适配器 -->
<mvc:annotation-driven/>
4、如果需要后端向前端传递数据就必须使用@ResponseBody注解,否则会报错
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring mvc json web 数据
相关文章推荐