简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。由于其简单易用,目前常用来通过AJAX与后台进行交互。springMVC对于接收、发送JSON数据也提供了支持,并能方便的将JSON数据与对象进行相互转换。

环境准备

由于springMVC对JSON的支持是基于jackson的,因此需引入jar包

配置pom.xml

 <!-- Jackson  -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.4</version>
</dependency>

对springMVC的处理器适配器注入JSON转换器

<!-- 处理器适配器配置 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<!-- 配置jackson转换器 -->
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
</list>
</property>
</bean>

若使用的是MVC注解驱动,则无需再单独配置

<mvc:annotation-driven></mvc:annotation-driven>

测试代码

@RequestBody注解可将请求的JSON数据自动转换为Controller方法的形参

@ResponseBody注解可将返回的对象转换成JSON数据输出

 @RequestMapping("/queryAccount.action")
@ResponseBody
//@RequestBody 前提:请求ContentType必须是application/json,不能是application/x-www-form-urlencoded或其它
public Account queryAccount(@RequestBody User user) throws Exception {
System.out.println(user.getUsername());
System.out.println(user.getPassword());
Account account = new Account();
account.setId("123");
account.setName("nlskyfree");
account.setMoney("3423.43");
return account;
}

JSP页面,使用原生AJAX发出请求

需引入json2.js进行js上的JSON数据与对象的转换

<html>
<script type="text/javascript" src="/springMVC/json2.js"></script>
<script type="text/javascript">
var xmlHttp;
function updateData() {
//4:响应已完成;您可以获取并使用服务器的响应了。
if(xmlHttp.readyState == 4) {
var response = xmlHttp.responseText;
alert(response);
var obj = JSON.parse(response); document.getElementById(3).value = obj.id;
document.getElementById(4).value = obj.name;
document.getElementById(5).value = obj.money;
}
}
//AJAX提交数据
function submit() {
//获得提交数据
var username = document.getElementById(1).value;
var password = document.getElementById(2).value;
//发出AJAX请求
xmlHttp = getXMLHttpRequest();
var url = "/springMVC/queryAccount.action";
//开启连接
xmlHttp.open("POST", url, true);
//返回函数
xmlHttp.onreadystatechange = updateData;
//设置数据为JSON格式
xmlHttp.setRequestHeader("Content-Type", "application/json");
var data = {"username": username, "password" : password};
//发送请求
xmlHttp.send(JSON.stringify(data));
}
//兼容各浏览器获取XMLHttpRequest
function getXMLHttpRequest() {
var xmlHttp = false;
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
return xmlHttp;
}
</script>
<body>
<h2>Hello World!</h2>
用户名:<input id="1" name="username" type="text"/>
密码:<input id="2" name="password" type="password"/><br/>
<br/>
<input type="button" value="查 询" onclick="submit();"/><br/>
<br/>
账户编号<input id="3" type="text"/><br/>
账户名称<input id="4" type="text"/><br/>
账户金额<input id="5" type="text"/>
</body>
</html>

结果:

springMVC入门(六)------json交互与RESTFul风格支持的更多相关文章

  1. Spring MVC之JSON数据交互和RESTful的支持

    1.JSON概述 1.1 什么是JSON JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式.它是基于JavaScript的一个子集,使用了C.C ...

  2. SpringMVC+Json构建基于Restful风格的应用(转)

    一.spring 版本:spring-framework-3.2.7.RELEASE 二.所需其它Jar包: 三.主要代码: web.xml <?xml version="1.0&qu ...

  3. springMVC上传图片,json交互(三)

    @RequestMapping 通过@RequestMapping注解可以定义不同的处理器映射规则. @RequestMapping(value="item")或@RequestM ...

  4. <SpringMvc>入门六 异常处理

    如果不做异常处理,那么一直将错误向上抛出,则会最后在页面上显示错误代码 服务启动后,访问test1方法,页面会报500 为了提示友好的错误页面,所以需要做异常处理 1.编写自定义异常类(做提示信息的) ...

  5. 1.4(Spring MVC学习笔记)JSON数据交互与RESTful支持

    一.JSON数据交互 1.1JSON简介 JSON(JavaScript Object Notation)是一种数据交换格式. 1.2JSON对象结构 {}代表一个对象,{}中写入数据信息,通常为ke ...

  6. SpringMVC(三)Restful风格及实例、参数的转换

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.Restful风格 1.Restful风格的介绍 Restful 一种软件架构风格.设计风格,而不是 ...

  7. 『政善治』Postman工具 — 3、补充:restful风格接口的项目说明

    目录 (一)RESTful架构风格特点 1.统一接口风格 2.规范的HTTP请求方法 3.HTTP响应码 4.什么是无状态 (二)JSON数据格式说明 1.什么是JSON 2.JSON格式的特点 3. ...

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

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

  9. springMVC学习(11)-json数据交互和RESTful支持

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

随机推荐

  1. leetcode 翻转字符串

    https://leetcode-cn.com/problems/reverse-words-in-a-string/ TLE代码: class Solution { public: string r ...

  2. PHP 5 echo 和 print 语句

    PHP 5 echo 和 print 语句 在 PHP 中有两个基本的输出方式: echo 和 print. 本章节中我们会详细讨论两个语句的用法,并在实例中演示如何使用 echo 和 print. ...

  3. MediaStreamConstraints对象

    MediaStreamConstraints对象作用是在调用getUserMedia()时用于指定应在返回的MediaStream中包括哪些轨道,以及(可选)为这些轨道的设置约束. 属性 audio布 ...

  4. ARC 062 F - Painting Graphs with AtCoDeer 割点 割边 不动点 burnside引理

    LINK:Painting Graphs with AtCoDeer 看英文题面果然有点吃不消 一些细节会被忽略掉. 问每条边都要被染色 且一个环上边的颜色可以旋转. 用c种颜色有多少本质不同的方法. ...

  5. 3.深入k8s:Deployment控制器

    Deployment可以做到很便捷的管理Pod,只需要在Deployment中描述一下希望的Pod状态时什么,包括定义Pod副本数.滚动升级和回滚应用.扩容和缩容.暂停和继续Deployment等,然 ...

  6. 关于tf.cond函数中“正确”与“错误”函数中的普通python语句始终执行的问题

    import tensorflow as tf import numpy as np x = tf.constant(2) y = tf.constant(3) global mask0 mask0 ...

  7. 最详尽的datagrip使用

    什么是datagrip? datagrip是jetbrains旗下的一款数据库管理工具,相信做过java开发的都知道,idea就是这家公司发明的. 为什么要使用datagrip? datagrip的有 ...

  8. Spring Boot的自动配置,到底是怎么做到?

    作者:祖大帅 链接:juejin.im/post/5b679fbc5188251aad213110 来源:掘金 1. Spring Boot.Spring MVC 和 Spring 有什么区别? 分开 ...

  9. 云计算&存储测试:FIO工具入门与实战

    一.关于FIO 1.1 简介 FIO是一个开源的I/O压力测试工具,主要是用来测试磁盘的IO性能,也可测试cpu,nic的IO性能.它可以支持13种不同的I/O引擎,包括:sync,mmap, lib ...

  10. kubernetes 中安装 heapster 问题

    step1: 在官网下载部署文件 https://github.com/kubernetes-retired/heapster/tree/master/deploy/kube-config/influ ...