返回静态数据

在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`可能是更合适的选择。在实际应用中,你应该根据你的具体需求和应用场景来选择合适的注解。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GEE 数据集 ——利用leafmap python软件包实现NASA数据的接入(colab示例)

我们如何获取我们想要的数据,这里我们通过 leafmap python软件包实现NASA数据种全球超过9000+的数据集产品的接入和使用。这里我们使用在线的colab来实现处理,因为这里我们可以很好的应用已经在线配置好的colab环境来实现,省去了安装过程的繁琐。 要下载和访问数据,您需要…

rust学习(tokio协程分析一)

代码&#xff1a; async fn doAsyncPrint(v:u32) {println!("start doAsyncPrint,v is {},tid is {:?}",v,system::myTid());//thread::sleep(Duration::from_secs(1));time::sleep(Duration::from_secs(10)).await;println!("end,v is {},tid is {:?}"…

MacOS开发环境搭建

MacOS开发环境搭建 一、MacOS二、Python三、MacOS搭建Python开发环境1.Python下载地址1.1 Python官网地址1.2 Python下载地址 2.安装Python3.安装Python4.安装PyCharm5.创建一个Python项目6.配置PyCharm7.安装Python包8.运行Python代码9.总结 一、MacOS macOS是一套由苹果开发的…

云原生数据库 GaiaDB 支持新的管理工具啦

GaiaDB 是百度智能云自研的新一代企业级关系型数据库&#xff0c;最大容量可扩展 500TB 以上&#xff0c;吞吐达到 150 万以上 QPS。 作为一款 100% 兼容 MySQL 的云原生数据库产品&#xff0c;用户可以通过多种客户端工具连接 GaiaDB 实例&#xff0c;例如 MySQL Workbench、N…

【产品经理方法论——产品的基本概念】

1. 产品学三元素 产品学有三个元素&#xff1a;用户、需求、产品 产品学的内容&#xff1a;根据用户的需求设计产品&#xff0c;使用产品服务用户 仅仅通过三个元素无法说明每个元素的概念&#xff0c;因为三个元素互为说明关系。 通过引入人/群体来说明三个元素的关系。 需…

全局渐变滚动条样式

效果如下&#xff1a; APP.vue<style> /* 整个滚动条 */ ::-webkit-scrollbar {width: 5px;height: 10px; } /* 滚动条上的滚动滑块 */ ::-webkit-scrollbar-thumb {background-color: #49b1f5;/* 关键代码 */background-image: -webkit-linear-gradient(45deg,rgba(255,…

Svg Flow Editor 原生svg流程图编辑器(一)

效果展示 项目概述 svg flow editor 是一款流程图编辑器&#xff0c;提供了一系列流程图交互、编辑所必需的功能&#xff0c;支持前端研发自定义开发各种逻辑编排场景&#xff0c;如流程图、ER 图、BPMN 流程等。 目前也有比较好的流程图设计框架&#xff0c;但是还是难满足项目…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:隐私遮罩)

用于对组件内容进行隐私遮罩处理。 说明&#xff1a; 从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 obscured obscured(reasons: Array<ObscuredReasons>) 设置组件内容的遮罩类型。 系统能力&#xff1a; Sys…

拓尔微代理商 TMI3252T 600kHz 18V 2A同步COT降压转换器

TMI3252/S/T是高效率600kHz&#xff0c;恒定导通时间 &#xff08;COT&#xff09; 控制同步模式降压型DC-DC转换器&#xff0c;能够提供高达2A电流。TMI3252/S/T集成主要具有极低 RDS&#xff08;ON&#xff09; 的开关和同步开关以尽量减少传导损耗。低输出电压纹波和小尺寸的…

E8-写了一个方法,处理一个表单里有多组需要实现单选或复选的复选框

起因 今天同事发来需求&#xff0c;要做一个工作流&#xff0c;其中表单里有几组选项。在纸质单上是留出位置画勾选择的。简单的聊了一下对填报的要求&#xff0c;要求有的组要控制单选&#xff0c;有的组还不需要制多选。用文字来描述很晦涩&#xff0c;看到表单估计小伙伴们…

上位机图像处理和嵌入式模块部署(qmacvisual入门)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 虽然我们前面学习了很多的知识点&#xff0c;比如说在windows这边&#xff0c;用qt写界面&#xff0c;用opencv写图像处理代码&#xff1b;在linux…

Jmeter 性能 —— 50TPS与秒杀分析!

1、50tps——5tps分析 50tps基本上已经满足了大部分中小型企业要求了 需求&#xff1a;期望我项目的接口&#xff0c;都要能满足50tps&#xff1f; 算 50tps&#xff1a;50 个事务每秒50 t/s 1分钟&#xff1a;50\*60s 3000 事务1小时 3000 \* 60 180000 事务 1小时要处理…

基于Golang客户端实现Nacos服务注册发现和配置管理

基于Golang客户端实现Nacos服务注册发现和配置管理 背景 最近需要把Golang实现的一个web项目集成到基于Spring Cloud Alibaba的微服务体系中&#xff0c;走Spring Cloud Gateway网关路由实现统一的鉴权入口。 软件版本 组件名称组件版本Nacos2.2.0Go1.21.0Ginv1.9.1Nacos-s…

WhatsApp API号注册平台价格对比:帮你选择性价比最高的服务

WhatsApp作为全球使用人数众多的即时通讯工具&#xff0c;推出的API服务为企业提供了强大的客户互动能力。然而面对众多提供WhatsApp API号注册的平台&#xff0c;企业在选择时很容易感到困惑。这篇文章将会对目前市面上比较主流的WhatsApp API号注册平台进行价格对比&#xff…

三、加载路径对桁架的影响

加载路径&#xff1a; \color{green}加载路径&#xff1a; 加载路径&#xff1a; 材料在受力时所经历的应力和应变变化路径。在塑性力学中&#xff0c;加载路径对材料的变形行为和力学性能有着重要影响。 案例分析 \color{green}案例分析 案例分析 如图所示&#xff0c;理想弹…

Linux——基础IO

目录 前言 C语言文件操作 stdin & stdout & stderr 系统文件IO open close write read 文件描述符fd 重定向 dup2 Linux下一切皆文件 缓冲区 简易缓冲区 文件系统 磁盘 创建文件 删除文件 查看文件 软硬链接 软链接 硬链接 动静态库 静态库 …

40. 【Linux教程】文件系统介绍

从本小节我们将要开始 Linux 中的文件系统&#xff0c;在 Linux 系统中&#xff0c;文件系统都是基于硬盘创建的&#xff0c;Linux 系统支持多种不同类型的文件系统管理文件和目录&#xff0c;本小节介绍几种基本常见的文件系统。 Linux 文件系统中的文件是数据的集合&#xf…

算法沉淀——动态规划之两个数组的 dp(上)(leetcode真题剖析)

算法沉淀——动态规划之两个数组的 dp 01.最长公共子序列02.不相交的线03.不同的子序列04.通配符匹配 01.最长公共子序列 题目链接&#xff1a;https://leetcode.cn/problems/longest-common-subsequence/ 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 …

医院床旁交互系统概述 -智慧护理-全视通

全视通床旁交互系统是一种先进的医疗信息技术解决方案&#xff0c;旨在改善病患与医疗团队之间的沟通与交流。该系统通过集成多种高科技设备&#xff0c;为病患在病床边提供了一站式的信息交互平台&#xff0c;从而优化了医疗服务流程&#xff0c;提升了医疗体验。 首先&#x…

C++引入

引用不是新定义一个变量&#xff0c;而是给已经存在的变量取一个别名&#xff0c;编译器不会为了引用变量开辟内存空间&#xff0c;它和它引用的变量公用同一块内存空间。如李白被称为诗仙。李白和诗仙都是同一个人。 语法: 类型& 引用变量名(对象名)引用实体; 特性: 引用在…