当前位置: 首页 > news >正文

Spring Boot + Thymeleaf + RESTful API 前后端整合完整示例

关键词:Spring Boot、Thymeleaf、RESTful API、前后端整合、用户管理


✅ 功能概述

本文将为你提供一个完整的 Spring Boot + Thymeleaf + RESTful API 的前后端整合项目,实现以下功能:

模块功能
用户管理查看用户列表、新增用户、删除用户
后端接口提供 JSON 格式的 RESTful API
前端页面使用 Thymeleaf 渲染 HTML 页面
数据持久化使用 Spring Data JPA + H2 内存数据库

📦 一、创建 Spring Boot 项目

1. 使用idea创建项目

选择如下配置:

  • Project: Maven
  • Language: Java
  • Spring Boot Version: 3.x(如 3.3)
  • Dependencies:
    • Spring Web
    • Spring Data JPA
    • Thymeleaf
    • H2 Database (用于测试)

下载并解压后导入 IDE(如 IntelliJ IDEA 或 Eclipse)。


📁 二、项目结构概览

springboot-thymeleaf-restful/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           └── demo/
│   │   │               ├── DemoApplication.java
│   │   │               ├── controller/
│   │   │               │   └── UserController.java
│   │   │               ├── model/
│   │   │               │   └── User.java
│   │   │               ├── repository/
│   │   │               │   └── UserRepository.java
│   │   │               └── service/
│   │   │                   └── UserService.java
│   │   └── resources/
│   │       ├── templates/
│   │       │   └── users.html
│   │       └── application.properties
└── pom.xml

🧱 三、添加依赖(pom.xml)

<dependencies><!-- Spring Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Data JPA --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-- Thymeleaf --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- H2 Database --><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope></dependency><!-- 测试依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>

🗃️ 四、数据模型与数据库操作

1. 实体类 User.java

package com.example.demo.model;import jakarta.persistence.*;@Entity
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String name;private String email;public User() {}public User(String name, String email) {this.name = name;this.email = email;}// Getter & Setter
}

2. Repository 接口 UserRepository.java

package com.example.demo.repository;import com.example.demo.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

3. 服务层 UserService.java

package com.example.demo.service;import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserService {@Autowiredprivate UserRepository userRepository;public List<User> getAllUsers() {return userRepository.findAll();}public User saveUser(User user) {return userRepository.save(user);}public void deleteUserById(Long id) {userRepository.deleteById(id);}
}

🎛️ 五、控制器 UserController.java

package com.example.demo.controller;import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;import java.util.List;@Controller
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;// 展示用户页面@GetMapping("")public String showUsers(Model model) {List<User> users = userService.getAllUsers();model.addAttribute("users", users);return "users";}// 新增用户@PostMapping("/add")public String addUser(@ModelAttribute User user) {userService.saveUser(user);return "redirect:/users";}// 删除用户@GetMapping("/{id}/delete")public String deleteUser(@PathVariable Long id) {userService.deleteUserById(id);return "redirect:/users";}// 返回 JSON 格式的所有用户(供外部调用)@GetMapping(path = "/api", produces = "application/json")@ResponseBodypublic List<User> getUsersJson() {return userService.getAllUsers();}
}

🖼️ 六、前端页面 templates/users.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>用户管理</title><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-4"><h2>用户管理</h2><!-- 表单提交 --><form th:action="@{/users/add}" method="post"><div class="mb-3"><label for="name" class="form-label">姓名</label><input type="text" name="name" id="name" class="form-control" required /></div><div class="mb-3"><label for="email" class="form-label">邮箱</label><input type="email" name="email" id="email" class="form-control" required /></div><button type="submit" class="btn btn-primary">添加用户</button></form><hr /><!-- 用户列表 --><table class="table table-bordered mt-4"><thead><tr><th>ID</th><th>姓名</th><th>邮箱</th><th>操作</th></tr></thead><tbody><tr th:each="user : ${users}"><td th:text="${user.id}"></td><td th:text="${user.name}"></td><td th:text="${user.email}"></td><td><a th:href="@{/{id}/delete(id=${user.id})}" class="btn btn-danger btn-sm">删除</a></td></tr></tbody></table>
</div>
</body>
</html>

⚙️ 七、配置文件 application.properties

# H2 数据库配置
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect# 开启 H2 控制台
spring.h2.console.enabled=true# Thymeleaf 缓存关闭(开发阶段)
spring.thymeleaf.cache=false

▶️ 八、运行与测试

1. 启动项目

运行 DemoApplication.java 中的 main() 方法启动 Spring Boot 应用。

2. 访问页面

打开浏览器访问:

http://localhost:8080/users

你会看到用户管理页面,可以:

  • 添加用户(提交表单)
  • 查看用户列表
  • 删除用户

3. 调用 RESTful API

访问 JSON 格式的用户列表:

GET http://localhost:8080/users/api

返回结果类似:

[{"id":1,"name":"张三","email":"zhangsan@example.com"}
]

✅ 总结

技术点内容
Spring Boot 整合 Thymeleaf快速搭建前后端一体化应用
RESTful API 设计提供 JSON 接口供其他系统调用
MVC 架构实践控制器、模型、视图三层清晰分工
内存数据库 H2快速测试无需安装数据库
前后端共存同时支持 HTML 页面和 JSON 接口
http://www.dtcms.com/a/279177.html

相关文章:

  • FBRT-YOLO: Faster and Better for Real-Time Aerial Image Detection论文精读(逐段解析)
  • linux服务器换ip后客户端无法从服务器下载数据到本地问题处理
  • 学生管理系统(C++实现)
  • 13.梯度scharr与lapkacia算子
  • 成都,工业设备边缘计算如何落地?——“边缘智能”新解法!
  • Linux入门:从文件存储到常用命令详解
  • 从数据库到播放器:Java视频续播功能完整实现解析
  • simscape中坐标系和坐标变换Frames and Transforms
  • MySQL数据实时同步到Elasticsearch的高效解决方案
  • 小波变换 | 连续小波变换
  • Effective Modern C++ 条款10:优先考虑限域enum而非未限域enum
  • 安全架构中身份与访问管理体系设计
  • 基于Yolov8车辆检测及图像处理系统【有代码】
  • python多版本管理--pyenv
  • pyspark中map算子和flatmap算子
  • RAG优化
  • Mysql数据库学习--约束
  • 聚宽sql数据库传递
  • 非阻塞写入核心:asyncio.StreamWriter 的流量控制与数据推送之道
  • python+requests 接口自动化测试实战
  • 支付宝小程序代运营:专业助力提升运营效能
  • AI Agent和Agentic AI
  • 驱动开发系列60- Vulkan 驱动实现-SPIRV到HW指令的实现过程(1)
  • 【Bluedroid】蓝牙协议栈enable流程深度解析
  • Redis ①⑥-缓存
  • org.casic.javafx.control.PaginationPicker用法
  • 【Docker基础】Dockerfile指令速览:健康检查与启动指令详解
  • Apache部署
  • ThinkPHP 8 在 Apache 下启用伪静态
  • 深入解析Hadoop YARN架构设计:从原理到实践