@RestController、@Controller、@Controller结合@ResponseBody三种的对比

@RestController=@ResponseBody + @Controller. 
1、使用@RestController,则无法返回页面,配置的视图解析器不起作用,返回json字符串。

2、若想用@Controller返回json字符串,则得配合@ResponseBody。

3、若要返回指定的页面,则需要用@Controller注解。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`@ResponseBody`, `@RestController`, 和 `@Controller` 都是在Spring框架中用于处理HTTP请求并返回响应结果的注解,它们之间的主要区别在于如何管理返回数据的方式。 ### @ResponseBody `@ResponseBody`是一个用于标注类或方法的注解,表示这个类或方法将返回值直接作为HTTP响应体发送给客户端,而不会将其放入HTTP状态行后的实体内容部分。通常,当需要从控制器方法中返回JSON、XML或其他非HTML格式的数据时会使用它。这是因为传统的JSP或HTML视图(如通过转发到一个JSP页面)不适合处理非HTML格式的数据。 ### @RestController `@RestController` 是一个组合注解,它同时包含了 `@Controller` 和 `@ResponseBody` 的功能。这意味着它不仅能够处理HTTP请求并将响应发回客户端,而且所有的返回值都将被视为HTTP响应体,无需额外配置。这简化了RESTful服务的创建过程,因为开发者只需关注业务逻辑和返回数据,而不需要考虑视图模板或模型绑定等细节。 ### @Controller `@Controller` 注解主要用于声明控制器类,即负责处理HTTP请求并与业务逻辑交互的类。它的主要作用是映射HTTP请求路径,并调用适当的方法来处理这些请求。`@Controller` 类可以包含多个处理请求的方法,每个方法可以根据需要使用其他注解来指定返回的内容类型、是否接受特定的HTTP方法(GET、POST等),以及处理响应的方式。 --- ## 相关问题: 1. 在什么场景下应该优先选择使用 `@ResponseBody` 还是 `@RestController`? 当你需要直接返回非HTML格式的数据(如JSON、XML)时,通常会选择使用 `@ResponseBody`;而如果项目倾向于RESTful API风格,希望减少对视图的依赖,并且所有返回结果均为非HTML格式,则可以选择 `@RestController` 来简化API开发。 2. `@RestController` 是否意味着它可以完全替代 `@Controller`? 虽然 `@RestController` 提供了更简洁的方式来构建RESTful API,但它并不适用于所有情况。例如,在有大量依赖于复杂UI组件或需要深度集成的前端应用时,使用单独的 `@Controller` 可能更为合适。 3. 使用 `@RestController` 或 `@ResponseBody` 的注意事项有哪些? - 确保所有返回的非HTML格式数据都适合以纯文本形式发送给客户端,避免使用这类注解生成不必要的HTML结构。 - 在设计RESTful API时,考虑到一致性原则,统一使用 `@RestController` 或 `@ResponseBody` 的使用习惯可以帮助保持代码的一致性和易于理解性。 - 对于涉及到视图渲染的情况(如使用JSP、Thymeleaf等模板引擎渲染HTML),应使用 `@Controller` 并配合对应的视图解析器,而不是试图使用 `@ResponseBody` 返回视图字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值