SpringMVC-高级-json数据交互
一.简述
javaWeb学习ajax时,浏览器和服务器之间数据交互使用JSON数据。
之前我们服务器使用JSON-LIB等第三方工具进行Java对象转JSON数据。
在SpringMVC我们使用更加快捷的Jackson来进行JSON和Java对象的互转
- @RequestBody:自动将json 转换 成Java对象。 JSON——>JAVA
- @ResponseBody:自动将Java对象 转换 成 json内容。JAVA—->JSON
实用:json数据交互
流程图
- ajax请求,传递json,服务器使用Java对象封装
- 服务器响应,传递json,服务器把Java对象转JSON
代码实现
Product类:
public class Product implements Serializable {
private String pname;
private Double price;
//DateTimeFormat注解,用于同步非ajax方式,字符串转日期
@DateTimeFormat(pattern = “yyyy-MM-dd”)
private Date *pdate;//JsonFormat注解,用于ajax方式,字符串转日期
- //JsonFormat(pattern = “yyyy-MM-dd HH
ss”,timezone=”GMT+8”)*
@JsonFormat(pattern = “yyyy-MM-dd”)
public Date getPdate() {
return *pdate;
}//忽略部分get set 有参 无参 toString
}
ajaxJson.jsp
$(function(){
//$.post已经不能再用
- $.ajax({
method:“post”,
url:“**${ pageContext.request.contextPath}**/d1/run3.action”,
data:‘{“pname”:”大白菜”,”price”:”0.8”,”pdate”:”2019-01-01”}‘,
contentType:“application/json;charset=utf-8”
* });
});
Demo1Controller
/\**
- * 以前非ajax: 参数名=参数值&参数名=参数值*
- * ajax: {参数名:参数值,参数名:参数值}*
- **
- * ajax方式:RequestParam注解 无法在ajax方式下使用。只能在非ajax方式下使用*
- * **@param**product *\/*
@RequestMapping(“/run3”) public @ResponseBody Product run3(@RequestBody Product product){
System.*out*.println(product);
Product p1 = new Product(“大西瓜”, 20.0, new Date()); return** p1;
}
ajaxJson.jsp
$(function(){
//$.post已经不能再用
- $.ajax({
method:“post”,
url:“**${ pageContext.request.contextPath}**/d1/run3.action”,
data:‘{“pname”:”大白菜”,”price”:”0.8”,”pdate”:”2020-01-01”}‘,
contentType:“application/json;charset=utf-8”,
dataType:“json”,
success:*function (data) {});
alert(data.pname+**"-"**\+data.price+**"-"**\+data.pdate);
\}
});
注意事项:
springMVC-ajax总结
ajax发请求:
$.ajax({
method:”post”,
url:”/项目名/控制器名/方法名.action”,
data:**‘{“k1”:”v1”,”k2”:”v2”}‘,**
contentType:”application/json;charset=utf-8”
});
控制器接收请求,发送响应:
@RequestMapping(“/方法名”)
public @ResponseBody** 返回值类型 方法名(@RequestBody POJO对象){**
return 返回值;
}
注意:@RequestParam 只能用于非ajax方式。
Ajax方式该注解只能返回null.
Ajax接收响应:
$.ajax({
method:”post”,
url:”/项目名/控制器名/方法名.action”,
data:’{“k1”:”v1”,”k2”:”v2”}‘,
contentType:”application/json;charset=utf-8”**,**
dataType:”json”,
success:function(data){
},error:function(){
}
});
看完恭喜你,又知道了一点点!!!
你知道的越多,不知道的越多!
~感谢志同道合的你阅读, 你的支持是我学习的最大动力 ! **加油 ,陌生人一起努力,共勉!!**
还没有评论,来说两句吧...