【Spring Boot】Spring Boot + Thymeleaf搭建mvc项目

Spring Boot + Thymeleaf搭建mvc项目

      • [1. 创建Spring Boot项目](#1. 创建Spring Boot项目)
      • [2. 配置pom.xml](#2. 配置pom.xml)
      • [3. 配置Thymeleaf](#3. 配置Thymeleaf)
      • [4. 创建Controller](#4. 创建Controller)
      • [5. 创建Thymeleaf页面](#5. 创建Thymeleaf页面)
      • [6. 创建Main启动类](#6. 创建Main启动类)
      • [7. 运行项目](#7. 运行项目)
      • [8. 测试结果](#8. 测试结果)
      • 扩展:添加静态资源

1. 创建Spring Boot项目

  1. 打开IntelliJ IDEA → New Project → 选择Maven → 直接点击Create
  2. 输入项目名称:springboot-demo
    确认GroupId(如:vip.buddha)和ArtifactId(保持与项目名一致)

2. 配置pom.xml

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 中添加:

yml 复制代码
server:
  port: 8080
spring:
  application:
    name: springboot-demo
  thymeleaf:
  	# 开发时建议开启缓存
    cache: false
    # 设置编码
    encoding: utf-8

4. 创建Controller

src/main/java/vip/buddha/controller 下新建一个Java类 HelloController.java

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

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

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. 运行项目

创建完毕目录结构如下:

  1. 找到主类 Main.java,右键运行 main 方法。
  2. 控制台输出 Started Main 表示启动成功。
  3. 访问 http://localhost:8080/hello 查看页面。

8. 测试结果

页面会显示:

复制代码
Hello, Thymeleaf!

Spring Boot 的启动类(Main Class)是整个应用程序的入口点,负责初始化 Spring 上下文并启动应用。

@SpringBootApplication组合了以下三个注解的功能:

  • @SpringBootConfiguration(标记当前类为 Spring Boot

    的配置类);

  • @EnableAutoConfiguration(启用 Spring Boot 的自动配置机制);

  • @ComponentScan(自动扫描当前包及其子包下的组件(如 @Controller, @Service, @Repository

    等))


扩展:添加静态资源

  1. src/main/resources/static 下放置CSS/JS文件(如 style.css)。
  2. 在HTML中引用:
html 复制代码
<link th:href="@{/style.css}" rel="stylesheet">

相关推荐
消失的旧时光-1943几秒前
第十四课 · 实战篇:Redis 缓存系统落地指南(Spring Boot 从 0 到可用)
spring boot·redis·缓存
golang学习记18 分钟前
Go 嵌入结构体方法访问全解析:从基础到进阶陷阱
后端
NAGNIP35 分钟前
程序员效率翻倍的快捷键大全!
前端·后端·程序员
wxin_VXbishe35 分钟前
C#(asp.net)学员竞赛信息管理系统-计算机毕业设计源码28790
java·vue.js·spring boot·spring·django·c#·php
森焱森42 分钟前
详解 Spring Boot、Flask、Nginx、Redis、MySQL 的关系与协作
spring boot·redis·python·nginx·flask
qq_2562470543 分钟前
从“人工智障”到“神经网络”:一口气看懂 AI 的核心原理
后端
无心水43 分钟前
分布式定时任务与SELECT FOR UPDATE:从致命陷阱到优雅解决方案(实战案例+架构演进)
服务器·人工智能·分布式·后端·spring·架构·wpf
用户400188309371 小时前
手搓本地 RAG:我用 Python 和 Spring Boot 给 AI 装上了“实时代码监控”
后端
用户3414081991251 小时前
/dev/binder 详解
后端