小白面试题:@Controller和@RestController的区别

本文对比了SpringMVC中@Controller与@RestController的使用场景,前者传统用于JSP页面,后者适应现代AJAX与JSON,强调了@RestController的兼容性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两个注解都是用于SpringMVC框架,
早期使用JSP做页面展示时,习惯使用Controller注解,它返回的是SpringMVC框架提供的ModelAndView对象(简称Model对象)
而当今主流习惯的时控制层返回JSON,前台页面通过ajax提交Controller请求,然后获得JSON字符串响应,然后解析JSON,从中获取数据后在页面上展现。
显然这种方式优于早期只为JSP服务的方式,不仅兼容就的JSP方式,支持新的ajax方式,甚至能异构系统,前台是nodejs下的vue+elementui等。

说了半天怎么跟题目好像无关呢?别着急说清了背景,区别就出来了。
@Controller 适合早期JSP方式,它直接返回ModelAndView对象。
@RestController 适合现今大前端方式,如VUE,它返回JSON,vue对json解析,渲染到页面上。

*** @since 2.5**

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {

*** @since 4.0**

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {

为了兼容以前方式,RestController其实就是Controller,只是在Controller返回对象前,它干了件事情,通过注解标识@ResponseBody把返回的对象Object,转换成了JSON字符串。

这里注意@Controller返回也是java对象,但它本质是SpringMVC框架的ModelAndView对象;
而@RestController返回则是业务对象,或者统一的返回值对象 SysResult。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值