SpringMVC-高级-json数据交互

一.简述

javaWeb学习ajax时,浏览器和服务器之间数据交互使用JSON数据。

之前我们服务器使用JSON-LIB等第三方工具进行Java对象转JSON数据。

在SpringMVC我们使用更加快捷的Jackson来进行JSON和Java对象的互转

 

  • @RequestBody:自动将json 转换 成Java对象。  JSON---->JAVA
  • @ResponseBody:自动将Java对象 转换 成 json内容。JAVA--->JSON

 

实用:json数据交互

流程图

 

  1. ajax请求,传递json,服务器使用Java对象封装
  2. 服务器响应,传递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(){

 

}

});

 

 

 

 

看完恭喜你,又知道了一点点!!!

你知道的越多,不知道的越多! 

~感谢志同道合的你阅读,  你的支持是我学习的最大动力 ! 加油 ,陌生人一起努力,共勉!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值