一.简述
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:mm: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(){
}
});
看完恭喜你,又知道了一点点!!!
你知道的越多,不知道的越多!
~感谢志同道合的你阅读, 你的支持是我学习的最大动力 ! 加油 ,陌生人一起努力,共勉!!