一、@ResponseBody注解
在我们前面所编写的controller方法中,都已经设置了响应数据。

controller方法中的return的结果,怎么就可以响应给浏览器呢?
答案:使用@ResponseBody注解
@ResponseBody注解:
-
类型:方法注解、类注解
-
位置:书写在Controller方法上或类上
-
作用:将方法返回值直接响应给浏览器
-
如果返回值类型是实体对象/集合,将会转换为JSON格式后在响应给浏览器
-
但是在我们所书写的Controller中,只在类上添加了@RestController注解、方法添加了@RequestMapping注解,并没有使用@ResponseBody注解,怎么给浏览器响应呢?
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
System.out.println("Hello World ~");
return "Hello World ~";
}
}
原因:在类上添加的@RestController注解,是一个组合注解。
-
@RestController = @Controller + @ResponseBody
结论:在类上添加@RestController就相当于添加了@ResponseBody注解。
-
类上有@RestController注解或@ResponseBody注解时:表示当前类下所有的方法返回值做为响应数据
-
方法的返回值,如果是一个POJO对象或集合时,会先转换为JSON格式,在响应给浏览器
-
二、代码准备
实体类 Ex1.java
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Ex1 {
private String sheng;
private String shi;
}
请求处理类Repon.java
package com.example.collor;
import com.example.huang.Ex1;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
public class Repon {
@RequestMapping("/hello")
//1 响应字符串
public String hello(){
System.out.println("hello word");
return "hello word";
}
//2 响应实体对象
@RequestMapping("/ex1")
public Ex1 ex1(){
Ex1 ex1=new Ex1();
ex1.setSheng("河南");
ex1.setShi("商丘");
return ex1;
}
//3 响应集合对象
@RequestMapping("/method")
public List<Ex1> method(){
List<Ex1> list=new ArrayList();
Ex1 ex1=new Ex1();
ex1.setSheng("河南");
ex1.setShi("商丘");
Ex1 ex2=new Ex1();
ex2.setSheng("河北");
ex2.setShi("上海");
list.add(ex1);
list.add(ex2);
return list;
}
}
三、Apifox 响应结果
响应字符串

响应实体对象
http://localhost:8080/ex1

响应集合对象
http://localhost:8080/method


1125

被折叠的 条评论
为什么被折叠?



