一、JSON概述
JSON (JavaScript Object Notation, js对象标记)是一种轻量级的数据交换格式。基于纯文本的数据格式。
JSON有两种数据结构:
-
对象结构
对象结构以“{“开始,以”}”结束。中间由0个或多个“,”分隔。其中key必须是String类型,value可以是其他类型。
语法结构: {
key1:value1,
key2:value2,
…,
key:value
} -
数组结构
数组结构以“[”开始,以“]”结束。中间由0个或多个“,”分隔
语法结构:[
value1,
value2,
…
value
] -
复杂数据结构(上面两种进行组合)
二、JSON数据转换
Spring提供了HttpMessageConverter接口来实现浏览器与Controller之间的数据交换,而默认处理JSON格式请求的实现类是MappingJackson2HttpMessageConverter
要使用该类,要引入Jackson的开源包(下载地址)
三、示例
1、导包
2、编写web.xml
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3、编写springmvc-config.xml
<!-- 定义扫描包 -->
<context:component-scan base-package="controller"></context:component-scan>
<!-- 定义视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 注解 -->
<mvc:annotation-driven />
<!-- 前端过滤 -->
<mvc:default-servlet-handler/>
4、编写页面index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<script type= "text/javascript" src="${pageContext.request.contextPath}/static/js/jquery.min.js"></script>
<script type= "text/javascript">
function clickJson() {
var username = $("#name").val();
var pwd = $("#pwd").val();
$.ajax({
url : "${pageContext.request.contextPath }/testJson " ,
type : "post" ,
data : JSON.stringify({
name:username ,pwd:pwd}) ,
contentType : "application/json;charset=UTF-8",
dataType : "json" ,
success : function(data) {
if (data != null) {
alert("您输入的用户名为: " + data.name + "密码为: " + data.pwd);
}
}
})
}
</script>
<html>
<head>
<title>Title</title>
</head>
<body>
<form>
用 户 名 :<input type= "text" name="name" id="name" /><br />
密 码 :<input type="text" name="pwd" id="pwd"/><br />
<button type="button" onclick="clickJson()">点我!</button>
</form>
</body>
</html>
5、编写Controller
//当注解使用RestController时,@ResponseBody不必添加
//@RestController = @Controller + @ResponseBody
//@RestController
@Controller
public class FirstController {
@RequestMapping("/testJson")
@ResponseBody
public UserEntity testJson(@RequestBody UserEntity userEntity){
System.out.println(userEntity);
return userEntity;
}
}
方法中的@RequestBody 注解用于将前端请求体中的 JSON 格式数据绑定到形参 user 上,
@ResponseBody 注解用于直接返回 User 对象(当返回 POJO 对象时,会默认转换为 JSON 格
式数据进行响应)。