@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的区别的更多相关文章

  1. RestController 和Controller的区别

    restful风格,restcontroller与controller 初步接触springmvc的时候,被要求使用restful风格,彼时一头雾水,不懂何谓restful,参阅了很多资料,慢慢的接触 ...

  2. @restcontroller与@controller的区别

    这段时间偷偷看了下spring boot.结果引用模板时没注意,把@restcontroller替换了@controlle,结果模板出不来.终究原因是spring的知识不到位. 下面说说这2的说明和区 ...

  3. 注解@RestController与@Controller的区别

    开发RESTful API 时,一般都会在Controller上加上@Controller注解,但是有时候加上@RestController,当同事问为什么的时候,我也一脸懵逼,默默的看了资料,现在就 ...

  4. 浅谈@RestController和@Controller的区别

    在做Spring MVC开发时,如果对@RestController或者@Controller这两个注解理解不够清晰的话,就难免会出现用混的情况.而混用的结果往往是无法实现期望的跳转结果或者是直接将跳 ...

  5. @RestController 与 @Controller 注解区别

    文章来源:https://www.cnblogs.com/hello-tl/p/9202658.html @RestController注解相当于@ResponseBody + @Controller ...

  6. RestController和Controller的区别

    知识点:@RestController注解相当于@ResponseBody + @Controller合在一起的作用. 1) 如果只是使用@RestController注解Controller,则Co ...

  7. SpringMVC中@RestController和@Controller的区别

    在使用SpringMVC时,对于Controller中的注解@RestController和@Controller需要我们区分清楚 @RestController注解相当于@ResponseBody和 ...

  8. SpringBoot 中 @RestController 和 @Controller 的区别

    1 - 在springboot中,@RestController 相当于 @Controller + @ResponseBody;2 - 即在Controller类中,若想返回jsp或html页面,则 ...

  9. @RestController和@Controller的区别与作用

    在springMvc中controller层类上的要使用@Controller来注明该类属于控制层,在controller层常返回的数据形式有以下几种: 页面:静态页面 ModelAndView:返回 ...

  10. @RestController 与 @Controller @RequestMapping("/") 区别很大

    后者可以通过返回字符串,返回到指定路径的html http://localhost:8080/  这样显示 ,但是仍以get方式请求的. https://www.cnblogs.com/zgqys19 ...

随机推荐

  1. Packer构建openStack镜像

    目录 使用Packer自动化构建镜像 使用Packer自动化构建镜像 openstack插件安装:OpenStack | Integrations | Packer | HashiCorp Devel ...

  2. 登录到第一级终端后,如果再次ssh登录到其他终端,SecureCRT标签变更的问题

    "终端->仿真->高级",勾选"忽略窗口标题更改请求"

  3. 【Lodop】02 C-Lodop手册阅读上手

    版本:4.0.6.2 一.概述 C-Lodop云打印是一款精巧快捷的云打印服务产品,以Lodop功能语句为基础,JS语句实现远程打印 移动设备+Wifi+普通打印机+集中打印 C-Lodop对客户端浏 ...

  4. pyqt编写的走迷宫游戏环境,python语言,exe文件可以成功运行Window10系统上

    PS. 要注意,这个项目使用源码安装的方式无法成功运行,显示报错,尝试过多个python版本和pyqt的版本,估计是长期没有维护的原因,因此源码是无法运行的,但是exe的可执行文件(打包后的)是可以成 ...

  5. 【转载】 固定随机种子比较强化学习算法——pytorch框架

    原文地址: https://www.cnblogs.com/lucifer1997/p/13801102.html ========================================== ...

  6. Java项目生产启动、关闭脚本

    1.直接启动 #!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME=XXXX-api-1.0.jar #使用说明,用来提示输入参数 usage() { echo ...

  7. Apache DolphinScheduler 3.1.8 版本发布,修复 SeaTunnel 相关 Bug

    近日,Apache DolphinScheduler 发布了 3.1.8 版本.此版本主要基于 3.1.7 版本进行了 bug 修复,共计修复 16 个 bug, 1 个 doc, 2 个 chore ...

  8. 开源的 P2P 跨平台传文件应用「GitHub 热点速览」

    就在上周,发完那篇文章之后不久,我就有幸获得了 GitHub Models 服务公测的访问权限,所以就体验了一下 Playground 聊天功能. 起初,我以为这是"微软菩萨"降临 ...

  9. 恶补基础知识:Java 栈与队列详解

    @ 目录 前言 简介 栈 Java实现栈的示例代码: 栈的主要应用场景包括: 队列 Java实现队列的示例代码: LinkedList中的add方法和offer方法的区别 队列主要应用场景: 总结 前 ...

  10. mysql读写分离之springboot集成

    springboot.mysql实现读写分离 1.首先在springcloud config中配置读写数据库 mysql: datasource: readSize: 1 #读库个数 type: co ...