什么是 Json
JSON(JvaScript Object Notation)(官网网站:JSON)是 一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。它基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的一个子集。 JSON 采用完全独立于语言的文本格式,但是也使用了类似于 C 语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使 JSON 成为理想的数据交换语言。
所用架包:
? ? ? ? ? ? ? ? 三个开源包: ?? ??? ??? ??? ?jackson-annotations-2.8.8.jar ?? ??? ??? ??? ?jackson-core-2.8.8.jar ?? ??? ??? ??? ?jackson-databind-2.8.8.jar
? ? ? ? ? ? ? ? 以下为基础包:
????????????????commons-logging-1.2.jar ?? ??? ??? ??? ?spring-aop-4.3.6.RELEASE.jar ?? ??? ??? ??? ?spring-beans-4.3.6.RELEASE.jar ?? ??? ??? ??? ?spring-context-4.3.6.RELEASE.jar ?? ??? ??? ??? ?spring-core-4.3.6.RELEASE.jar ?? ??? ??? ??? ?spring-expression-4.3.6.RELEASE.jar ?? ??? ??? ??? ?spring-web-4.3.6.RELEASE.jar ?? ??? ??? ??? ?spring-webmvc-4.3.6.RELEASE.jar
案例步骤
第一步:创建Web项目,chapter14,并导入相关架包
第二步:再WEB-INF下,创建并配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"
version="3.1" metadata-complete="true">
<!-- 配置Spring MVC 前端控制器 -->
<servlet>
<!-- 配置前端过滤器 -->
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!-- 初始化时加载配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- Spring MVC配置文件的地址 -->
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<!-- 表示容器在启动时立即加载Servlet -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 拦截器,这里表示拦截所有请求,并交由DispatcherServlet处理-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 配置Spring提供的编码过滤器 -->
<!-- 编码过滤器解决了前端页面传入中文数据出现的乱码问题, -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
第三步:再src下创建并配置springmvc-config.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
">
<!-- 定义注解扫描器,指定需要扫描的包 -->
<context:component-scan base-package="com.itheima.controller"></context:component-scan>
<!-- -->
<!-- 配置注解驱动 -->
<mvc:annotation-driven ></mvc:annotation-driven>
<!-- 配置静态资源访问映射,此配置中的文件被spring mvc映射访问 -->
<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
<!-- 定义视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 设置前缀 -->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!-- 设置后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
第四步:用到的静态资源,在WebContent下创建,js文件夹,并导入jquery-1.11.3.min.js
第五步:在springmvc-config.xml中配置静态资源
<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
第六步:在src下,创建com.itheima.controller包,并创建User.java
package com.itheima.po;
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
}
}
第七步:在WebContent下创建index.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试JSON交互</title>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.11.3.min.js"></script>
<script type="text/javascript">
function testJson() {
//获取用户名和密码
var username=$("#username").val();
var password=$("#password").val();
$.ajax({
url:"${pageContext.request.contextPath}/testJson",
type:"post",
//date表示发送的数据
data:JSON.stringify({username:username,password:password}),
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 type="text" name="username" id="username"/>
密码:<input type="password" name="password" id="password"/>
<input type="button" value="测试Json交互" onclick="testJson()"/>
</form>
</body>
</html>
?第八步:在src下,创建com.itheima.controller包,并创建UserController控制器
package com.itheima.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.itheima.po.User;
@Controller
public class UserController {
@RequestMapping("/testJson")
//返回数据时,由于浏览器不认识我没自己创建的User对象,所以需要@ResponseBody转换成json数据
@ResponseBody
/*
* 因为jsp页面发送过来的是JSON格式的数据,所以这里需要@ResponseBody转换成java对象,即我们创建的对象
*注:前端传来的数据名称和后端的数据名称要相同,才可正确匹配到数据
*/
public User testJson(@RequestBody User user) {
//输出接受的JSON格式数据
System.out.println(user);
//返回JSON格式的响应
return user;
}
}
|