# 第十四章:JSON 数据和 RESTful 风格的 url
## 1.JSON: JavaSript Object Notation
> JSON数据的两种数据结构:
>
> 1.对象结构
>
> 2.数组结构
## 2.第13章和第14章的区别:
第13章:发送ur1,请求控制器中的某个方法,该方法返回jsp页面
第14章:发送url,请求webapp下的jsp页面,该页面中包含一个门S0N数据,该数据会被传递到控制器中的某个方法上,然后方法再将数据返回显示到浏览器中。
## 3.验证JS0N数据和Java类对象的转换
### 1.创建项目,导包:
```java
org.springframework
spring-web
4.3.6.RELEASE
org.springframework
spring-webmvc
4.3.6.RELEASE
com.fasterxml.jackson.core
jackson-annotations
2.8.8
com.fasterxml.jackson.core
jackson-core
2.8.8
com.fasterxml.jackson.core
jackson-databind
2.8.8
```
### 2.web.xml文件
```java
index.jsp
index1.jsp
springmvc
org.springframework.web.servlet.DispatcherServlet
springmvc
/
```
### 3.springmvc-servlet.xml文件
```java
```
### 4.创建实体类对象User
```java
package com.gzh.po;
private String username;
private String password;
通过 getter setter 和 toString 方法生成代码
```
### 5.在WEB-INF下创建 index.jsp
```html
测试JSON交互
```
### 6.导入文件 jquery-1.11.3.min.js
在webapp下创建文件夹 js 在文件夹下复制文件
![image-20220513233035481](https://lsky.hhdxw.top/imghub/img/image-20220513233035481.png)
### 7.创建UserController方法
```java
package com.gzh.controller;
@Controller
public class UserController {
@RequestMapping("/testJson")
@ResponseBody
public User testJson(@RequestBody User user){
System.out.println(user);
return user;
}
}
```
### 8.发布项目
![image-20220513231414012](https://lsky.hhdxw.top/imghub/img/image-20220513231414012.png)
## 4.RESTful支持
### 1.在 UserController 方法中添加查询方法
```java
/**
*接收RESTful风格的请求,其接收方式为GET
*/
@RequestMapping(value="/user/{id}",method= RequestMethod.GET)
@ResponseBody
public User selectUser(@PathVariable("id") String id){
//查看数据接收
System.out.println("id="+id);
User user=new User();
//模拟根据id查询出到用户对象数据
if(id.equals("1234")){
user.setUsername("tom");
}
//返回JSON格式的数据
return user;
}
```
### 2.编写页面文件 restful.jsp
```html
RESTful测试
```
### 3.发布项目
![image-20220513232938453](https://lsky.hhdxw.top/imghub/img/image-20220513232938453.png)