SpringMVC-JSON数据交互

SpringMVC-JSON数据交互

1.JSON简介

JavaScript Object Notation。 脚本对象标签。
(1)用于存储数据的介质,类似于XML/HTML等。
Nosql 数据库Mongodb–》文档数据库。存储的是文档–》存储的JSON。
(3)用于数据的交互。以JSON的方式传递数据。

JsoN结构
(1){}包裹信息,里面是使用:隔开的key/value 一对一对的。
(2)json里面还可以包裹json
{“name”: “John Doe”, “age”: 18, “address”: {“country” : “china”, “zip-code”: “10000”}}

JSON和XML对比
(1)表示同样的信息量,JSON结构更简单。
(2)JSON的数据解析比XML的解析简单很多。
XML解析:SAX/Xpath解析
JSON解析:和操作普通java对象相同。对象.name
如下XML所示:

<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
	<property name="driverClassName" value="${jdbc.driver}" />
	<property name="url" value="${jdbc.url}" />
	<property name="username" value="${jdbc.username}" />
	<property name="password" value="${jdbc.password}" />
	<!--初始化连接池大小-->
  	<property name="initialSize" value="5"/>
  	<property name="maxTotal" value="20"/>
  	<!--连接池最小空闲-->
  	<property name="minIdle" value="0"/>
  	<!--获取连接池最大等待时间-->
  	<property name="maxWaitMillis" value="1"/>
</bean>

为什么需要使用JSON交互开发
请求客户端种类非常多,请求的方式有各种各样。导致服务端需要处理各种各样的方式的请求。不利于服务端统一开发。
使用JSON交互可以很好兼容各种不同的终端发起的请求。

2.SpringMVC JSON交互开发准备

2.1.前端开发JSP。

开发JSON交互,使用ajax,使用Jquery框架封装的ajax
在web项目里面放入jquery库的文件。
在这里插入图片描述

2.2.后端开发准备

导入Jar包。
SpringMVC 的j’son开发需要依赖下面的这些jar包。
http://mvnrepository.com/artifact/com.fasterxml.jackson.core
在这里插入图片描述

Jackson-databind:用于springMVC json数据的绑定。
Jackson-annotations: springMVC json注解的主持包
Jackson-core: json java 开发的核心jar包
Jackson-core-asl和jackson-mapper-asl :json String与json的转换需要的jar包。

3.JSON交互前端开发

3.1Jquery Ajax请求

在jsp中需要引入jquery库文件。
使用JQuery的Ajax方法发起请求。

$.ajax({
				url:"http://localhost:8080/ssm/getUser",
				data:JSON.stringify(data),
				type:"POST",
				dataType: "json",
				contentType: "application/json;charset=UTF-8",
				success:function(ret){
					//console.log(ret);
				},
			});

注意的地方:
(1)指定请求的contentType:application/json;charset=utf-8
(2)指定dataType:json
(3)data : 传递的参数。要求传入的是json字符串。
(4)Sucess:function(ret){}:处理成功的回调函数中,接收到的返回数据也是JSON,在回调函数中需要对J’son数据进行处理。

3.2 配置静态文件映射

   <mvc:resources location="/WEB-INF/css/" mapping="/css/**"></mvc:resources>
   <mvc:resources location="/WEB-INF/js/" mapping="/js/**"></mvc:resources>

3.3 JS的JSON操作

(1)将表单序列化为一个JSON对象

$('#formDemo').serializeJson()返回的是一个Object体
$.fn.serializeJson = function() {
	        var serializeObj = {};
	        var array = this.serializeArray();
	        var str = this.serialize();
	        $(array).each(
	                function() {
	                    if (serializeObj[this.name]) {
	                        if ($.isArray(serializeObj[this.name])) {
	                            serializeObj[this.name].push(this.value);
	                        } else {
	                            serializeObj[this.name] = [
	                                    serializeObj[this.name], this.value ];
	                        }
	                    } else {
	                        serializeObj[this.name] = this.value;
	                    }
	                });
	        return serializeObj;
	    };

(2)将JSON对象转换为一个字符串

JSON.stringify($('#formDemo').serializeJSON())返回的是JSON字符串

(3)将JSON字符串转换为JSON对象

var obj = str.parseJSON();或者var obj = JSON.parse(str); 

3.4 @RequestBody

用于将请求体中的数据绑定到方法的形参中,该注解应用在方法的形参上。
将JSON串绑定到形参上面上去,json里面的key 和Pojo的属性对应。
在这里插入图片描述

3.4.1 JSON绑定简单类型POJO

pojo是一个简单的类型。–>JSON的key和形参的pojo对象的属性名称相同。
JSON -》{id:“1111”,name:"",price:"",amount:"",description:""}
绑定的pojo 对象属性:
private int id,
private String name;
private float price;
private int amount;
private String description;

3.4.2 JSON绑定包装类型POJO

JS组装JSON串:
在这里插入图片描述
在这里插入图片描述

Controller中使用包装pojo绑定JSON串
在这里插入图片描述
包装类pojo

public class OfferVO {
	@Valid
	private Offer offer;//商品的基本信息
	@Valid
	private OfferExtend offerExtend;//商品的扩展信息
	
	public Offer getOffer() {
		return offer;
	}
	public void setOffer(Offer offer) {
		this.offer = offer;
	}
	public OfferExtend getOfferExtend() {
		return offerExtend;
	}
	public void setOfferExtend(OfferExtend offerExtend) {
		this.offerExtend = offerExtend;
	}
}

3.5 @ResponseBody

将对象封装成一个JSON串,返回给前端。
用在方法上,或者方法返回的数据类型之前。

3.8.6表单提交返回JSON
JS的开发

 $.ajax({
			  url:"offer/saveOfferJson",
			  method:"POST",
			  data:$('#saveOffer').serialize(),
			  success:function(result){
				  //打印到浏览器的控制台
				  console.log(result);
			  }
		  });

Controller开发

@RequestMapping("/saveOfferJson")
	public @ResponseBody Result saveOfferJson(OfferVO OfferVo) {
		
		System.out.println("获取到的Offerid:"+OfferVo.getOffer().getId());
		System.out.println("获取到的offername:"+OfferVo.getOffer().getName());
		Result result=new Result();
		//resultCode:100001 表示执行成功
		result.setResultCode("100001");
		result.setResultMessage("执行成功!");
		return result;
	}

参数绑定
在这里插入图片描述

后端返回JSON串
在这里插入图片描述

4.JSON交互场景总结

JSON交互的方式:
(1)请求是JSON串,在controller方法的形参上使用@RequestBody注解,将请求的JSON串绑定到pojo对象。
(2)请求的是表单提交的方式。直接使用springMVC的参数绑定,不需要做转换。
(3)返回JSON串,在controller方法的返回数据类型前加上@ResponseBody注解,将返回的对象转换为JSON串。
在这里插入图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页