Controller和RestController的区别

Java注解作为Java语言中的重要一部分,无论是在我们工程应用还是面试考核中都是经常出现的一个知识点。

脑海中第一个想到的区别就是返回值类型,两者都是作为控制器的标识!

@Controller和@RestController注解都是Spring MVC框架中的注解,用于标识一个类是Spring MVC controller处理器,可以接收HTTP请求。

它们的区别在于@RestController注解中多了@ResponseBody注解,而@ResponseBody注解主要用于返回json格式的数据。因此,主要区别就在于控制器中返回值类型为String的方法中

@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面。在方法上加@ResponseBody注解,也可以返回实体对象。而@RestController是@Controller和@ResponseBody的结合体,两个标注合并起来的作用。@RestController类中的方法只能返回json格式的数据。

举个例子,如果你需要返回一个HTML页面,那么你需要使用@Controller注解;如果你需要返回一个JSON格式的数据,那么你需要使用@RestController注解。

如果你忘记在使用@Controller注解的方法上加上@ResponseBody注解,那么返回值通常会被解析为跳转路径,控制器返回的时候路径会变为(在当前路径的上一级路径上追加路径),然后返回的过程找不到对应的视图,导致404的错误。

因此,如果你需要返回JSON格式的数据,那么你需要在方法上加上@ResponseBody注解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值