【Spring Boot】Spring Boot + Thymeleaf搭建mvc项目
Spring Boot + Thymeleaf搭建mvc项目
- 1. 创建Spring Boot项目
- 2. 配置pom.xml
- 3. 配置Thymeleaf
- 4. 创建Controller
- 5. 创建Thymeleaf页面
- 6. 创建Main启动类
- 7. 运行项目
- 8. 测试结果
- 扩展:添加静态资源
1. 创建Spring Boot项目
- 打开IntelliJ IDEA → New Project → 选择Maven → 直接点击Create
- 输入项目名称:springboot-demo
确认GroupId(如:vip.buddha)和ArtifactId(保持与项目名一致)
2. 配置pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.0</version> <!-- 选择一个 2.x 版本 --></parent><groupId>vip.buddha</groupId><artifactId>springboot-demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency></dependencies></project>
依赖中无需指定版本的条件:
- 当依赖项属于 Spring Boot 官方提供的 Starter(如
spring-boot-starter-*
),且父 POM 已通过<dependencyManagement>
管理其版本时。
需要指定版本的条件:
- 使用非 Spring Boot 官方维护的第三方库(如
com.google.guava
),此时必须显式指定版本。
3. 配置Thymeleaf
Spring Boot默认已配置Thymeleaf,但你可以自定义设置。在 src/main/resources/application.yml
中添加:
server:port: 8080
spring:application:name: springboot-demothymeleaf:# 开发时建议开启缓存cache: false# 设置编码encoding: utf-8
4. 创建Controller
在 src/main/java/vip/buddha/controller
下新建一个Java类 HelloController.java
:
package vip.buddha.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;@Controller
public class HelloController {@GetMapping("/hello")public String sayHello(Model model) {model.addAttribute("message", "Hello, Thymeleaf!");return "hello"; // 对应src/main/resources/templates/hello.html}
}
5. 创建Thymeleaf页面
在 src/main/resources/templates
下新建 hello.html
:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Spring Boot + Thymeleaf</title>
</head>
<body><h1 th:text="${message}">默认消息</h1>
</body>
</html>
th:text="${message}"
会替换为Controller中设置的message
值。
6. 创建Main启动类
在 src/main/java/vip/buddha
下新建一个Java类 Main.java
:
package vip.buddha;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Main {public static void main(String[] args) {SpringApplication.run(Main.class, args);}
}
7. 运行项目
创建完毕目录结构如下:
- 找到主类
Main.java
,右键运行main
方法。 - 控制台输出
Started Main
表示启动成功。 - 访问 http://localhost:8080/hello 查看页面。
8. 测试结果
页面会显示:
Hello, Thymeleaf!
Spring Boot 的启动类(Main Class)是整个应用程序的入口点,负责初始化 Spring 上下文并启动应用。
@SpringBootApplication组合了以下三个注解的功能:
-
@SpringBootConfiguration(标记当前类为 Spring Boot
的配置类); -
@EnableAutoConfiguration(启用 Spring Boot 的自动配置机制);
-
@ComponentScan(自动扫描当前包及其子包下的组件(如 @Controller, @Service, @Repository
等))
扩展:添加静态资源
- 在
src/main/resources/static
下放置CSS/JS文件(如style.css
)。 - 在HTML中引用:
<link th:href="@{/style.css}" rel="stylesheet">
相关文章:

【Spring Boot】Spring Boot + Thymeleaf搭建mvc项目
Spring Boot Thymeleaf搭建mvc项目 1. 创建Spring Boot项目2. 配置pom.xml3. 配置Thymeleaf4. 创建Controller5. 创建Thymeleaf页面6. 创建Main启动类7. 运行项目8. 测试结果扩展:添加静态资源 1. 创建Spring Boot项目 打开IntelliJ IDEA → New Project → 选择M…...
线程中常用的方法
知识点详细说明 Java线程的核心方法集中在Thread类和Object类中,以下是新增整合后的常用方法分类解析: 1. 线程生命周期控制 方法作用注意事项start()启动新线程,JVM调用run()方法多次调用会抛出IllegalThreadStateException(线程状态不可逆)。run()线程的任务逻辑直接调…...

学习spring boot-拦截器Interceptor,过滤器Filter
目录 拦截器Interceptor 过滤器Filter 关于过滤器的前置知识可以参考: 过滤器在springboot项目的应用 一,使用WebfilterServletComponentScan 注解 1 创建过滤器类实现Filter接口 2 在启动类中添加 ServletComponentScan 注解 二,创建…...
为啥大模型一般将kv进行缓存,而q不需要
1. 自回归生成的特点 大模型(如 GPT 等)在推理时通常采用自回归生成的方式: 模型逐个生成 token,每次生成一个新 token 时,需要重新计算注意力。在生成第 t 个 token 时,模型需要基于前 t-1 个已生成的 t…...

雷赛伺服L7-EC
1电子齿轮比: 电机圈脉冲1万 (pa11的值 x 4倍频) 2电机刚性: pa003 或者 0x2003 // 立即生效的 3LED显示: PA5.28 1 电机速度 4精度: PA14 //默认30,超过3圈er18…...

阅文集团C++面试题及参考答案
能否不使用锁保证多线程安全? 在多线程编程中,锁(如互斥锁、信号量)是实现线程同步的传统方式,但并非唯一方式。不使用锁保证多线程安全的核心思路是避免共享状态、使用原子操作或采用线程本地存储。以下从几个方面详…...

AVL树:保持平衡的高效二叉搜索树
目录 一、AVL树的概念 1. 二叉搜索树的局限性 2. AVL树的定义 二、AVL树节点结构 三、AVL树的插入操作 1. 插入流程 2. 代码实现片段 四、AVL树的旋转调整 1. 左单旋(RR型) 2. 右单旋(LL型) 3. 左右双旋(LR型…...
打造专属AI好友:小智AI聊天机器人详解
打造专属AI好友:小智AI聊天机器人详解 在当下的科技热潮中,AI正迅速改变着我们的生活,成为了科技领域的新宠。而今,借助开源项目的力量,你可以亲手打造一个智能小助手——小智AI聊天机器人。它不仅是一个技术探索的窗…...

Webpack基本用法学习总结
Webpack 基本使用核心概念处理样式资源步骤: 处理图片资源修改图片输出文件目录 自动清空上次打包的内容EslintBabel处理HTML资源搭建开发服务器生产模式提取css文件为单独文件问题: Css压缩HTML压缩 小结1高级SourceMap开发模式生产模式 HMROneOfInclud…...

阿里云服务器数据库故障排查指南?
阿里云服务器数据库故障排查指南? 以下是针对阿里云服务器(如ECS自建数据库或阿里云RDS等托管数据库)的故障排查指南,涵盖常见问题的定位与解决方案: 一、数据库连接失败 检查网络连通性 ECS自建数据库 确认安全组规则放行数据库…...

数图闪耀2025深圳CCFA中国零售博览会:AI+零售数字化解决方案引发现场热潮
展会时间:2025年5月8日—10日 地点:深圳国际会展中心(宝安新馆) 【深圳讯】5月8日,亚洲规模最大的零售行业盛会——2025 CCFA中国零售博览会在深圳盛大开幕。本届展会汇聚全球25个国家和地区的900余家参展商ÿ…...
Vue2 中 el-dialog 封装组件属性不生效的深度解析(附 $attrs、inheritAttrs 原理)
Vue2 中 el-dialog 封装组件属性不生效的深度解析(附 $attrs、inheritAttrs 原理) 在使用 Vue2 和 Element UI 进行组件封装时,我们常会遇到父组件传入的属性不生效的情况,比如在封装的 el-dialog 组件中传入 width"100%&qu…...

LeetCode 1722. 执行交换操作后的最小汉明距离 题解
示例: 输入:source [1,2,3,4], target [2,1,4,5], allowedSwaps [[0,1],[2,3]] 输出:1 解释:source 可以按下述方式转换: - 交换下标 0 和 1 指向的元素:source [2,1,3,4] - 交换下标 2 和 3 指向的元…...

linux ptrace 图文详解(八) gdb跟踪被调试程序的子线程、子进程
目录 一、gdb跟踪被调试程序的fork、pthread_create操作 二、实现原理 三、代码实现 四、总结 (代码:linux 6.3.1,架构:arm64) One look is worth a thousand words. —— Tess Flanders 相关链接: …...

游戏:用python写梦幻西游脚本(谢苏)
《梦幻西游》是一款受欢迎的网络游戏,许多玩家希望通过脚本来增强游戏体验,比如自动打怪、自动治疗等。本文将为您展示一个用Python编写简单《梦幻西游》自动打怪脚本的方案。 需求分析 1.1 具体问题 在《梦幻西游》中,玩家需要频繁与怪物进行…...
MLX-Audio:高效音频合成的新时代利器
MLX-Audio:高效音频合成的新时代利器 现代社会的快节奏生活中,对语音技术的需求越来越高。无论是个性化语音助手,还是内容创作者所需的高效音频生成工具,语音技术都发挥着不可或缺的作用。今天,我们将介绍一个创新的开…...

Spring Boot 3.x集成SaToken使用swagger3+knife4j 4.X生成接口文档
说一说Spring Boot 3.X集成SaToken使用swagger3并使用第三方的knife4j踩过的坑,废话不多说直接上正题,SaToken的我就不贴了 第一步当然是要先导入相关的依赖,包括swagger和knife4j,如下 <dependency><groupId>com.gi…...

用Python监控金价并实现自动提醒!附完整源码
💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【星海网址导航】💻香港大宽带-4H4G 20M只要36/月👉 点此查看详情 在日常投资中,很多朋友喜欢在一些平台买点黄金,低买高卖赚点小差价。但黄金价格实时波动频繁…...
软考-软件设计师中级备考 11、计算机网络
1、计算机网络的分类 按分布范围分类 局域网(LAN):覆盖范围通常在几百米到几千米以内,一般用于连接一个建筑物内或一个园区内的计算机设备,如学校的校园网、企业的办公楼网络等。其特点是传输速率高、延迟低、误码率低…...
【一】浏览器的copy as fetch和copy as bash的区别
浏览器的copy as fetch和copy as bash的区别 位置:devTools->network->请求列表右键 copy as fetch fetch("https://www.kuaishou.com/graphql", {"headers": {"accept": "*/*","accept-language": &qu…...

ChatTempMail - AI驱动的免费临时邮箱服务
在当今数字世界中,保护在线隐私的需求日益增长。ChatTempMail应运而生,作为一款融合人工智能技术的新一代临时邮箱服务,它不仅提供传统临时邮箱的基本功能,还通过AI技术大幅提升了用户体验。 核心功能与特性 1. AI驱动的智能邮件…...

掌握单元测试:提升软件质量的关键步骤
介绍 测试:是一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。 阶段划分:单元测试、集成测试、系统测试、验收测试。 测试方法:白盒测试、黑盒测试及灰盒测试。 单元测试:就是针对最小的功能单元(方法&…...
DeepSeek+Excel:解锁办公效率新高度
目录 一、引言:Excel 遇上 DeepSeek二、认识 DeepSeek:大模型中的得力助手2.1 DeepSeek 的技术架构与原理2.2 DeepSeek 在办公场景中的独特优势 三、DeepSeek 与 Excel 结合的准备工作3.1 获取 DeepSeek API Key3.2 配置 Excel 环境 四、DeepSeekExcel 实…...

YOLOv1模型架构、损失值、NMS极大值抑制
文章目录 前言一、YOLO系列v11、核心思想2、流程解析 二、损失函数1、位置误差2、置信度误差3、类别概率损失 三、NMS(非极大值抑制)总结YOLOv1的优缺点 前言 YOLOv1(You Only Look Once: Unified, Real-Time Object Detection)由…...

【论文阅读】——Articulate AnyMesh: Open-Vocabulary 3D Articulated Objects Modeling
文章目录 摘要一、介绍二、相关工作2.1. 铰接对象建模2.2. 部件感知3D生成 三、方法3.1. 概述3.2. 通过VLM助手进行可移动部件分割3.3. 通过几何感知视觉提示的发音估计3.4. 通过随机关节状态进行细化 四、实验4.1. 定量实验发音估计设置: 4.2. 应用程序 五、结论六、思考 摘要…...

HarmonyOS基本的应用的配置
鸿蒙HarmonyOS组建页面 1、创建ets文件并配置2、修改main_pages.json文件3、修改EntryAbility.ets文件(启动时加载的页面) 1、创建ets文件并配置 Index.ets是创建项目自动构建生成的,我们可以将其删除掉,并重新在page文件夹下创建…...

【redis】集群模式
Redis Cluster是Redis官方推出的分布式解决方案,旨在通过数据分片、高可用和动态扩展能力满足大规模数据存储与高并发访问的需求。其核心机制基于虚拟槽分区,将16384个哈希槽均匀分配给集群中的主节点,每个键通过CRC16哈希算法映射到特定槽位…...
生成自定义的androidjar文件具体操作
在Androidsdk目录下的platform找到对应的api的android源码包路径,如android-32拷贝里面的android.jar文件到目录,如 C:\Users\xxxxxxx\Desktop\android\new_android_jar,然后解压android.jar到目录new_android_jar下。在编译后的aosp源码中找…...

DeepSeek实战--微调
1.为什么是微调 ? 微调LLM(Fine-tuning Large Language Models) 是指基于预训练好的大型语言模型(如GPT、LLaMA、PaLM等),通过特定领域或任务的数据进一步训练,使其适应具体需求的过程。它是将…...
API请求参数有哪些?
通用参数 app_key:应用的唯一标识,用于验证应用身份,调用API时必须提供。 timestamp:请求时间戳,通常为当前时间的毫秒级时间戳,用于防止请求被重放攻击。 format:返回数据的格式,…...