java json交互_SpringMVC JSON数据交互

在SpringMVC中使用json,需要添加Jackson的3个jar包:

jackson-core.jar    jackson的核心包

jackson-datebind.jar   jackson数据绑定需要的包

jackson-annotations.jar   使用jackson注解需要的包

Jackson  jar包的下载

使用maven是最简单的,jar包只能到maven仓库下载:

5487d22d12186ee11d9ad9a2e758b0a4.png

前三个分别对应Jackson的3个jar包,需要分别下载。

fc28e5c0affb677cd9fbae18f23e8b93.png

23196a3621353c3b57f0eb9eeb74b4e8.png

使用流程

以根据学号查询学生信息为例。

(1)添加jackson的3个jar包

(2)在web下新建文件夹js,把jquery.min.js放进去

(注意是web文件夹下,不是WEB-INF下)

(2)com.chy.model.Student

@Component

@Scope("prototype")

public class Student {

privateintid;

private String name;

privateintage;

privatefloatscore;

publicintgetId() {returnid;

}

publicvoid setId(intid) {this.id =id;

}

public String getName() {returnname;

}

publicvoidsetName(String name) {this.name =name;

}

publicintgetAge() {returnage;

}

publicvoid setAge(intage) {this.age =age;

}

publicfloatgetScore() {returnscore;

}

publicvoid setScore(floatscore) {this.score =score;

}

}

每个学生都不相同,设计为多例。

这个bean作为数据传输对象,持久层(dao)用Student对象来封装查询结果,传回给业务层(controller),业务层将Student对象作为响应传给视图层。

(4)前端使用ajax发起请求

学号:

查询学生信息

--%>

$.ajax({//开头不能加/,但可以加 ${pageContext.request.contextPath}/

url:"studentController/queryStudent",

type:"post",//传给后台的数据类型、使用的字符集。可以缺省,因为data:{},看到{}就会自动作为json处理

//contentType:"application/json;charset=utf-8",

//传给后台的数据,json形式,key是String类型,value可以是多种类型,键值对之间逗号分隔

data:{"id":$("#id").val()},//期待的返回值类型(回调函数的参数类型)

dataType:"json",

error:function() {

console.log("ajax请求数据失败!");

},

success:function(data) {//浏览器把接受到的json数据作为js对象,可通过.调用属性

var info = "姓名:" + data.name + ",年龄:" + data.age + ",成绩:" +data.score;

$("#show").text(info);

}

})

});

如果要请求纯文本(字符串),将dateType的值改为text。

(4)后台使用controller处理ajax请求

@org.springframework.stereotype.Controller

@RequestMapping("studentController")

public class StudentController{

private Student student;

@Autowired

publicvoidsetStudent(Student student) {this.student =student;

}

@RequestMapping("/queryStudent")

@ResponseBody

public Student queryStudent(intid) {

System.out.println(id);//此处省略连接数据库查询

student.setName("chy");

student.setAge(20);

student.setScore(100);returnstudent;

}

}

可以用简单数据类型接收前端传来的数据,也可以使用Bean来接收(会赋给同名的属性)。

很多教程说要在业务方法的参数前面加@RequestBody,才能将ajax传来的数据转换为需要的类型;

事实上,随着版本更替,高版本SpringMC内建的转换器已经可以将ajax传来的数据转换需要的类型,加@RequestBody反而会出错。

需要在业务方法上添加注解@ResponseBody,此处解会自动将返回值添加到响应体中,来响应ajax请求。

不管请求的是text、还是json,都需要使用@ResponseBody。

如果请求的是text,将返回值类型写成String;

如果请求的是json,返回值可以写成bean(返回json对象,比如请求一个学生的信息),也可以写成List(返回json数组,比如请求多个学生的信息)。

(5)springmvc的配置

踩过的坑

一看到这种以mvc开头的元素:

就知道IDEA又要导错约束:

将cache改为mvc,xsi中对应的2处也要改。

json转换器的2种配置方式

我们在controller中使用了@ResponseBody、@RequestBody2个注解来进行json——java类型之间的转换,这2个注解需要jackson提供的类型转换器的支持。

配置方式一:

配置方式二:

与方式一的配置等价。

ps:

json,即Jackson的缩写,官方在github上的项目名不是json,而是fastxml,更快的xml。

json可以看做是xml的变种,早些年基本都是用xml做数据交互,近些年随着json的兴起,都使用json代替xml了。

jackson的jar包中不仅提供了json转换器,也提供了xml转换器。

资源配置

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值