欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

掌握SpringMVC-JSON数据交互

程序员文章站 2022-07-11 11:47:39
...

掌握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库的文件。
掌握SpringMVC-JSON数据交互

2.2.后端开发准备

导入Jar包。
SpringMVC 的j’son开发需要依赖下面的这些jar包。
http://mvnrepository.com/artifact/com.fasterxml.jackson.core
掌握SpringMVC-JSON数据交互

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的属性对应。
掌握SpringMVC-JSON数据交互

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串:
掌握SpringMVC-JSON数据交互
掌握SpringMVC-JSON数据交互

Controller中使用包装pojo绑定JSON串
掌握SpringMVC-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;
	}

参数绑定
掌握SpringMVC-JSON数据交互

后端返回JSON串
掌握SpringMVC-JSON数据交互

4.JSON交互场景总结

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

相关标签: SpringMVC spring