返回静态数据

在Java项目中,往往不会一直返回某某数据,而是会返回一个静态页面,那么,如何正确返回一个静态页面呢??

要想成功的返回一个静态页面前提是必须要有一个静态页面:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>index首页</title>
</head>
<body><h1>hello word!!!</h1><p>this is a html page</p>
</body>
</html>

静态页面的运行效果为:

 既然有了静态页面,那么,我们便考虑如何用Java语言正确返回静态页面吧!!

返回静态页面代码:

//@RestController
@Controller
@RequestMapping("/return")
public class returnController {@RequestMapping("index")public String returnIndex(){return "/index.html";}
}

 

在这段代码中,使用了新的注解@Controller(返回视图)

启动程序,在浏览器输入:http://127.0.0.1:8080/return/index

这便是启动成功了!!

值得注意的是:笔者一开始使用的是注解@RestController,然而很不凑巧的是不能返回静态页面!

下述为错误代码(Bug)

@RestController
//@Controller
@RequestMapping("/return")
public class returnController {@RequestMapping("index")public String returnIndex(){return "/index.html";}
}

当然,在浏览器输入:127.0.0.1:8080/return/index

这便是不成功!!没能正确返回静态页面!!

上面两个差异存在的主要区别在于:@RestController与@Controller这两个注解!!

@RestController与@Controller的异同点在哪?

`@RestController`和`@Controller`注解都是Spring框架中用于定义控制器的注解,但它们在使用场景和功能上存在一些差异。具体分析如下:

相同点
- 生命周期:无论是使用`@Controller`还是`@RestController`,它们的生命周期都持续到程序运行时。

不同点
- 组合注解:`@RestController`是`@Controller`和`@ResponseBody`这两个注解的结合体,它同时具有这两个注解的功能。这意味着在`@RestController`注解的类中,方法返回的对象会自动序列化为JSON或其他响应体格式,并写入到HTTP响应体中。
- 使用场景:`@Controller`通常用于处理HTTP请求并返回视图(View),适合传统的MVC模式,其中方法返回的是模型和视图名称。而`@RestController`主要用于构建RESTful API,方法返回的是数据对象,这些对象会自动转换为JSON或XML格式的响应体,适合前后端分离的应用架构。

总的来说,`@RestController`注解更适合于创建RESTful Web服务,而`@Controller`注解更适用于需要返回视图的传统Web应用。在实际开发中,选择使用哪个注解取决于你的应用场景和需求。

那我在所有的情况下都写@RestController注解可以吗?

在大多数情况下,你可以使用`@RestController`注解来创建控制器,特别是当你正在构建一个RESTful API时。然而,并不是所有情况下都适合使用`@RestController`。以下是一些考虑因素:

  1. 返回类型:如果你的控制器方法需要返回视图(例如,使用Thymeleaf、FreeMarker等模板引擎),那么你应该使用`@Controller`,因为`@RestController`默认将返回对象序列化为JSON或XML格式,而不是渲染视图。
  2. 灵活性:`@Controller`注解提供了更多的灵活性,因为它不自动将返回值序列化为JSON。这意味着你可以根据需要选择返回视图、下载文件、渲染PDF等。
  3. 混合需求:在一个控制器类中,你可能有一些方法需要返回JSON数据,而另一些方法需要返回视图。在这种情况下,使用`@Controller`注解并结合`@ResponseBody`注解(在需要返回JSON的方法上)会更加合适。
  4. 内容协商:如果你需要根据请求头信息(如`Accept`头)来决定返回JSON还是其他格式(如HTML),那么使用`@Controller`可能更灵活,因为它允许你手动处理这些逻辑。
  5. API与视图混合:在一些旧的或传统的Spring MVC应用中,可能需要在同一个控制器中同时处理API请求和视图渲染。在这种情况下,`@Controller`可能是更好的选择。

总结来说,虽然`@RestController`注解在许多现代Web应用中非常有用,但并不是所有场景都适用。如果你需要返回视图或者需要更复杂的响应类型,那么`@Controller`可能是更合适的选择。在实际应用中,你应该根据你的具体需求和应用场景来选择合适的注解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何让 JOIN 跑得更快?

JOIN 一直是数据库性能优化的老大难问题&#xff0c;本来挺快的查询&#xff0c;一旦涉及了几个 JOIN&#xff0c;性能就会陡降。而且&#xff0c;参与 JOIN 的表越大越多&#xff0c;性能就越难提上来。 其实&#xff0c;让 JOIN 跑得快的关键是要对 JOIN 分类&#xff0c;分…

第三百八十一回

文章目录 1. 概念介绍2. 修改方法 015buttonStyle.png2.1 修改形状2.2 修改颜色2.3 修改位置 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何创建以图片为背景的页面"相关的内容&#xff0c;本章回中将介绍如何修改按钮的形状.闲话休提&#xff0c;让我们一起T…

06. Nginx进阶-Nginx代理服务

proxy代理功能 正向代理 什么是正向代理&#xff1f; 正向代理&#xff08;forward proxy&#xff09;&#xff0c;一个位于客户端和原始服务器之间的服务器。 工作原理 为了从原始服务器获取内容&#xff0c;客户端向代理发送一个请求并指定目标&#xff08;即原始服务器…

chatgpt-next-web搭建教程,超低成本部署属于自己的ChatGPT

随着AI的应用变广&#xff0c;各类AI程序已逐渐普及&#xff0c;尤其是在一些日常办公、学习等与撰写/翻译文稿密切相关的场景&#xff0c;大家都希望找到一个适合自己的稳定可靠的ChatGPT软件来使用。 ChatGPT-Next-Web就是一个很好的选择。它是一个Github上超人气的免费开源…

2核4G云服务器租用价格_2核4G云主机优惠价格_2024年报价

租用2核4G服务器费用价格&#xff0c;2核4G云服务器多少钱一年&#xff1f;1个月费用多少&#xff1f;阿里云2核4G服务器30元3个月、轻量应用服务器2核4G4M带宽165元一年、企业用户2核4G5M带宽199元一年&#xff1b;腾讯云轻量2核4G服务器5M带宽165元一年、252元15个月、540元三…

Spring IOC在业务中常见的使用方式

目录 1、什么是IOC 2、java实现创建对象的方式有哪些 3、基于配置文件的di实现 3.1、什么是di 3.2、入门案例 3.3、环境搭建 接口和实现类 ioc配置文件 测试程序 3.4、案例总结 3.5、简单类型属性的赋值&#xff08;set注入&#xff09; set注入要求 JavaBean sp…

代码随想录day12(2)字符串:重复的子字符串(leetcode459)

题目要求&#xff1a;给定一个非空的字符串&#xff0c;判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母&#xff0c;并且长度不超过10000。 思路&#xff1a; 一、首先对于暴力解法&#xff0c;可以枚举所有的字串进行判断。但是枚举时实际上只需…

rt thread stdio如何同时生成bin和hex

一、rt thread stdio默认生成bin文件&#xff1a; rt thread stdio 软件编译时&#xff0c;默认生成bin文件&#xff1b; 二、rt thread stdio如何同时生成bin和hex 右键单击-->项目-->属性-->C/C构建-->设置-->构建步骤-->(构建后步骤)命令&#xff1a; …

视频如何无水印保存?这三种下载方法赶紧收藏

在互联网时代&#xff0c;视频已成为我们获取信息、娱乐休闲的重要途径。然而&#xff0c;有时我们想要保存或分享某些视频时&#xff0c;却发现下载起来却带有水印。为了解决这个问题&#xff0c;今天给大家带来几个无水印下载的方法。 方法一&#xff1a;水印云 水印云是一…

Python使用模块和库编程

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 路在脚下&#xff0c;勇往直前&#x…

Spring Boot2.2.4版本启动项目时,访问登录接口显示页面不存在

问题触发场景&#xff1a;IDEA 2023.3.4 SpringBoot 2.2.4 上面4张图片分别是项目结构、Spring Boot启动配置、SpringMVC配置和页面展示在项目中存放的位置&#xff0c;表面上看上去没有太大问题&#xff0c;项目应该会达到预期结果&#xff0c;但是bug总是在不经意间出现&…

MySQL数据库运维第一篇(日志与主从复制)

文章目录 一、错误日志二、二进制日志三、查询日志四、慢查询日志&#xff08;记录超时的sql语句&#xff09;五、主从复制概括六、主从复制原理七、搭建主从复制八、主从复制的测试 在这篇深入的技术文章中&#xff0c;作者将以明晰透彻的方式详细介绍MySQL数据库中关键的日志…

【EAI 027】Learning Interactive Real-World Simulators

Paper Card 论文标题&#xff1a;Learning Interactive Real-World Simulators 论文作者&#xff1a;Mengjiao Yang, Yilun Du, Kamyar Ghasemipour, Jonathan Tompson, Leslie Kaelbling, Dale Schuurmans, Pieter Abbeel 作者单位&#xff1a;UC Berkeley, Google DeepMind, …

日本发动全面侵华战争他们在怕什么?为何不敢动陕西,

日本全面侵华战争之谜&#xff1a;恐惧与野心的交织 在二十世纪三十年代&#xff0c;日本帝国主义以令人发指的暴行和残忍手段&#xff0c;对中国发动了全面侵华战争。然而&#xff0c;在这场战争中&#xff0c;有一个引人关注的现象&#xff1a;日本侵略者在进攻过程中&#…

python和nodejs一键安装当前项目所有依赖

python和nodejs一键安装当前项目所有依赖。群里有人问怎么快速安装网上下载的源码里面的依赖。所以在这里分享一下。更多问题可以自己加群917400262问我。 目录导航 1.0 python一键安装当前项目所有依赖2.0 nodejs一键安装当前项目所有依赖 1.0 python一键安装当前项目所有依赖…

聊聊国内「类Sora模型」发展现状,和 Sora 的差距到底有多大?

2024 年 2 月 16 日。 就在谷歌发布他新一代的多模态大模型 Gemini 1.5 Pro 的同一天&#xff0c;OpenAI 带着新一代的文生视频模型 Sora 再次抓住了全世界人们的眼球。 “颠覆”、“炸裂”、“变天”、“疯狂”&#xff0c;类似的形容词一夜之间簇拥在 Sora 周围&#xff0c;…

网络传输基本流程(封装,解包)+图解(同层直接通信的证明),报头分离问题,协议定位问题,协议多路复用

目录 网络传输基本流程 引入 封装 过程梳理 图解 报文 解包 过程梳理 图解 -- 同层直接通信的证明 总结 解包时的报头分离问题 举例 -- 倒水 介绍 自底向上传输时的协议定位问题 介绍 解决方法 协议多路复用 介绍 优势 网络传输基本流程 引入 首先,我们明确…

VS查看C++头文件(.h文件)的函数列表

这里使用的是VS2019举例 如下图查看Actor.h文件中的函数列表 设置步骤如下图

【d35】【Java】【力扣】28. 找出字符串中第一个匹配项的下标

题目 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 示例 1&#xff1a; 输入&#xff1a;haystac…

【大数据】通过 docker-compose 快速部署 MinIO 保姆级教程

文章目录 一、概述二、MinIO 与 Ceph 对比1&#xff09;架构设计对比2&#xff09;数据一致性对比3&#xff09;部署和管理对比4&#xff09;生态系统和兼容性对比 三、前期准备1&#xff09;部署 docker2&#xff09;部署 docker-compose 四、创建网络五、MinIO 编排部署1&…