SpringMVC使用@RequestBody与@ResponseBody注解与前台进行json格式的数据
一、前端页面代码
<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>
二、页面JS代码
<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代码
"/json.action")( public 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是配置文件中开启自动配置处理器映射器与处理器适配器
4、 如果需要后端向前端传递数据就必须使用@ResponseBody注解,否则会报错
<!-- 使用注解配置处理器映射器与处理器适配器 --> <mvc:annotation-driven/>