👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主
⛪️ 个人社区:个人社区
💞 个人主页:个人主页
🙉 专栏地址: ✅ Java 高阶
🙉八股文专题:剑指大厂,手撕 Java 八股文
文章目录
- 1. 如何处理 JSON 的请求和响应
- 2. @ResponseBody 响应json
- 3. @RequestBody 响应 json
- 3.1. 通过ajax接收单个简单类型参数
- 3.2. 通过ajax接收实体类参数
- 3.3. 通过ajax接收Map类型参数
- 3.4. 通过ajax接收List类型参数
1. 如何处理 JSON 的请求和响应
在Spring MVC中处理JSON请求和响应有几种方法。以下是其中两种常用的方法:
-
使用@RequestBody和@ResponseBody注解:
- 对于处理JSON请求,可以在Controller的方法参数上使用@RequestBody注解。这将自动将请求的JSON数据绑定到方法参数对象中。
- 对于JSON响应,可以在Controller的方法上使用@ResponseBody注解。这将自动将方法返回的对象转换为JSON格式,并作为响应发送回客户端。
例如,假设我们有一个User类表示用户信息:
@Data
public class User {
private String name;
private int age;
}
然后,我们可以在Controller中使用这些注解来处理JSON请求和响应:
@RestController
public class UserController {
@PostMapping("/users")
public void createUser(@RequestBody User user) {
// 处理接收到的JSON请求
}
@GetMapping("/users/{id}")
public User getUser(@PathVariable int id) {
// 返回User对象,将自动转换为JSON响应
User user = // 从数据库获取用户信息
return user;
}
}
-
使用@ResponseBody和ResponseEntity:
- 对于JSON请求,可以直接在方法参数上使用@RequestBody注解,与第一种方法相同。
- 对于JSON响应,可以使用ResponseEntity类来包装响应数据,并设置HTTP状态码、头部信息等。同时,可以使用@ResponseBody注解将返回的对象转换为JSON格式。
例如:
@RestController
public class UserController {
@PostMapping("/users")
public void createUser(@RequestBody User user) {
// 处理接收到的JSON请求
}
@GetMapping("/users/{id}")
public ResponseEntity<User> getUser(@PathVariable int id) {
// 从数据库获取用户信息
User user = // ...
return ResponseEntity.ok(user); // 返回User对象,并设置HTTP状态码为200
}
}
2. @ResponseBody 响应json
@ResponseBody注解用于将方法的返回值转换为JSON格式,并作为响应发送回客户端。在Spring MVC中,默认情况下,使用Jackson库来进行JSON转换。
下面是一个示例代码,展示如何在Spring MVC中使用@ResponseBody注解来响应JSON数据:
@RestController
public class UserController {
@GetMapping("/users/{id}")
public ResponseEntity<User> getUser(@PathVariable int id) {
// 从数据库获取用户信息
User user = // ...
return ResponseEntity.ok(user); // 返回User对象,并设置HTTP状态码为200
}
}
getUser()
方法使用 @GetMapping
注解来处理GET请求,并使用 @PathVariable
注解来接收路径参数。方法的返回类型是 ResponseEntity<User>
,其中 User
是表示用户信息的类。 ResponseEntity
是Spring MVC提供的一个类,用于封装响应数据,包括HTTP状态码、头部信息等。
通过 ResponseEntity.ok(user)
,我们将 User
对象作为响应体,并设置HTTP状态码为200(表示成功)。由于在类上使用了 @RestController
注解,方法的返回值将自动转换为JSON格式,并作为响应发送回客户端。
3. @RequestBody 响应 json
3.1. 通过ajax接收单个简单类型参数
如果你想通过Ajax接收单个简单类型参数,并将响应以JSON格式返回,可以使用@ResponseBody注解来实现。在Spring MVC中,默认使用Jackson库进行JSON转换。
以下是一个示例代码,展示如何使用@ResponseBody注解来响应JSON数据,并通过Ajax接收单个简单类型参数:
@RestController
public class ExampleController {
@PostMapping("/example")
public ResponseEntity<String> processExample(@RequestBody String data) {
// 处理接收到的数据
String result = "处理结果:" + data;
return ResponseEntity.ok(result);
}
}
processExample()
方法使用 @PostMapping
注解来处理POST请求,并使用 @RequestBody
注解来接收请求体中的数据。方法的参数类型是 String
,表示接收到的数据。
通过 ResponseEntity.ok(result)
,我们将处理结果作为响应体,并设置HTTP状态码为200(表示成功)。由于在类上使用了 @RestController
注解,方法的返回值将自动转换为JSON格式,并作为响应发送回客户端。
在前端使用Ajax发送请求时,可以使用 $.ajax
或 $.post
等方法,并设置 dataType: 'json'
来指定接收的数据类型为JSON。例如:
$.ajax({
url: '/example',
type: 'POST',
data: 'Hello',
dataType: 'json',
success: function(response) {
console.log(response);
// 处理响应数据
}
});
上述代码中,我们发送了一个POST请求到 /example
路径,请求体中包含字符串数据"Hello"。通过设置 dataType: 'json'
,我们告诉Ajax请求接收JSON格式的响应数据。
3.2. 通过ajax接收实体类参数
如果你想通过Ajax接收实体类参数,并将响应以JSON格式返回,可以使用@ResponseBody注解来实现。在Spring MVC中,默认使用Jackson库进行JSON转换。
以下是一个示例代码,展示如何使用@ResponseBody注解来响应JSON数据,并通过Ajax接收实体类参数:
@RestController
public class ExampleController {
@PostMapping("/example")
public ResponseEntity<Result> processExample(@RequestBody Request request) {
// 处理接收到的请求数据
Result result = new Result("处理成功", request);
return ResponseEntity.ok(result);
}
}
processExample()
方法使用 @PostMapping
注解来处理POST请求,并使用 @RequestBody
注解来接收请求体中的数据。方法的参数类型是一个自定义的实体类 Request
,表示接收到的请求数据。
通过 ResponseEntity.ok(result)
,我们将处理结果作为响应体,并设置HTTP状态码为200(表示成功)。由于在类上使用了 @RestController
注解,方法的返回值将自动转换为JSON格式,并作为响应发送回客户端。
在前端使用Ajax发送请求时,可以使用 $.ajax
或 $.post
等方法,并设置 dataType: 'json'
来指定接收的数据类型为JSON。例如:
$.ajax({
url: '/example',
type: 'POST',
data: JSON.stringify({ name: 'John', age: 25 }),
contentType: 'application/json',
dataType: 'json',
success: function(response) {
console.log(response);
// 处理响应数据
}
});
上述代码中,我们发送了一个POST请求到 /example
路径,请求体中包含一个JSON对象,表示实体类参数。通过设置 contentType: 'application/json'
和 dataType: 'json'
,我们告诉Ajax请求发送JSON格式的数据,并接收JSON格式的响应数据。
3.3. 通过ajax接收Map类型参数
如果你想通过Ajax接收Map类型参数,并将响应以JSON格式返回,可以使用@ResponseBody注解来实现。在Spring MVC中,默认使用Jackson库进行JSON转换。
以下是一个示例代码,展示如何使用@ResponseBody注解来响应JSON数据,并通过Ajax接收Map类型参数:
@RestController
public class ExampleController {
@PostMapping("/example")
public ResponseEntity<Map<String, Object>> processExample(@RequestBody Map<String, Object> data) {
// 处理接收到的数据
Map<String, Object> result = new HashMap<>();
result.put("message", "处理成功");
result.put("data", data);
return ResponseEntity.ok(result);
}
}
processExample()
方法使用 @PostMapping
注解来处理POST请求,并使用 @RequestBody
注解来接收请求体中的数据。方法的参数类型是 Map<String, Object>
,表示接收到的数据。
通过 ResponseEntity.ok(result)
,我们将处理结果作为响应体,并设置HTTP状态码为200(表示成功)。由于在类上使用了 @RestController
注解,方法的返回值将自动转换为JSON格式,并作为响应发送回客户端。
在前端使用Ajax发送请求时,可以使用 $.ajax
或 $.post
等方法,并设置 dataType: 'json'
来指定接收的数据类型为JSON。例如:
$.ajax({
url: '/example',
type: 'POST',
data: JSON.stringify({ key1: 'value1', key2: 'value2' }),
contentType: 'application/json',
dataType: 'json',
success: function(response) {
console.log(response);
// 处理响应数据
}
});
上述代码中,我们发送了一个POST请求到 /example
路径,请求体中包含一个JSON对象,表示Map类型参数。通过设置 contentType: 'application/json'
和 dataType: 'json'
,我们告诉Ajax请求发送JSON格式的数据,并接收JSON格式的响应数据。
3.4. 通过ajax接收List类型参数
如果你想通过Ajax接收List类型参数,并将响应以JSON格式返回,可以使用@ResponseBody注解来实现。在Spring MVC中,默认使用Jackson库进行JSON转换。
以下是一个示例代码,展示如何使用@ResponseBody注解来响应JSON数据,并通过Ajax接收List类型参数:
@RestController
public class ExampleController {
@PostMapping("/example")
public ResponseEntity<List<String>> processExample(@RequestBody List<String> data) {
// 处理接收到的数据
List<String> result = new ArrayList<>();
for (String item : data) {
result.add("处理结果:" + item);
}
return ResponseEntity.ok(result);
}
}
processExample()
方法使用 @PostMapping
注解来处理POST请求,并使用 @RequestBody
注解来接收请求体中的数据。方法的参数类型是 List<String>
,表示接收到的数据。
通过 ResponseEntity.ok(result)
,我们将处理结果作为响应体,并设置HTTP状态码为200(表示成功)。由于在类上使用了 @RestController
注解,方法的返回值将自动转换为JSON格式,并作为响应发送回客户端。
在前端使用Ajax发送请求时,可以使用 $.ajax
或 $.post
等方法,并设置 dataType: 'json'
来指定接收的数据类型为JSON。例如:
$.ajax({
url: '/example',
type: 'POST',
data: JSON.stringify(['item1', 'item2', 'item3']),
contentType: 'application/json',
dataType: 'json',
success: function(response) {
console.log(response);
// 处理响应数据
}
});
上述代码中,我们发送了一个POST请求到 /example
路径,请求体中包含一个JSON数组,表示List类型参数。通过设置 contentType: 'application/json'
和 dataType: 'json'
,我们告诉Ajax请求发送JSON格式的数据,并接收JSON格式的响应数据。
精彩专栏推荐订阅:在下方专栏👇🏻
✅ 2023年华为OD机试真题(A卷&B卷)+ 面试指导
✅ 精选100套 Java 项目案例
✅ 面试需要避开的坑(活动)
✅ 你找不到的核心代码
✅ 带你手撕 Spring
✅ Java 初阶