@RestController和@Controller的区别
@RestController
和 @Controller
是Spring框架中用于定义控制器(Controller)的两个非常重要的注解,它们都用于处理HTTP请求,但它们之间存在一些关键的区别。
1.@Controller
@Controller
注解是Spring MVC的一部分,用于定义一个控制器类。- 当Spring MVC接收到一个请求时,它会根据请求的URL映射到相应的控制器类上。
@Controller
注解的类中的方法返回的是字符串(通常是视图名)或ModelAndView对象,这些返回值会用于渲染视图(通常是JSP页面)。@Controller
注解通常与@RequestMapping
或它的变体(如@GetMapping
,@PostMapping
等)一起使用来定义请求处理的方法。- 如果你希望将MVC模式中的“控制器”部分与“视图”部分分离,并且希望由Spring MVC来管理视图的渲染,那么你应该使用
@Controller
。
2.@RestController
@RestController
是Spring 4引入的一个方便的注解,它实际上是@Controller
和@ResponseBody
的组合注解。- 它意味着,当控制器中的方法返回一个对象时,Spring会自动将这个对象转换为JSON或XML(取决于请求的
Accept
头部)并写入HTTP响应体中。 @RestController
更适合构建RESTful Web服务,因为它简化了返回JSON或XML数据的过程。- 使用
@RestController
注解的控制器类中的方法通常会返回一个对象或对象列表,而不是视图名或ModelAndView对象。 @RestController
也常与@RequestMapping
或它的变体一起使用来定义请求处理的方法。
3.注意
- 如果你正在构建一个需要渲染视图的Web应用(如基于JSP的Web应用),那么你应该使用
@Controller
。 - 如果你正在构建一个RESTful Web服务,希望直接返回JSON或XML等数据格式,那么
@RestController
将是更好的选择。 @RestController
简化了返回数据的过程,因为它自动将返回的对象转换为JSON或XML,而@Controller
则需要额外的步骤来渲染视图。
上代码和效果图
@Controller注解
点击查看代码
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/init")
public String init() {
return "login";
}
}
@RestController注解
点击查看代码
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/init")
public String init() {
return "login";
}
}
@RestController和@Controller的区别的更多相关文章
- RestController 和Controller的区别
restful风格,restcontroller与controller 初步接触springmvc的时候,被要求使用restful风格,彼时一头雾水,不懂何谓restful,参阅了很多资料,慢慢的接触 ...
- @restcontroller与@controller的区别
这段时间偷偷看了下spring boot.结果引用模板时没注意,把@restcontroller替换了@controlle,结果模板出不来.终究原因是spring的知识不到位. 下面说说这2的说明和区 ...
- 注解@RestController与@Controller的区别
开发RESTful API 时,一般都会在Controller上加上@Controller注解,但是有时候加上@RestController,当同事问为什么的时候,我也一脸懵逼,默默的看了资料,现在就 ...
- 浅谈@RestController和@Controller的区别
在做Spring MVC开发时,如果对@RestController或者@Controller这两个注解理解不够清晰的话,就难免会出现用混的情况.而混用的结果往往是无法实现期望的跳转结果或者是直接将跳 ...
- @RestController 与 @Controller 注解区别
文章来源:https://www.cnblogs.com/hello-tl/p/9202658.html @RestController注解相当于@ResponseBody + @Controller ...
- RestController和Controller的区别
知识点:@RestController注解相当于@ResponseBody + @Controller合在一起的作用. 1) 如果只是使用@RestController注解Controller,则Co ...
- SpringMVC中@RestController和@Controller的区别
在使用SpringMVC时,对于Controller中的注解@RestController和@Controller需要我们区分清楚 @RestController注解相当于@ResponseBody和 ...
- SpringBoot 中 @RestController 和 @Controller 的区别
1 - 在springboot中,@RestController 相当于 @Controller + @ResponseBody;2 - 即在Controller类中,若想返回jsp或html页面,则 ...
- @RestController和@Controller的区别与作用
在springMvc中controller层类上的要使用@Controller来注明该类属于控制层,在controller层常返回的数据形式有以下几种: 页面:静态页面 ModelAndView:返回 ...
- @RestController 与 @Controller @RequestMapping("/") 区别很大
后者可以通过返回字符串,返回到指定路径的html http://localhost:8080/ 这样显示 ,但是仍以get方式请求的. https://www.cnblogs.com/zgqys19 ...
随机推荐
- Java 线程池之Jetty 线程池学习总结
Java 线程池之Jetty 线程池学习总结 前提 Jetty 11.0.x 为什么是Jetty? Java提供4中创建线程池的快捷方式 Executors.newFixedThreadPool(); ...
- exceptionx:灵活便捷的Python异常处理库,让异常处理更高效!
exceptionx English | 中文 exceptionx 是一个灵活且便捷的Python异常处理库,允许你动态创建异常类,并提供多种异常处理机制. exceptionx 的前身是 gqyl ...
- 3、Git之常用命令
3.1.速查表 命令 作用 git config --global user.name 用户名 设置用户签名(昵称) git config --global user.email 邮箱 设置用户签名( ...
- 【Vue】Re23 组件封装
视频地址: https://www.bilibili.com/video/BV15741177Eh?p=119 common.css /* 演示案例是base.css */ body { paddin ...
- 【Spring-Security】Re08 Thymeleaf权限控制 与 退出功能
一.需要的组件支持: 新版本这里的组件有些问题: https://blog.csdn.net/qq_36488647/article/details/104532754 https://blog.cs ...
- 【Vue】12 VueRouter Part2 路由与传参
[编程式导航] 我们希望在路由跳转之前执行某一些功能... <template> <div id="app"> <h2>这是App.vue组件的 ...
- 全地形人形机器人(humanoid)是否只能进行短距视野感知呢 —— 实时地形感知
相关: https://capital.lenovo.com/news/detail/id/924/s/1.html 常见的人形机器人都是测试其手臂灵活度为主,但是近日看到一款以全地形步态行走为主的机 ...
- 查看并添加python中库的搜索路径
根据前文 pip install --user 使用方法和注意事项--python中安装module库到用户packages路径中 我们知道python中除了自身的全局module lib路径以外还 ...
- 这篇 DolphinScheduler on k8s 云原生部署实践,值得所有大数据人看!
在当前快速发展的技术格局中,企业寻求创新解决方案来简化运营并提高效率成为一种趋势. Apache DolphinScheduler作为一个强大的工具,允许跨分布式系统进行复杂的工作流任务调度.本文将深 ...
- devtools工具遇到的坑
下载devtools一定要下载5.1.1版本,其他版本要么就是下载依赖不行,要么就是打包不行,不清楚的同学会下载最新版,最新版的不能用,切记 地址放这里了: https://github.com/vu ...