Controller和RestController的区别

2023-05-16

导读在springboot中,Controller, RestController是使用控制器最常用的两个注解,但是两者之家的差异你知道吗?本文就是要讲述两者之间的区别。

1. Controller, RestController的共同点

都是用来表示Spring某个类的是否可以接收HTTP请求。

2. Controller, RestController的不同点

@Controller:标识一个Spring类是Spring MVC controller处理器,@RestController:@RestController是@Controller和@ResponseBody的结合体,两个标注合并起来的作用。@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面。在方法上加@ResponseBody注解,也可以返回实体对象。@RestController类中的所有方法只能返回String、Object、Json等实体对象,不能跳转到模版页面。Linux就该这么学

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

@RestController
public class UserController {

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

示例如下:

@Controller  
@ResponseBody  
public class MyController { }  

@RestController  
public class MyRestController { }  

@Controller注解源码:

package org.springframework.stereotype;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.stereotype.Component;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
    String value() default "";
}

@RestController注解源码:

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ResponseBody;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
    String value() default "";
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Controller和RestController的区别 的相关文章

  • AngularJS:注入控制器时工厂始终未定义

    我正在尝试使用 AddressBook Angular 应用程序的简单示例 我有一个返回记录数组的工厂 它使用列表控制器显示在列表视图中 angular module abModule ngRoute factory AddressBook
  • 重用需要“resolve”参数的“ui-route”控制器

    我希望能够重复使用我的ui router 有线控制器 他们目前从以下位置接收参数ui router resolve渲染他们的模板 我可以重复使用这些控制器吗 ui router 例如 我这样做ui router controller Det
  • StreamBuilder 中具有初始值的 TextField

    我们正在创建一个用户的编辑数据页面 因此文本字段已经填充了用户数据 用户可以更改并保存它 问题是 当我开始在文本字段中输入字符时 光标会丢失 每个字符都会丢失我输入 从设备键盘 光标转到第一个字符 如果我使用初始值删除控制器 它工作正常 但
  • AngularJS 指令从控制器访问属性

    我正在尝试访问控制器函数中指令的属性 然而 当我访问它时 它是未定义的 我注意到如果我做一个简单的计时器它就可以工作 有没有办法仅在指令及其范围准备好并设置为使用之后才执行代码 我摆弄了它 确保您的控制台已打开 http jsfiddle
  • 如何将变量从控制器传递到视图 joomla mvc

    根据此示例 如何将变量从 joomla 子控制器传递到视图 class MYControllerControllerParser extends JController public function construct default a
  • Spring 3 MVC Controller集成测试-将Principal注入到方法中

    作为 Spring 3 MVC 的一部分 可以将当前登录的用户 原理 对象注入到控制器方法中 E g Controller public class MyController RequestMapping value update meth
  • 将 .js 控制器请求渲染为 html

    我有一个before filter在我的 Rails 应用程序中 将用户发送到login url如果他们在提交请求 以 html 或 js 格式 时注销 我想要我的format js产生相同的结果format html 在以下情况下使用 通
  • 如何获取 Symfony2 中控制器的所有路由列表?

    我有一个控制器 它实现了所有路线 URL 我的想法是为所有帮助页面提供通用索引 有没有办法获取控制器 从控制器内 定义的所有路由Symfony2 您可以做的是将 cmd 与 最高 SF2 6 一起使用 php app console rou
  • Backbone.js 控制器中的默认路由?

    我想为我的backbone js 控制器设置默认路由 目前我是这样做的 class DealSearchController extends Backbone Controller routes list showListView phot
  • 使用多个 JSON 渲染进行响应。 (红宝石/Rails)

    这是一个相对简单的方法 我很确定它的语法正确 我试图将多个对象渲染为 json 作为控制器中的响应 所以像这样 def info allWebsites Website all allPages Page all allElementTyp
  • 我如何覆盖Mage_Core_Controller_Request_Http

    我对 Mage Core Controller Request Http 做了一些更改 但在使用 magento 分发的文件中 我知道这不是最好的方法 但我无法弄清楚如何覆盖控制器目录中的文件 我可以找到如何覆盖控制器目录中的文件 谁能告诉
  • 如何从 mvc 控制器中的 Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable 获取值

    我知道标题有点复杂 但让我通过解释问题来澄清标题 As per image I want to filter product name in search textbox For ex In search textbox if I ente
  • Nodejs:返回异步结果的结果

    我正在尝试在 Node js 中编写一个 RESTful API 它基本上围绕控制器 模型模式 并且我遇到了一些关于 Node js 异步性质的问题 Station js 控制器 use strict var url require url
  • 如何从控制器运行 symfony 2 run 命令

    我想知道我怎样才能跑交响乐2来自浏览器查询或控制器的命令 这是因为我没有任何可能托管来运行它 并且每个 cron 作业都是由管理员设置的 我什至没有启用exec 因此 当我想测试它时 我必须将命令中的所有内容复制到某个测试控制器 这不是最佳
  • GEF + EMF:为什么当调用refreshChildren() 时,我的编辑器不删除已删除对象的图形?

    我已经为类似图形的 EMF 模型实现了 GEF 编辑器 并为图形中的某种类型的节点提供了删除命令 我想我已经完成了所有必要的步骤以使此设置正常工作 vainolo https stackoverflow com users 817399 v
  • ASP.NET MVC 2 - POST 后 ViewData 为空

    我真的不知道在哪里寻找错误 情况 我有一个 ASPX 视图 其中包含一个表单和一些输入 当我单击 提交 按钮时 所有内容都会 POST 到我的一个 ASP NET MVC 操作 当我在那里设置断点时 它被正确命中 当我使用 FireBug
  • 调用控制器 Post 方法时遇到问题

    这是我的方法 AcceptVerbs HttpVerbs Post public void SaveImage FormCollection formValues byte contents Convert FromBase64String
  • 您将如何整理这个控制器逻辑?

    我在控制器中有一些逻辑 如果满足某些条件 它会设置对象的状态 if params concept consulted legal 0 params concept consulted marketing 1 concept attribut
  • 此集合实例 Laravel 关系中不存在属性 [X]

    我在 Laravel 5 6 中使用了很多 Realtions 当我添加 phonebooks 时 我看到所有关系都工作正常 一切都很好 但是当我尝试在视图中显示它们时 我得到了属性在此集合上不存在的错误 这是关系代码 public fun
  • 来自控制器的 Rails 验证

    有一个联系页面 可以输入姓名 电话 电子邮件和消息 然后发送到管理员的电子邮件 没有理由将消息存储在数据库中 问题 如何 在控制器中使用 Rails 验证 根本不使用模型 或者 在模型中使用验证 但没有任何数据库关系 UPD Model c

随机推荐

  • Android版DailyInsist(五)——业务逻辑和数据操作SettingFragment & 小结

    最后一部分是提醒以及每天任务刷新 xff0c 两者都用到了 AlarmManager 这个系统管理类 提醒 提醒功能就是一个闹钟的效果 xff0c 只是这里是启动服务 xff0c 在服务里发一条notification作为提醒 设置时间时
  • IDEA项目的结构以及创建

    IDEA的项目结构应该怎么创建 一 在创建项目之前应该先知道IDEA项目的结构二 创建项目的步骤 一 在创建项目之前应该先知道IDEA项目的结构 idea项目的结构由三个部分组成 xff1a 分别是 项目 xff08 project xff
  • python插件安装--

    图像处理 安装opencv方式1 下载opencv xff0c 把cv2 pyd 放到 site packages pycharm ctrl 43 alt 43 s 找到 opencv python 直接安装 点击右下角的应用 Apply
  • RE: 从零开始的车载Android HMI(一) - Lottie

    1 前言 多年以前汽车还是以机械仪表主体的年代 xff0c 各大汽车主机厂商并不十分关注操作系统UI的交互功能 xff0c 但是随着车载SOC算力的不断提高以及主机厂商对汽车座舱竞争的白热化 座舱的HMI在设计上在强调功能性的同时也开始关注
  • Android 车载应用开发与分析(12) - SystemUI (一)

    1 前言 Android 车载应用开发与分析是一个系列性的文章 xff0c 这个是第12篇 xff0c 该系列文章旨在分析原生车载Android系统中核心应用的实现方式 xff0c 帮助初次从事车载应用开发的同学 xff0c 更好地理解车载
  • python 下xml和dict相互转化,含attributes

    from lxml import etree def dictlist node res 61 res node tag 61 xmltodict node res node tag reply 61 reply node tag 61 3
  • Manjaro 系统日常使用入门导引

    Manjaro 系统日常使用入门导引 作者 xff1a 林地宁宁 Arch Linux 简介 常听人说 Arch Linux 系统 xff08 以下简称 Arch xff09 是一款自由度极高的 Linux 发行版 xff0c 在维基百科上
  • SecureCRT产生log日志

    SecureCRT产生log日志 打开一个串口 xff0c 第一步 xff1a 第二步 xff1a 在这一步 xff0c 需要选择合适的端口号和波特率等 第三步 xff1a 选择 34 properties 34 第四步 xff1a 找到
  • 架构设计:生产者/消费者模式

    0 xff1a 概述 今天打算来介绍一下 生产者 xff0f 消费者模式 xff0c 这玩意儿在很多开发领域都能派上用场 由于该模式很重要 xff0c 打算分几个帖子来介绍 今天这个帖子先来扫盲一把 如果你对这个模式已经比较了解 xff0c
  • 1013 Battle Over Cities

    It is vitally important to have all the cities connected by highways in a war If a city is occupied by the enemy all the
  • 若依类项目spring boot多模块打包优化实践

    笔者最近工作的时候 xff0c 接到一个地产集团小程序的研发任务 xff0c 之前也没有相关经验 xff0c 于是就从网上找了一个类似的项目来改 xff0c 就是uniapp 43 若依 开发租房小程序 x1f389 租房小程序 xff0c
  • 分布式之数据库和缓存双写一致性方案解析

    本文转自博客园 作者 xff1a 孤独烟 原文链接 xff1a https www cnblogs com rjzheng p 9041659 html 为什么写这篇文章 首先 xff0c 缓存由于其高并发和高性能的特性 xff0c 已经在
  • Hexo操作指南-(命令)

    Hexo命令说明 xff1a Hexo官方文档 xff1a https hexo io zh cn docs hexo init 新建一个网站 hexo new 34 文章名 34 新建文章 hexo new page 34 页面名 34
  • 面试题:谈谈对进程的理解?谈谈你对线程的理解?2.进程死锁的原因?如何解决进程死锁?

    2 谈谈对进程的理解 xff1f 答 xff1a 首先进程是指在系统中正在运行的一个应用程序 xff1b 程序一旦运行就是进程 xff0c 或者更专业化来说 xff1a 进程是指程序执行时的一个实例 xff0c 即它是程序已经执行到课中程度
  • 编程小白用C语言完成"摸球问题"

    碰到问题 编写一个程序 xff0c 从 3 个红球 xff0c 5 个白球 xff0c 6 个黑球中任意取出 8 个球 xff0c 且其中必须有红球 xff0c 输出所有可能的方案 思路分析 依题意 必须有红球 即红球最少有1个 最多有3个
  • wxX11移植到arm板上

    原 移植wxX11到开发板上 2012 5 18阅读467 评论0 最近几天由于工作安排 xff0c 要将wxX11程序移植到arm开发板上 一连工作了好几天 xff0c 终于可以在板子上显示出一个 X 号 xff0c 并且可以运行wxWi
  • 13.3.2 搜索本地磁盘中所有媒体文件

    13 3 2 搜索本地磁盘中所有媒体文件 搜索本地磁盘中所有媒体文件可以利用 13 3 1 小节设计的 link add dir 函数 xff0c 将该函数搜索的路径设置为 如下列源代码所示 xff1a int link search li
  • 使用Systemctl命令来管理系统服务

    导读Systemctl是systemd用于管理系统和管理服务的工具 许多现代Linux发行版 xff0c 如Ubuntu Debian Fedora Linux Mint OpenSuSE Redhat都采用systemd作为默认的init
  • MySQL循环语句

    导读mysql常见的三种循环方式 xff1a while repeat和loop循环 还有一种goto xff0c 不推荐使用 Linux就该这么学 1 while循环 设置mysql分隔符为 xff0c 也就意味着 xff0c 当遇到下一
  • Controller和RestController的区别

    导读在springboot中 xff0c Controller RestController是使用控制器最常用的两个注解 xff0c 但是两者之家的差异你知道吗 xff1f 本文就是要讲述两者之间的区别 1 Controller RestC