@Controller和@RestController的区别

@RestController和@Controller的区别 而@Controller适用于构建传统的Web应用,返回HTML页面。返回类型: @RestController注解的类返回的是数据,一般用于构建RESTful风格的API接口,返回的数据通常是JSON格式;而@Controller注解的类返回的是视图,一般用于构建传统的Web应用,返回的是HTML页面。注解组合: @RestController注解相当于@Controller和@ResponseBody的结合体,省去了在@Controller中使用@ResponseBody的步骤,使代码更为简洁。 阅读详情

解释一

我们一般都会在Controller上加上@Controller注解,但是有时候也见有加上@RestController

区别:

@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面。在方法上加@ResponseBody注解,也可以返回实体对象。

@RestController类中的所有方法只能返回String、Object、Json等实体对象,不能跳转到模版页面。

@RestController相当于@ResponseBody + @Controller

 

2、补充

@RestController中的方法如果想跳转页面,则用ModelAndView进行封装,如下:

@RestController
public class UserController {
    @RequestMapping(value = "/index",method = RequestMethod.GET)
    public String toIndex(){
        ModelAndView mv = new ModelAndView("index");
          return mv;
    }
}

 


解释二

@RestController = @ResponseBody + @Controller

单独使用@Controller,会返回一个页面

@RestController只返回对象,对象数据直接以 JSON 或 XML 形式写入 HTTP 响应(Response)中

@ResponseBody 注解的作用是将 Controller 的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到HTTP 响应(Response)对象的 body 中,通常用来返回 JSON 或者 XML 数据,返回 JSON 数据的情况比较多

 

最初学Spring MCV时候创建Controller

编写一个Java控制类:com.yao.controller.HelloController,注意编码规范

@Controller是为了让Spring IOC容器初始化时自动扫描到;

@RequestMapping是为了映射请求路径

package com.yao.controller;
 
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
 
@Controller
public class HelloController  {
    @RequestMapping("/h")
    public String sayhello(Model model){
//        封装数据,向模型中添加属性msg与值,可以在JSP页面中取出并渲染
        model.addAttribute("msg","Hello,SpringMVCAnnotation");
//   会被视图解析器处理,相当于WEB-INF/jsp/hello
        return "hello";
    }
 
}

 

学SpringBoot时

package com.yao.demo.controller;


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        return"hello world !";
    }
}

 

 

package com.yao.demo.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


@Controller
@RequestMapping("/hello")
public class HelloController {
    @GetMapping("/hello")
    @ResponseBody
    public String hello(){
        return"hello world !";
    }
}

 

 

GetMapping 注解已经默认封装了@RequestMapping(method = RequestMethod.GET)

@RequestMapping(path = "/{city_id}/{user_id}",method = RequestMethod.GET) 更方便

 

 

 

 

 

@RestController与@controller区别及@responsebody与@requestbody区别 阅读详情

相关推荐

数电发票“乐企直连”服务平台建设方案

数字化电子发票“乐企直连”服务平台建设方案

m0_73174802的博客 4853

@RestController注解使用

本次介绍SpringBoot中针对http的常用注解。SpringBoot仍然秉承MVC的架构,在注解命名方面遵循此类讲究,对于负责Restful API交互的功能模块,SpingBoot采用@RestController在修饰类。 @RestController @RestController = @Controller + @ResponseBody @Controller 将当前修饰的类注入SpringBoot IOC容器,使得从该类所在的项目跑起来的过程中,这个类就被实例化。当然也有语义化的作用,

wenchang-的博客 2398

UR机械臂正逆运动学解析:从DH参数到8组解的完整求解策略

本文深入解析UR机械臂的正逆运动学求解策略,从DH参数原理到完整的8组解求解方法。详细介绍了正运动学的坐标变换过程,以及逆运动学中Atan2函数和三角恒等变换的应用,并揭示了8组解的产生机制。通过实际案例和调试技巧,帮助工程师掌握UR机械臂运动学求解的核心技术。

weixin_29094775的博客 414

Spring-Boot Restful API 笔记

RestController Get 使用@RestController标注在一个控制器类上,再使用@RequestMapping(path)指定映射地址,这个控制器类下的所有方法映射到这个地址下 在具体方法上标注@GetMapping表明这是一个Get请求api,这个注解的参数可以填地址,一般是指定条件,如按id查询,参数就是/{id},然后在方法的参数前标注@PathVariable,使路径...

阿瞒的博客 281

畅游Diffusion数字人(0):专栏文章导航

畅游Diffusion数字人(0):专栏文章导航

沉迷单车的追风少年 1421

Claude Code 任务编排 头脑风暴与 疯狂拷问:Superpowers vs Grill-me 硬核对比与工程落地

Superpowers和Grill-me是AI编程中的互补工具:Superpowers提供工程化开发流程(从需求梳理到代码审查),确保规范执行;Grill-me通过持续追问帮助厘清需求,避免方向偏差。两者结合形成"构思-拷问-执行"工作流,前者负责方案生成与落地,后者专注需求审查。根据场景选择:个人项目可用Grill-me快速澄清需求,企业项目推荐Superpowers全流程,复杂开发则建议组合使用。它们分别解决"如何落地"和"是否对齐"的问题,共

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 326

SpringBoot第四课——常用传参方式

接着第一课:https://blog.youkuaiyun.com/sinat_22808389/article/details/81590042 1.path传参 在RestController 下添加如下方法: //path 传参数 get请求方式 @RequestMapping(value = "/postPath") public String postByPath(@Req...

北半球先生的博客 685

【以太网硬件九】1000base-X是什么?

简要描述1000base-X物理层规范

highman110的博客 1万+

Spring boot @RestController

package com.example.demo; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.ut.

深漂小码哥 509

编程实践:寒武纪-LLM&VLM模型量化&部署

本文介绍了在MLU370-S4平台上对大模型(LLM/VLM)进行量化的两种方法:SmoothQuant和WeightOnly。以Qwen2-VL-2B模型为例,详细说明了两种量化方式的命令行参数配置,包括必须设置的per_channel选项和量化参数调整建议。量化完成后,提供了模型部署的具体命令示例,包含设备分配、端口设置、并行度等关键参数。文章强调在MLU370芯片上需要手动设置block_size,并指出两种量化方式只能二选一使用。配套资料已上传至百度网盘供参考。

微风❤水墨 508

新手福利!大龙虾OpenClaw可视化管理工具来了!告别命令行,这个可视化工具让OpenClaw管理变得超简单

还在用命令行管理OpenClaw?🚀 这个跨平台可视化工具支持14+AI模型,一键切换,还能对接微信飞书钉钉等8大消息渠道,让AI助手管理变得简单直观 ✅ 暗色主题护眼舒适,Rust后端高性能低占用,新手也能轻松上手 🎯

XiaoqiangClub的博客 760

@RestController注解含义

",这个字符串会被自动序列化为JSON或XML(根据客户端请求的内容类型而定)。合并了@Controller和@ResponseBody的功能: 在传统的Spring MVC中,你可能会在Controller类上使用@Controller注解,并在处理方法上使用@ResponseBody注解。RESTful Web服务声明: @RestController 用于标识一个类,表示该类是一个控制器(Controller),但与传统的Spring MVC控制器不同,它专注于处理RESTful请求和响应。

seesea_ben的博客 738

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

springmvc 中@Controller和@RestController的区别

springmvc 中@Controller和@RestController的区别

archer的技术故事 3万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

@Controller和@RestController注解的区别

本质区别 有看过源码的朋友就会发现,其实@RestController比@Controller多了一个注解,就是@ResponseBody,换言之,@RestControler = @Controller + @ResponseBody 衍生区别 本质区别所派生出来的衍生区别,下面也介绍一下。 因为@RestController中多了@ResponseBody注解,而@ResponseBody注解主要用于返回json格式的数据,所以主要区别就在于控制器中返回值类型为String的方法中。如果控制器使

直到日落的博客 1438

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

@Controller 与 @RestController的区别

首先,我要回想Spring MVC中这两个注解的基本作用。@Controller通常用于标记一个类作为Spring MVC的控制器,处理HTTP请求并返回视图名称,比如JSP或Thymeleaf模板。而@RestController是@Controller和@ResponseBody的组合,意味着每个方法返回的数据直接写入HTTP响应体,而不是视图解析。这通常用于RESTful Web服务,返回JSON或XML数据。接下来,我需要整理它们的区别点。

weixin_43775049的博客 928

@Controller和@RestController的区别是什么

@RestController 注解则是 @Controller 的一个特殊变体,它的方法返回的是数据,通常是以 JSON、XML 等形式进行输出,而不是视图。默认行为:在 @Controller 注解下,默认情况下,方法返回的字符串将作为视图名称进行解析,并由视图解析器进行渲染。总的来说,@Controller 注解适用于传统的 Web 应用程序,处理请求并渲染视图,而 @RestController 注解适用于构建 RESTful Web 服务,返回数据而不是视图。

m0_53071888的博客 1651

@RestController 和 @Controller 区别?

1.使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面 2.若返回json等内容到页面,则需要加@ResponseBody注解 3.@RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@Res...

plpldog的博客 537

SpringMVC中@RestController和@Controller的区别

在使用SpringMVC时,对于Controller中的注解@RestController和@Controller需要我们区分清楚 @RestController注解相当于@ResponseBody和@Controller的结合 但是在使用@RestController注解的时候需要注意几个问题: 1.如果使用@RestController注解Controller,那么该Controller...

鑫鑫吖的博客 8916
上一篇: 小彩蛋:springboot banner 在线生成
下一篇: mac系统下.m2文件在哪里
a-bit
博客等级 码龄10年 16粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值