index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String path = request.getContextPath();
%>
<html> <script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery.json-2.4.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery.form.js"></script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function test_2(){
var postURL = "<%=request.getContextPath()%>/jsonController/receive_jsonData_2?date="+new Date()+""; //第2种简单的方法
var formData = jQuery("#json_form2").serializeArray();
//将这个数组转为json的对象。
var jsonData = convertArray(formData); //将json对象转为字符串后,才能发送。
var jsonDataStr = jQuery.toJSON(jsonData);
jQuery.ajax({
//请求
type: "POST",
url: postURL,
data: jsonDataStr,
contentType:"application/json",
//返回
dataType: "json",
success: function(msg){
alert( "Data Saved: " + msg );
}
}); } function convertArray(o) { //主要是推荐这个函数。它将jquery序列化后的值转为name:value的形式。
var v = {};
for (var i in o) {
if (typeof (v[o[i].name]) == 'undefined') v[o[i].name] = o[i].value;
else v[o[i].name] += "," + o[i].value;
}
return v;
} </script>
</head>
<body> <form method="post" id="json_form2" action="">
<input type="text" name="dogid" id="dogid" value="用户名"/>
<input type="text" name="dogname" id="dogname" value="复选框1"/>
<input type="button" value="发送是一个json字符串" onclick="test_2();"/>
</form>
</body>
</html>

controller

/**
* Spring中接收json对象的2种方式
*
* RequestBody DogBean dogBean
*
* 不加RequestBody,表示接收的是一个普通的GET或者POST的请求,请求中的参数与Bean中的属性一致。 Bean即可接收。
*
* 加RequestBody,表示接收的是一个json字符串的请求数据,Spring会自动将json字符串转成json对象 。
*
*
*/
@RequestMapping(value = "/receive_jsonData_2")
public String receive_jsonData_2(@RequestBody DogBean dogBean) {
System.out.println("dogBean = " + dogBean);
System.out.println(dogBean.getDogid() + "\t" + dogBean.getDogname());
return null;
}
  • 如果这里不加@RequestBody ,那么将无法将request里的参数封装到dogBean中,因为request里的数据格式是json格式,而自动封装的格式为“dogid=1&dogname=dog1” 这种格式才能自动封装。

最新文章

  1. JavaWeb应用开发架构浅谈
  2. c/c++指针
  3. TTL值的含义以及与域名DNS TTL值的区别
  4. uva 825
  5. poj1823,3667
  6. jquery 关于event.target使用的几点说明介绍
  7. [Network]Application Layer
  8. javascipt : reduce
  9. 【Uva 10498】满意值
  10. linux 增量备份命令Rsync 使用详解
  11. 2019Java查漏补缺(二)
  12. springboot之Filter指定过滤URL的常见问题
  13. opencv 仿射变换
  14. OpenGL Compute Shader靠谱例子及读取二进制Shader,SPIR-V
  15. PGPDesktop在win7环境下的安装和使用
  16. java线程执行的优先级
  17. python自学——文件处理(截取文件内容)
  18. java 调用 C# webapi
  19. 在云服务器搭建WordPress博客(一)实现云服务器与域名的绑定
  20. Ifter Party LightOJ - 1014(水题)

热门文章

  1. Linux如何使用shell命令检测PHP木马防止脚本木马的破坏
  2. Flutter移动电商实战 --(49)详细页_Stack制作底部工具栏
  3. 淘宝npm镜像安装失败的问题
  4. spring bean容器加载后执行初始化处理@PostConstruct
  5. SortedMap和TreeMap有什么区别?
  6. dts reader
  7. Jenkins占用内存较大解决办法
  8. 当微信小程序遇到AR(一)
  9. Npcap.例子(raw tcp syn)
  10. 当后端返回的数据是以属性做开头,怎么用length取值