SpringBoot——默认页面在哪里?

news2025/4/6 7:05:17

简单介绍:

在之前我们创建了一个SpringBoot的应用程序,并且我们也启动了,但是我们都是在postman或者是在控制台看到了我们的界面,那么在浏览器中看到的界面其实只有一个:

这个界面其实就是SpringBoot的报错默认界面,表示找的资源没有找到。在之前我们学习SpringMVC的时候,我们的页面都是放在webapp下,然后通过页面解析器跳转到我们的页面中, 并且如果我们创建了一个名字叫做index的HTML文件或者JSP文件,那么在我们启动程序的时候,就可以当作默认主页显示,那么SpringBoot放置默认首页地方在哪里呢?

这时候就需要介绍一下我们resources下面的两个文件夹了:

static:

这个页面就是专门用来存放静态资源的文件夹,并且也是我们访问资源的根路径,也就是说当我们在这个文件夹下放置了资源的时候可以直接进行访问,或者是创建一个index.html的文件时可以当作默认的页面:

我们在这个文件夹下创建一个index.html文件,文件内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<h1>创建一个默认页面</h1>
</body>
</html>

 然后我们启动程序,在浏览器中访问我们服务器地址:

这样就可以在浏览器中显示我们的默认主页中的内容。

接下来我们验证一下static是不是我们项目的根路径,很简单,我们在这个文件夹下放置一个静态资源,然后直接在地址栏中访问这个静态资源,如果可以访问到那么就说明我们的猜想是正确的:

我们放了一个名字叫做01.jpg的图片文件,然后我们直接在地址栏中输入这个文件的名字,如果可以直接访问到,那么就说明这个文件夹就是我们的根路径:

 

顺利的访问到了,说明我们的静态资源和默认首页都是可以放在这个里面的。

Templates: 

一般我们把需要通过controller跳转的页面放在Templates中,接下来我们就创建一个Controller去跳转放在Templates文件夹中的资源:

package com.Spring;

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

@Controller
public class retrunController {
    @RequestMapping("/html")
    public String toHtml(){
        System.out.println("我要跳转页面了!");
        return "success";
    }
}

然后看一下Templates文件夹中的内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>跳转页面</title>
</head>
<body>
<h1>这是放在Template中用来跳转的页面</h1>
</body>
</html>

 要实现页面的跳转,还需要导入一个依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

导入依赖之后需要刷新一下Maven,然后看到依赖导入进来就可以了。

我们重启服务器,然后在页面中访问我们的controller中的映射地址,查看是否能实现跳转的功能:

可以看到我们的请求确实响应了正确的页面,那么就说明我们的配置是正确的,那么就来介绍一下刚才我们导入的依赖是干什么的。

thymeleaf:现代的服务器端 Java 模板引擎

百里香叶 (thymeleaf.org)https://www.thymeleaf.org/

上图是它的主页,当然是经过了浏览器自动翻译的,简单地说他就是可以帮助我们在HTML静态页面中,使用之前我们在JSP中是用到的模板,什么是模板,还记得之前我们的Java程序与JSP交互的时候学到的那种一对花括号然后中间有一个变量,这个变量可以动态的获取到后台的值,从而显示不同的效果。那么这是JSP的技术,HTML中显然是不会用的,HTML是静态的,那么他的作用就是帮我们在静态的网页中显示动态的信息,非常的优雅高效。

但是现在我们并不需要知道他的太多内容,我们用到的只是他的一个叫做模板解析器的东西,那么这个模板解析器可以帮助我们在Java程序和HTML交互的时候找到正确路径下的静态HTML资源,也就是帮助我们实现了页面的跳转。

那么说为什么这么麻烦呢?我们之前也可以直接使用JSP页面然后直接跳转啊,为什么现在又需要一个插件在HTML上增加JSP的功能,我们直接用JSP不可以吗?

SpringBoot说了,可以,但是不推荐,原因如下:

对于SpringBoot来说,使用JSP会导致项目出现一些问题,比如在打包jar包不支持JSP,Undertow不支持JSP,以及他不会覆盖SpringBoot默认的错误界面等等问题,所以我们就需要使用HTML然后集合一些类似于 thymeleaf这样的模板引擎来将静态页面转换成动态的。

当然除了thymeleaf之外还有很多其他优秀的模板引擎解决方案,在不知道使用什么方案的时候就去多看一看,然后就明白了在什么时候要用到何种技术。

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

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

相关文章

buuctf8

目录 crypto 摩丝 password 变异凯撒 Quoted-printable Rabbit web [护网杯 2018]easy_tornado [HCTF 2018]admin misc 被劫持的神秘礼物​编辑 crypto 摩丝 下载文件&#xff0c;得到一串摩斯密码 在线解码 password 下载文件 张三英文zs&#xff0c;加上生日&a…

opencv_contrib模块编译与安装

前言 由于opencv_contrib模块的安装依赖于opencv基础模块&#xff0c;所以看该教程前请先看一遍OpenCV基础模块安装教程 下载 下载 opencv_contrib模块&#xff08;需要与opencv基础模块版本号4.6.0相同&#xff0c;国内可以在gitcode下载&#xff09; 配置、编译、安装 打…

网工视角看基础网络,原来这么与众不同

大家好&#xff0c;我是老杨。 前两天去华为生态大会刚回来&#xff0c;颇为感慨。 感慨万物互联的世界越来越大&#xff0c;网络渗透度也越来越极致化。 网络很大&#xff0c;非常大&#xff0c;但在网工眼里&#xff0c;网络复杂又美妙&#xff0c;有着外行人难以理解的魅…

大数据Doris(十九):Doris索引介绍与前缀索引

文章目录 Doris索引介绍与前缀索引 一、Doris索引介绍 二、前缀索引 Doris索引介绍与前缀索引 一、Doris索引介绍 索引用于帮助快速过滤或查找数据。目前 Doris 主要支持两类索引: 内建的智能索引,包括前缀索引和 ZoneMap

【Prompting】ChatGPT Prompt Engineering开发指南(2)

ChatGPT Prompt Engineering开发指南2 从产品概况表生成营销产品描述问题1&#xff1a;文本太长问题2: 文本聚焦于错误的细节问题3&#xff1a;描述需要一个尺寸表 加载Python库查看HTML内容来源 在本教程中&#xff0c;学习迭代分析并完善给出的提示&#xff0c;以从结果概况表…

20230514 Google宣布引入生成式人工智能搜索引擎

&#x1f680; Google宣布引入生成式人工智能搜索引擎&#xff0c;可能是最大变化之一。 Google宣布引入生成式人工智能搜索引擎&#xff0c;可能是最大变化之一。 新搜索将使用人工智能模型整合互联网信息&#xff0c;更好地响应用户需求。然而&#xff0c;网络出版商担心这…

python+vue流浪动物公益科普宠物在线领养网站

使用动物在线领养网站的用户分管理员和用户两个角色的权限子模块。 开发语言&#xff1a;Python 框架&#xff1a;django/flask Python版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;PyCharm 系统所要实现的功…

接口自动化测试之request模块讲解,以及初步接口自动化测试框架封装(统一请求)

一、有接口测试工具的情况下&#xff0c;为什么要做接口自动化&#xff1f; 1.敏捷开发&#xff0c;接口一般数量很大&#xff0c;团队实现接测试&#xff0c;版本控制。 2.功能太死板&#xff0c;有些接口完全无法实现&#xff08;复杂的加密接口&#xff0c;签名接口等) 3.接…

【STL十九】算法——修改序列的操作(copy、move、remove、transform、replace)

算法——不修改序列的操作&#xff08;copy、move、transform、remove、replace&#xff09; 一、分类二、修改序列的操作三、copy四、move五、remove、remove_if六、fill、transform、replace、replace_if、reverse 一、分类 根据网站https://www.apiref.com/cpp-zh/cpp/head…

Spring的执行流程以及Bean的作用域和生命周期

深入Bean对象 1. Bean对象的作用域1.1 引出作用域问题1.2 六种作用域 2. Spring的执行流程3. Bean对象的生命周期 在之前的学习中&#xff0c;我们了解到Spring能够用来帮助我们管理Java中的Bean对象&#xff0c;我们能够向Spring的IOC容器中添加以及获取对象。那我们从Spring对…

【腾讯云 Finops Crane 集训营】学习云原生成本优化

目录 开篇介绍搭建环境第一步第二步第三步 添加集群成本洞察成本分析资源推荐与副本数智能预测与自动扩缩容EHPA安装Metrics Server创建测试应用创建 EffectiveHPA增加负载整体流程 调度优化负载感知调度拓扑感知调度 混部清理环境 开篇 某次闲逛CSDN&#xff0c;发现了这样一…

(文章复现)基于电力系统碳排放流理论的碳排放分摊模型研究(含matlab代码)

参考文献&#xff1a;基于电力系统碳排放流理论的碳排放分摊模型研究 之前写过一篇博客复现论文《电力系统碳排放流的计算方法初探》&#xff0c;那篇文章模型比较简单&#xff0c;没有考虑网损。(文章复现)电力系统碳排放流的计算方法初探(含matlab代码) 今天要复现的这篇文献…

1行命令本地部署 AgentGPT

本地部署 AgentGPT 部署 AgentGPT访问 AgentGPT 部署 AgentGPT 运行下面命令部署 AgentGPT&#xff0c;输入你的 OpenAI Key&#xff0c; git clone https://github.com/reworkd/AgentGPT.git; cd AgentGPT; ./setup.sh --docker访问 AgentGPT 使用浏览器打开 http://localh…

万得后端一面

目录 1.说说重载和重写2.内连接和外连接3.如果有一个任务来了&#xff0c;线程池怎么运行5.hashset怎么判断重复6.list和set说说7.说说有哪些list8.单例模式的饿汉式和懒汉式&#xff0c;怎么样可以防止反射。9.volatile关键字说说 1.说说重载和重写 1、重载发生在本类&#x…

MySQL创建索引时提示“Specified key was too long; max key length is 767 bytes”

MySQL创建索引时提示“Specified key was too long; max key length is 767 bytes” 问题描述 数据库RDS MySQL版在创建表索引时&#xff0c;出现如下错误信息。 Error 1071: Specified key was too long; max key length is 767 bytes.ERROR 1709 (HY000): Index column siz…

基于ESP32/ESP8266的单通道LoRaWAN网关设计-网页界面介绍

资料下载链接》》 网页界面介绍 对于单通道网关的第六版用户界面&#xff0c;我们专注于 Web 界面。本文档仅涉及 Web 界面。有几个部分要讨论&#xff1a; 用户界面说明web界面可以设置哪些参数单通道接口配置涉及的文件。 Web 界面的各个部分 启动 Web 界面时&#xff0…

【评测】腾讯云服务器的性能怎么样?

转载请注明出处&#xff1a;小锋学长生活大爆炸[ http://xfxuezhang.cn] 最近腾讯云推出了5年款服务器&#xff0c;性价比非常的高。但这么便宜的服务器&#xff0c;性能怎么样呢&#xff1f;学长特地领取了新人试用版测试了一下性能&#xff0c;这里与大家分享一下。 服务器领…

与对应负数同时存在的最大正整数

一、2441. 与对应负数同时存在的最大正整数 思路 这个题我想的是将数组中的负数全部找出来放进另一数组&#xff0c;然后再将原数组的元素与与之相比&#xff0c;如果相加等于0&#xff0c;那么就使num&#xff1b; 代码实现 int findMaxK(int* nums, int numsSize){int max0…

学系统集成项目管理工程师(中项)系列21b_整体管理(下)

1. 监控项目工作 1.1. 跟踪、审查和报告项目进展&#xff0c;以实现项目管理计划中确定的绩效目标的过程 1.2. 输入 1.2.1. 项目管理计划 1.2.2. 进度预测 1.2.2.1. 基于实际进展与进度基准的比较而计算出进度预测 1.2.2.1.1. 完工尚需时间估算(ETC) 1.2.2.1.2. 进度偏差(SV…

威胁报告检测到物理后果呈指数增长的OT网络攻击

2023年威胁报告 - 具有物理后果的 OT 网络攻击 在过去一年&#xff08;2022 年&#xff09;&#xff0c;我们看到了 57 起针对工业系统的 OT 相关网络攻击&#xff0c;这些攻击在现实世界中造成了物理后果。这是我们在 2021 年看到的 22 次类似攻击的 2.5 倍多&#xff0c;是 …