当前位置: 首页 > news >正文

@RestController 和 @Controller 注解的联系及要点

1. @RestController

• @RestController 是 Spring 4.0 引入的一个注解,它相当于 @Controller + @ResponseBody组合注解

主要作用:主要用于构建 RESTful Web 服务。标注 @RestController 的类里的所有方法,返回的都是 JSON 或 XML 等格式的数据,而不是视图页面。

自动返回数据:与 @Controller 不同,@RestController 下的每个方法默认都会将返回的对象序列化为 JSON 或 XML,并直接写入 HTTP 响应体。你无需在每个方法上再加 @ResponseBody。

返回值处理它默认将控制器中的所有方法的返回值转换为 JSON 或其他格式的数据输出到响应体中,而不会尝试解析为视图名称。

因此,当你在类上使用了 @RestController 时,你返回的数据如“login”,Spring 会认为这是要返回给前端的数据,而不是视图名称。它不会去解析和渲染页面,前端只收到一个字符串 "login"。

2. @Controller

• @Controller 是用于传统的 Spring MVC 模式,它通常用于处理页面导航和视图渲染。

主要作用:@Controller 用于标识一个类是 Spring MVC 的控制器。控制器类中的方法通常返回的是视图名称,Spring 会通过视图解析器来找到对应的视图模板,并将该视图渲染成 HTML 页面返回给客户端。

示例:如下代码,如果使用@Controller,则会默认为templates/login.html

@RequestMapping("/toLogin")public String toLogin() {// 返回的是视图名称 "login",由视图解析器去查找对应的模板文件(如 login.html)return "login";}

返回视图 vs. 数据@Controller 返回的通常是视图名称(比如 Thymeleaf 模板、JSP 页面)。但是如果你希望返回 JSON 或其他格式的数据,而不是页面,则需要在方法上加@ResponseBody 注解,那么Spring 便不会将数据解析为文件。

视图解析器:如果你返回的内容是一个字符串,Spring MVC 会把这个字符串当作视图的名称,交给视图解析器去找到对应的模板来渲染页面。

返回值处理:当你返回一个字符串时,Spring MVC 会将这个字符串视为视图的名称,使用视图解析器(如 Thymeleaf)去找到对应的视图模板,然后渲染页面。

3.区别

特性

@Controller

@RestController

返回类型

默认返回视图名称(页面模板)。

返回的是 JSON 或 XML 格式的数据。

数据返回

需要配合 @ResponseBody 才能返回 JSON 数据。

自动返回 JSON 数据,无需 @ResponseBody。

使用场景

适合返回视图页面的场景(如网页、HTML)。

适合构建 RESTful API,返回数据给客户端。

数据格式

视图名称,页面渲染。

返回 JSON、XML 或其他类型的数据。

常见用法

与视图模板引擎(如 Thymeleaf、JSP)配合使用。

4. 适用场景?

如果你要构建的是一个 Web 应用,且需要返回 HTML 页面(如前端需要加载不同的页面),应使用 @Controller (常用于前后端不分离场景)

如果你要构建的是一个 RESTful API,客户端只需要接收 JSON 数据而不是页面内容,应该使用 @RestController(常用于前后端分离场景)

5.总结

@RestController:适合构建 REST API,返回 JSON、XML 等格式的数据,不用于返回视图页面。

@Controller:适合处理页面请求,返回视图名称,由视图解析器渲染页面,若不想返回数据解析为视图名称,则需要在对应方法上加上@ResponseBody 注解即可。

相关文章:

@RestController 和 @Controller 注解的联系及要点

1. RestController • RestController 是 Spring 4.0 引入的一个注解,它相当于 Controller ResponseBody组合注解。 主要作用:主要用于构建 RESTful Web 服务。标注 RestController 的类里的所有方法,返回的都是 JSON 或 XML 等格式的数据…...

机器学习篇-day03-线性回归-正规方程与梯度下降-模型评估-正则化解决模型拟合问题

一. 线性回归简介 定义 线性回归(Linear regression)是利用 回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。 回归方程(函数) 一元线性回归: y kx b > wx b k: 斜率, 在机器学习中叫 权重(weight), 简称: w b: 截距, 在机…...

图像人脸与视频人脸匹配度检测

import cv2 import dlib import numpy as np import os from pathlib import Path# 加载预训练模型 face_recognition_model "dlib_face_recognition_resnet_model_v1.dat" face_recognition_net dlib.face_recognition_model_v1(face_recognition_model)detector …...

【AI绘画】Midjourney进阶:对称构图详解

博客主页: [小ᶻZ࿆] 本文专栏: AI绘画 | Midjourney 文章目录 💯前言💯什么是构图为什么Midjourney要使用构图 💯对称构图特点使用场景提示词书写技巧测试 💯小结 💯前言 通常来学习AI绘画的人可以分为…...

道路积水检测数据集 1450张 路面积水 带分割 voc yolo

道路积水检测数据集 1450张 路面积水 带分割 voc yolo 分类名: (图片张数, 标注个数) puddle:(1468,1994) 总数:(1468,1994) 总类(nc): 1类 道路积水检测数据集介绍 项目名称 道路积水检测数据集 项目概述 本数据集包含1450张带有标注的图像&#x…...

上门安装维修系统小程序开发详解及源码示例

随着智能家居和设备的普及,消费者对上门安装和维修服务的需求日益增加。为了满足这一市场需求,开发一款上门安装维修系统小程序成为了一种有效的解决方案。本文将详细介绍上门安装维修系统小程序的开发过程,并提供一个简单的源码示例&#xf…...

03_23 种设计模式之《原型模式》

文章目录 一、原型模式基础知识原型模式的结构应用场景 实例拷贝构造函数被调用场景如下:典型的应用场景: 一、原型模式基础知识 原型模式是一种创建型设计模式,其功能为复制一个运行时的对象,包括对象各个成员当前的值。而代码又…...

【秋招笔试】10.08华为荣耀秋招(已改编)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 本次的三题全部上线…...

基于ResNet50模型的船型识别与分类系统研究

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 社区特色…...

一个为分布式环境设计的任务调度与重试平台,高灵活高效率,系统安全便捷,分布式重试杀器!(附源码)

背景 近日挖掘到一款名为“SnailJob”的分布式重试开源项目,它旨在解决微服务架构中常见的重试问题。在微服务大行其道的今天,我们经常需要对某个数据请求进行多次尝试。然而,当遇到网络不稳定、外部服务更新或下游服务负载过高等情况时,请求…...

攻防世界(CTF)~Misc-Banmabanma

题目介绍 附件下载后得到一张图片类,似一只斑马,仔细观看发现像条形码 用条形码在线阅读查看一下 条形码在线识别 flag{TENSHINE}...

获取淘宝直播间弹幕数据的技术探索实践方法

在数字时代,直播已成为电商营销的重要渠道之一,而弹幕作为直播互动的核心元素,蕴含着丰富的用户行为和情感数据。本文将详细介绍如何获取淘宝直播间弹幕数据的技术方法和步骤,同时分析不同工具和方法的优缺点,并提供实…...

Python 卸载所有的包

Python 卸载所有的包 引言正文 引言 可能很少有小伙伴会遇到这个问题,当我们错误安装了一些包后,由于包之间有相互关联,导致一些已经安装的包无法使用,而由于我们已经安装了很多包,它们的名字我们并不完全知道&#x…...

JWT(JSON Web Token)、Token、Session和Cookie

JWT(JSON Web Token)、Token、Session和Cookie都是Web开发中常用的概念,它们各自在不同的场景下发挥着重要的作用。以下是对这四个概念的详细解释和比较: 一、JWT(JSON Web Token) 定义:JWT是一…...

国内知名人工智能AI大模型专家培训讲师唐兴通讲授AI办公应用人工智能在营销与销售过程中如何应用数字化赋能

AI如火如荼,对商业与社会影响很大。 目前企业广泛应用主要是在营销、销售方向,提升办公效率等方向。 从喧嚣的AI导入营销与销售初步阶段,那么当下,领先的组织与个人现在正在做什么呢? 如何让人性注入冷冰冰的AI&…...

Android常用C++特性之std::swap

声明&#xff1a;本文内容生成自ChatGPT&#xff0c;目的是为方便大家了解学习作为引用到作者的其他文章中。 std::swap 是 C 标准库中提供的一个函数&#xff0c;位于 <utility> 头文件中。它用于交换两个变量的值。 语法&#xff1a; #include <utility>std::s…...

MongoDB数据库详解:特点、架构与应用场景

目录 MongoDB 简介MongoDB 的核心特点 2.1 面向文档的存储2.2 动态架构2.3 水平扩展能力2.4 强大的查询能力 MongoDB 的架构设计 3.1 存储引擎3.2 集群架构3.3 副本集&#xff08;Replica Set&#xff09;3.4 分片&#xff08;Sharding&#xff09; MongoDB 常见应用场景 4.1 …...

【C语言刷力扣】1678.设计Goal解析器

题目&#xff1a; 解题思路&#xff1a; 遍历分析每一个字符&#xff0c;对不同情况分别讨论。 若是字符 G &#xff0c;则 res 中添加字符 G若是字符 &#xff08; &#xff0c;则再分别讨论。 若下一个字符是 &#xff09;&#xff0c; 则在 res 末尾添加字符 o若下一个字符…...

RK3568平台开发系列讲解(I2C篇)i2c 总线驱动介绍

🚀返回专栏总目录 文章目录 一、i2c 总线定义二、i2c 总线注册三、i2c 设备和 i2c 驱动匹配规则沉淀、分享、成长,让自己和他人都能有所收获!😄 i2c 总线驱动由芯片厂商提供,如果我们使用 ST 官方提供的 Linux 内核, i2c 总线驱动已经保存在内核中,并且默认情况下已经…...

xilinx中bufgce

在Xilinx的FPGA设计中&#xff0c;BUFGCE是一种重要的全局时钟缓冲器原语&#xff0c;它基于BUFGCTRL并以一些引脚连接逻辑高电位和低电位。以下是对BUFGCE的详细解析&#xff1a; 一、BUFGCE的功能与特点 功能&#xff1a;BUFGCE是带有时钟使能信号的全局缓冲器。它接收一个时…...

新闻传播论文降AI工具免费推荐:2026年新闻传播毕业论文AIGC超标免费4.8元达标完整方案

新闻传播论文降AI工具免费推荐&#xff1a;2026年新闻传播毕业论文AIGC超标免费4.8元达标完整方案 帮室友处理过新闻传播论文降AI&#xff0c;前前后后试了四款工具&#xff0c;最后固定在嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;。 4.8元&#xff0c;达标率99.2…...

EI会议投稿踩坑记:手把手教你搞定PDF Express字体嵌入和合规邮件(附免费工具)

EI会议投稿实战指南&#xff1a;从PDF字体嵌入到合规邮件的全流程解析 第一次向EI/IEEE会议投稿的研究者&#xff0c;往往会在技术环节遭遇意想不到的阻碍。其中PDF格式合规性问题——尤其是字体未嵌入错误——堪称新手"杀手"。本文将带你深入理解字体嵌入原理&#…...

Google I/O 2026发布Gemini 3.5 Flash:性能超越3.1 Pro,输出速度快4倍!

Google在I/O 2026上正式发布Gemini 3.5 Flash&#xff0c;这是其最新一代结合前沿智能与行动能力的模型系列&#xff0c;在多项基准测试中表现出色&#xff0c;输出token速度更是其他前沿模型的4倍。 性能卓越 3.5 Flash定位为迄今最强的Agentic和编程模型&#xff0c;在Termin…...

C++虚函数从原理到实践:多态实现、设计模式与性能优化

1. 项目概述&#xff1a;从“魔法”到“利器”的认知转变虚函数&#xff0c;对于很多刚接触C的开发者来说&#xff0c;常常被看作一种“黑魔法”——知道它能实现多态&#xff0c;但具体怎么用、什么时候用、用不好会有什么坑&#xff0c;心里却没底。我见过不少项目&#xff0…...

别再混淆了!一张图看懂SAP特殊采购类40、70、80的核心区别与适用场景

深度解析SAP特殊采购类40/70/80&#xff1a;业务逻辑与实战选型指南 引言 在SAP供应链管理的复杂生态中&#xff0c;特殊采购类&#xff08;Special Procurement Type&#xff09;是连接多工厂协同的神经中枢。当企业面临跨工厂物料调配、集中采购或分布式生产等场景时&#xf…...

【2026年华为暑期实习-非AI方向(通软嵌软测试算法数据科学)- 5月20日-第一题- 服务器处理计算任务】(题目+思路+JavaC++Python解析+在线测试)

题目内容 服务器集群中有 nnn 个待处理的计算任务,第 iii 个任务需要的总计算量为 tasks[i]tasks[i]...

GB/T14710有源设备环境及运输经验总结及怎样避免被的发补

近期有朋友询问&#xff1a;有源设备在检验所做了GB/T 14710里面的振动、碰撞、实车跑提交注册的时候却被审核老师发补重做&#xff0c;14710和运输都要再来一遍&#xff0c;理由是要加上包装运输试验。在我看来是一个不太明智的决定&#xff0c;也是在赌运气&#xff0c;既然花…...

AI嵌入式系统测试:融合经典方法与数据驱动验证的工程实践

1. 项目概述&#xff1a;当嵌入式遇见AI&#xff0c;测试的“变”与“不变”干了十几年嵌入式&#xff0c;从8位单片机玩到多核异构处理器&#xff0c;从裸机编程干到复杂的RTOS&#xff0c;我原以为测试这件事&#xff0c;左不过就是单元测试、集成测试、系统测试那几板斧&…...

避开勒让德函数那些坑:GRACE数据处理中MATLAB高效计算与调试技巧

GRACE数据处理中的勒让德函数实战&#xff1a;MATLAB高效计算与调试全指南 当你在深夜的实验室里盯着屏幕上那个不断报错的MATLAB脚本&#xff0c;勒让德函数的计算结果与文献数据相差了几个数量级&#xff0c;而论文截稿日期就在三天后——这种场景对处理GRACE球谐数据的研究者…...

3分钟学会B站缓存视频转换:m4s转MP4完整指南

3分钟学会B站缓存视频转换&#xff1a;m4s转MP4完整指南 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否遇到过这样的困扰&#xff1f;在B…...