SpringMVC-高级-json数据交互

柔光的暖阳◎ 2023-02-20 06:22 136阅读 0赞

一.简述

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

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

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

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

实用:json数据交互

流程图

format_png

  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) {
    1. alert(data.pname+**"-"**\+data.price+**"-"**\+data.pdate);
    2. \}
    });
    });

注意事项:

format_png 1

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(){

}

});

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

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

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

发表评论

表情:
评论列表 (有 0 条评论,136人围观)

还没有评论,来说两句吧...

相关阅读