#什么是json?

json是一种用于储存数据格式或是数据传输方式,是js脚本语言的子集。

#json的作用?

传递对象、数组等数据结构。如果是单个数据,则要用数组,不用对象,因为对象是键值对的方式去存储,其形式为“名称:值”的形式,名称必须为字符串类型,而可以为任意类型

json是用于数据交换的,浏览器与控制器之间进行数据交换,Spring提供了一个接口来完成该工作,并用该接口的实现类来完成操作,该实现类要用jackson开源包(在Maven仓库中找到相关依赖,然后在pom.xml中下载相关的数据)来读写数据,并将java对象转换为json对象或xml文档,也可以将json对象和xml文档转换为java对象。(java对象<----->json对象或xml文档进行转换)

#json与xml区别?

都是数据传输方式,但相比之下,json占内存小,且解析速度快

-------------------------------------------------------------------------------------

#操作:

1).添加相关Spring包,另外,在http://mvnrepository.com/artifact/com.fasterxml.jackson.core下载fastjson包,其实在github上有相关代码备份;从经验上来看最好用阿里的fastjson,用json包有时会出现版本冲突;

相关的pom.xml依赖入下:

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.24</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>

2).在web.xml中配置前端控制器和Spring-config.xml的路径,并添加静态资源文件的配置,因web.xml没有设置对相关请求的拦截,需要在Spring-config.mvc中添加<mvc:resources location="" mapper="">,这里首先要引入jq库;

3).在Spring-config.xml中,添加额外如下配置:

 <mvc:annotation-driven>
<!--配置@ResponseBody由fastjson解析-->
<mvc:message-converters>
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
<mvc:default-servlet-handler /> <!-- 支持mvc注解驱动 -->
<!--
在spring中一般采用@RequestMapping注解来完成映射关系,
要想使@RequestMapping注解生效必须向上下文中注册
DefaultAnnotationHandlerMapping
和一个AnnotationMethodHandlerAdapter
实例,这两个实例分别在类级别和方法级别处理。而annotation-driven配置帮助
我们自动完成上述两个实例的注入。
-->
<mvc:resources location="/js/" mapping="/js/**"/>

4).根据表单写javaBean;

5).写jsp页面,这里面涉及到ajax

 <%--
Created by IntelliJ IDEA.
User: shijinglu
Date: 2019/2/1
Time: 20:21
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>测试JSON交互</title> <!--引入js文件,引入路径 从当前项目的js文件夹下的jquery-1.11.3.min.js-->
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.11.3.min.js">
</script>
<!--写一个function testJson()-->
<script type="text/javascript">
function testJson() {
<!--获取用户输入的用户名和密码-->
var username=$("#username").val();
var password=$("#password").val();
<!--发一个ajax请求-->
$.ajax({
<!--testJson路径 默认是当前页的地址,这里是交给testJson处理-->
url:"${pageContext.request.contextPath}/testJson",
type:"post",
<!--把发送过来的数据转换成json字符串-->
data:JSON.stringify({username:username,password:password}),
<!--请求类型设置为json字符串,并设置字符集为utf-8-->
contentType: "application/json;charset=UTF-8",
<!--定义回调的响应格式为json字符串,该属性可以省略-->
dataType:"json",
success : function(data) {
if(data !=null){
alert("您输入的用户名为:"+data.username+"密码为:"+data.password);
}
}
}); }
</script>
</head>
<body>
<form>
用户名:<input name="username" id="username"><br/> <!--name后面的值必须与pojo里面封装的值一致,否则读取的值是空值-->
密&nbsp;&nbsp;&nbsp;码:<input type="password" name="password" id="password"><br/>
<input type="button" value="测试json交互" onclick="testJson()">
</form>
</body>
</html>

6).写控制器;

@Controller  //表示控制器  等价于在配置文件里面写<bean id="" class="">
public class UserController{ /**
* 接收页面请求的数据,并以json格式返回数据
* */
@RequestMapping(value="/testJson",method = RequestMethod.POST,consumes = "application/json")
//@ReponseBody:是把user对象转换为json,因为响应端的浏览器不认识java对象,但认识js对象标记。
@ResponseBody
//@RequestBody:把请求的json字符串(data后面的内容)转换成user对象
public User testJson(@RequestBody User user){
System.out.println(user);
//并返回json格式
return user;
}
}
 

原理待补充;

SpringMVC之JSON交互的更多相关文章

  1. springmvc实现json交互 -requestBody和responseBody

    json数据交互 1.为什么要进行json数据交互 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservice接口,传输json数据. 2. ...

  2. Ajax和SpringMVC之间JSON交互

    Ajax和SpringMVC之间的json数据传输有两种方式: 1.直接传输Json对象 2.将Json序列化成json字符串 1.直接传输Json对象 前端Ajax $(document).read ...

  3. SpringMVC的json交互

    一.注解说明 1.@RequestBody  作用:@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内 ...

  4. springmvc之json交互406异常(Not Acceptable)和415异常(Unsupported Media Type)

    一. 406异常(Not Acceptable) 1. 没有添加jackson-databind包2. 请求的url的后缀是*.html.在springmvc中如果请求的后缀是*.html的话,是不可 ...

  5. 九 SpringMvc与json交互

    将json输出到页面: 1 加入jar包 2 配置Controller层,开启注解ResponseBody,将json发送到页面: 3 访问url 4 响应json,在形参列表里面加上注解

  6. SpringMVC详解(六)------与json交互

    Json(JavaScript Object Notation),它是一种轻量级数据交换格式,格式简单,易于读写,目前使用特别广泛.那么这篇博客我们主要谈谈在 SpringMVC 中,如何对 json ...

  7. SpringMVC学习--json

    简介 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便.比如:webservice接口,传输json数据. springmvc与json交互 @RequestB ...

  8. SpringMVC框架五:图片上传与JSON交互

    在正式图片上传之前,先处理一个细节问题: 每一次发布项目,Tomcat都会重新解压war包,之前上传过的图片会丢失 为了解决这个问题:可以不在Tomcat下保存图片,而是另找一个目录. 上传图片: & ...

  9. springMVC的高级数据绑定,以及json交互,全局异常配置,

    一.窄化请求映射 1.在class上添加@RequestMapping(url)指定通用请求前缀, 限制此类下的所有方法请求url必须以请求前缀开头,通过此方法对url进行分类管理. 如下: @Con ...

随机推荐

  1. git add 所有文件

    git add 多个文件的格式介绍 git提交修改之前要add然后commit,假如我用git clone远程服务器文件到本地,然后我如果修改了其中几个文件要提交,我必须一个个的如: $git add ...

  2. PLSQL的SQL%NOTFOUND的使用场景

    SELECT * INTO v_ticketStorageRow FROM BDM_TICKET_STORAGE WHERE p_startTicketNo >= START_NO_ AND p ...

  3. 部分还款-还款试算接口与还款接口-python

    一.还款试算.还款接口, 1.只传入参数loan_Code 2.还款接口参数化以下: "loanCode": loanCode1,"orderId": orde ...

  4. Adobe Acrobat 9 Pro序列号

    其实只删除c:\Program Files\Common Files\Adobe\Adobe PCD\cache目录下的cache.db文件也是可以的,然后重新打开Adobe ,输入序列号1118-4 ...

  5. Stacking调参总结

    1. 回归 训练了两个回归器,GBDT和Xgboost,用这两个回归器做stacking 使用之前已经调好参的训练器 gbdt_nxf = GradientBoostingRegressor(lear ...

  6. T Y P E L I B R A R I E S库加载

    #---------------------------------------------------------------------------- # T Y P E L I B R A R ...

  7. FlexViewer之整体框架解析

    参考:https://www.cnblogs.com/naaoveGIS/p/3915912.html GIS之家:https://xiaozhuanlan.com/gishome 小专栏:https ...

  8. oracle 常用(一)

    常用的6个分组函数: 注意点:where字句中不能使用组函数.要用到having函数. 但是从优化角度看,尽量使用where avg :平均值           sum:求和            ...

  9. vuex的使用二

    1.先看项目的目录结构 2.在main.js里需要引入store这个文件并挂在实例上 import store from './store/store' ............ new Vue({ ...

  10. 001-http协议-请求报文以及服务器响应状态

    Http协议的几个概念: 1.连接(Connection):浏览器和服务器之间传输数据的通道. 一般请求完毕就关闭,http不保持连接.不保持连接会降低处理速度(因为建立连接速度很慢),保持连接的话就 ...