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

Spring MVC中@Controller和@RestController的区别

@Controller@RestController 是 Spring MVC 中用于处理 HTTP 请求的注解,它们有以下区别:

  1. 返回值处理方式:

    • @Controller 用于定义一个传统的 Spring MVC 控制器,它的方法通常返回视图名称或 ModelAndView 对象,由视图解析器解析并渲染成 HTML 页面。

      @Controller
      public class MyController {@GetMapping("/hello")public String hello() {return "helloPage"; // 返回视图名称}
      }
      
    • @RestController 组合了 @Controller@ResponseBody,用于定义 RESTful 风格的控制器。其方法的返回值会直接写入 HTTP 响应体,而不是通过视图解析器解析为视图。

      @RestController
      public class MyRestController {@GetMapping("/api/hello")public String hello() {return "Hello, REST API!"; // 直接写入响应体}
      }
      
  2. 默认响应类型:

    • @Controller 默认返回视图,通常使用 ViewResolver 将逻辑视图名映射为实际视图。
    • @RestController 默认返回 JSON 或 XML 格式的数据,而不是视图。
  3. 使用场景:

    • 使用 @Controller 时,通常用于构建传统的 Web 应用,其中页面渲染由视图模板(如 JSP、Thymeleaf)处理。
    • 使用 @RestController 时,适用于构建 RESTful API,其中数据以 JSON 或 XML 格式返回给客户端。

实际例子:

@Controller
public class WebPageController {@GetMapping("/helloPage")public String helloPage() {return "helloPage"; // 返回视图名称,通常由视图解析器解析为实际视图}
}
@RestController
public class ApiController {@GetMapping("/api/hello")public String helloApi() {return "Hello, REST API!"; // 直接返回字符串,将以 JSON 或 XML 格式写入响应体}
}

在构建 Web 页面的场景中,使用 @Controller 处理用户请求,返回视图名称,然后由视图解析器解析为实际视图。而在构建 RESTful API 的场景中,使用 @RestController 直接返回数据,通常以 JSON 或 XML 格式。

相关文章:

Spring MVC中@Controller和@RestController的区别

Controller 和 RestController 是 Spring MVC 中用于处理 HTTP 请求的注解,它们有以下区别: 返回值处理方式: Controller 用于定义一个传统的 Spring MVC 控制器,它的方法通常返回视图名称或 ModelAndView 对象,由视图…...

Flink定制化功能开发,demo代码

前言: 这是一个Flink自定义开发的基础教学。本文将通过flink的DataStream模块API,以kafka为数据源,构建一个基础测试环境;包含一个kafka生产者线程工具,一个自定义FilterFunction算子,一个自定义MapFunctio…...

Edge浏览器入门

关于作者: CSDN内容合伙人、技术专家, 从零开始做日活千万级APP,带领团队单日营收超千万。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业化变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览…...

Go语言的调度器

简介 Go语言的调度器是一个非常强大的工具,它可以帮助我们轻松地实现并发编程。调度器的工作原理是将多个协程映射到多个操作系统线程上,并根据协程的状态来决定哪个协程应该在哪个线程上运行。 调度器有两种主要策略: 协作式调度&#xf…...

Linux系统使用超详细(十)~vi/vim命令①

vi/vim命令有很多,其实只有少数的用法对于我们日常工作中起到了很大帮助,但是既然我选择梳理Linux的学习笔记,那么一定全力把自己的理解和学习笔记的内容认真整理汇总,内容或许有错误,还请发现的C友们发现了及时指出。…...

C语言实现双向链表

1.版本一 由于节点之间的连接变多 所以我们最好提前将前驱节点和后继节点用变量保存下来 以免等下在进行节点之间的指向时出错 #include <stdio.h> #include <stdlib.h> #include <stdbool.h> // 节点类 typedef struct Node {// 数据域int data;// 指针域…...

OpenGL 网格拾取坐标(Qt)

文章目录 一、简介二、代码实现三、实现效果参考资料一、简介 有时候我们希望通过鼠标来拾取某个网格中的坐标,这就涉及到一个很有趣的场景:光线投射,也就是求取一条射线与网格的交点,这里如果我们采用普通遍历网格中的每个面片的方式,当网格的面片数据量很大时计算效率就…...

GitHub高级搜索技巧

GitHub高级搜索技巧 in:name <关键字> 仓库名称带关键字查询 in:description <关键字> 仓库描述带关键字查询 in:readme <关键字> README文件带关键字查询 stars(fork): >() <数字> <关键字> star或fork数大于(或等于)指定数字的带关键字查…...

docker-compose安装HertzBeat赫兹跳动监控H3C交换机

前面我们用docker方式安装了HertzBeat&#xff0c;现在我们自己写个docker-compose.yml文件、创建文件直接docker-compose up -d直接启动运行 使用docker-compose需要先安装docker和docker-compose1、输入以下两段命令 mkdir 123 && cd 123 && mkdir data &a…...

NetSuite学习笔记 - 中心

一、什么是中心&#xff1f; 对于每个用户&#xff0c;NetSuite 会根据用户的指定角色显示一组可变的标签页面&#xff0c;称为中心。通俗来讲呢&#xff0c;NetSuite的中心其实就是我们常说的“导航菜单”。 只是在我过去常见的系统中&#xff0c;导航菜单一般都是固定的&am…...

鸿蒙开发笔记(三):页面和自定义组件生命周期

先明确自定义组件和页面的关系&#xff1a; 自定义组件&#xff1a;Component装饰的UI单元&#xff0c;可以组合多个系统组件实现UI的复用。 页面&#xff1a;即应用的UI页面。可以由一个或者多个自定义组件组成&#xff0c;Entry装饰的自定义组件为页面的入口组件&#xff0c…...

报名活动怎么做_小程序创建线上报名活动最详细攻略

报名活动怎么做&#xff1a;一篇让你掌握活动策划与营销的秘籍 在当今社会&#xff0c;无论是线上还是线下&#xff0c;活动已经成为企业营销和品牌推广的重要手段。但是&#xff0c;如何策划一场成功的活动呢&#xff1f;这篇文章将为你揭示活动策划与营销的秘籍&#xff0c;…...

Apache POI 导出Excel报表

大家好我是苏麟 , 今天聊聊Apache POI . Apache POI 介绍 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下&#xff0c;POI 都是用于操作 E…...

使用Qt连接scrcpy-server控制手机

Qt连接scrcpy-server 测试环境如何启动scrcpy-server1. 连接设备2. 推送scrcpy-server到手机上3. 建立Adb隧道连接4. 启动服务5. 关闭服务 使用QTcpServer与scrcpy-server建立连接建立连接并视频推流完整流程1. 开启视频推流过程2. 关闭视频推流过程 视频流的解码1. 数据包协议…...

debian12部署Gitea服务之二——部署git-lfs

Debian安装gitlfs: 先更新下软件包版本 sudo apt update 安装 sudo apt install git-lfs 验证是否安装成功 git lfs version cd到Gitea仓库目录下 cd /mnt/HuHDD/Git/Gitea/Repo/hu/testrepo.git 执行lfs的初始化命令 git lfs install客户机Windows端在官网下载并安装Git-Lfs 再…...

leetcode 1两数之和

题目 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺…...

C++多线程学习[三]:成员函数作为线程入口

一、成员函数作为线程入口 #include<iostream> #include<thread> #include<string>using namespace std;class Mythread { public:string str;void Test(){cout << str << endl;} }; int main() {Mythread test;test.str "Test";thr…...

移动硬盘无法识别处理办法

今天这里做一下总结&#xff0c;我现在手上有一个移动硬盘&#xff0c;插入win10电脑是有盘号的&#xff0c;但是 但是点击就出问题 解决办法 安装DiskGenius 下载网址在https://www.diskgenius.cn/download.php 下载之后解压安装就行&#xff0c;非常简单&#xff0c;然后…...

【Spring Cloud】Sentinel流量限流和熔断降级的讲解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Spring Cloud》。&#x1f3af;&#x1f3af; &am…...

前端浮点和16进制互转

一、浮点转16进制数据 //浮点数转16进制 function singleToHex(t) {if (t "") {return "";}t parseFloat(t.substr(0, 4));if (isNaN(t) true) {return "Error";}if (t 0) {return "00000000";}var s,e,m;if (t > 0) {s 0;}e…...

MDK Middleware网络组件的嵌入式安全防护解析

1. MDK Middleware网络组件的安全特性解析在嵌入式系统开发中&#xff0c;网络安全往往是最容易被忽视却又至关重要的环节。作为Keil MDK开发环境的核心组件&#xff0c;Middleware Network为Cortex-M系列微控制器提供了轻量级TCP/IP协议栈实现。不同于桌面级操作系统自带的网络…...

瑞数6代JSVMP逆向实战:Node.js复现可信字节码运行时

1. 这不是“绕过验证码”&#xff0c;而是和瑞数6代打一场精密的JavaScript攻防战你肯定见过那个页面&#xff1a;刚点开目标网站&#xff0c;还没输入账号&#xff0c;浏览器就卡住半秒&#xff0c;接着弹出一个412 Precondition Failed——不是403&#xff0c;不是500&#x…...

【收藏必备】2026 版大语言模型入门详解:小白 程序员快速上手 LLM 核心原理

大语言模型&#xff08;LLM&#xff09;是 2026 年生成式 AI 与智能体&#xff08;Agent&#xff09;时代的核心基石&#xff0c;本文系统拆解其发展脉络、应用全流程与完整构建逻辑。从自监督预训练、指令微调至人类反馈强化学习&#xff08;RLHF&#xff09;&#xff0c;逐层…...

5G FWA智能终端技术解析:从核心架构到运营商集采实战

1. 项目概述&#xff1a;一次典型的5G FWA终端集采中标事件最近&#xff0c;业内传来一个挺有意思的消息&#xff0c;美格智能的5G FWA智能终端产品&#xff0c;在中国联通的一个招标项目中成功中标了。对于不熟悉通信行业的朋友来说&#xff0c;这听起来可能就是个普通的商业新…...

美容顾问转型AI训练师:2024紧缺新职业认证路径(含国家人社部备案课程编号)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;AI Agent美容行业应用概述 AI Agent正以前所未有的深度融入美容行业&#xff0c;从智能肤质分析、个性化护肤方案生成&#xff0c;到虚拟试妆、客户行为预测与自动化私域运营&#xff0c;其核心价值在于将非结…...

戴森球计划蓝图架构范式:从模块化设计到星际规模工程的技术演进

戴森球计划蓝图架构范式&#xff1a;从模块化设计到星际规模工程的技术演进 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints 在戴森球计划的工厂建设中&#xff0c;蓝图设计…...

K12教师必读:用AI Agent 15分钟生成个性化学习路径(附可即用Prompt模板库)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;AI Agent教育应用的范式变革 传统教育系统长期依赖“教师讲授—学生听记—统一测评”的线性模式&#xff0c;而AI Agent的兴起正推动教育从标准化供给转向个性化协同时代。AI Agent不再仅是知识检索工具或自动…...

Unity UGUI循环列表优化指南:SuperScrollView原理与实战

1. 为什么一个“滚动列表”值得单独写一篇工具指南&#xff1f; 在Unity UGUI项目里&#xff0c;我见过太多团队把“显示几十条数据”当成小功能随手写——用Scroll View拖个Content&#xff0c;写个for循环Instantiate prefab&#xff0c;加个Layout Group排版&#xff0c;再…...

Unity 2D基础:2D相机Orthographic的参数调节

Unity 2D基础&#xff1a;2D相机Orthographic的参数调节&#x1f4da; 本章学习目标&#xff1a;深入理解2D相机Orthographic的参数调节的核心概念与实践方法&#xff0c;掌握关键技术要点&#xff0c;了解实际应用场景与最佳实践。本文属于《Unity工程师成长之路教程》Unity 2…...

【稀缺首发】全球仅12家头部科技公司验证的AI Agent机器学习架构(附可复用决策树模板)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;AI Agent机器学习应用的范式跃迁 传统机器学习系统通常以静态模型为中心&#xff0c;依赖人工特征工程、离线训练与固定推理流程。而AI Agent的兴起正推动一场根本性范式跃迁&#xff1a;从“被动预测”转向“…...