SpringBoot的Controller四种方法返回值简介
下文笔者讲述Controller返回值简介说明,如下所示
Controller返回值简介
| 返回值类型 | 主要用途 | 适用场景 | |----------------------|---------------------------------------|----------------------------------| | `String` | 返回视图名称 | 渲染 HTML 页面 | | `ModelAndView` | 显式返回模型数据和视图名称 | 复杂视图渲染 | | `ResponseEntity<?>` | 完全控制 HTTP 响应 | 需要自定义响应头或状态码 | | 对象(如 `User`) | 返回 JSON 或 XML 数据 | RESTful API 开发 |
返回`String`
- 功能: 用于返回视图名称(配合Thymeleaf、Freemarker 等模板引擎使用) - 行为: - Spring 会将返回的字符串解析为视图名称 并通过视图解析器渲染对应的页面。 - 如果没有配置视图解析器, 则会直接返回字符串作为响应体。 - 适用场景:需要渲染 HTML 页面时。例
@Controller public class MyController { @GetMapping("/home") public String home() { return "index"; // 返回名为 "index" 的视图(如 index.html) } }
返回`ModelAndView`
-功能: 显式地返回一个`ModelAndView`对象 包含模型数据和视图名称。 - 行为: - `ModelAndView` 对象中 可以同时设置模型数据(传递给视图的数据)和视图名称。 - 更加灵活,适合复杂的视图渲染场景。 - 适用场景:需要同时指定模型数据和视图名称时。例
@Controller public class MyController { @GetMapping("/details") public ModelAndView details() { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("name", "Spring Boot"); // 添加模型数据 modelAndView.setViewName("details"); // 设置视图名称 return modelAndView; } }
返回`ResponseEntity<?>`
- 功能: 用于完全控制HTTP响应 包括状态码、响应头和响应体 - 行为: - 可以自定义 HTTP 状态码、响应头和响应体内容。 - 适用于需要精确控制 HTTP 响应的场景。 - 适用场景:API 开发中需要返回复杂响应或非标准状态码时。例
@RestController public class MyController { @GetMapping("/data") public ResponseEntity<String> getData() { return ResponseEntity.ok().header("Custom-Header", "Value").body("Success"); // 自定义响应头和状态码 } }
返回对象(如 `User`, `list<User>` 等)
- 功能: 直接返回一个 Java 对象 Spring 会自动将其序列化为 JSON 或 XML 格式(具体取决于 `Content-Type` 和配置) - 行为: - 默认情况下,`@RestController` 会将返回的对象转换为 JSON 格式并写入响应体。 - 如果是 `@Controller`,则需要配合 `@ResponseBody` 注解才能实现相同效果。 - 适用场景:RESTful API 开发中返回 JSON 数据时。例
@RestController public class MyController { @GetMapping("/user") public User getUser() { return new User(1, "John Doe"); // 返回一个 User 对象,自动序列化为 JSON } static class User { private int id; private String name; public User(int id, String name) { this.id = id; this.name = name; } // Getters and Setters } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。