在学习了Redis的基础知识后,为了更好地应用所学知识,我们将使用Java Spring框架构建一个小型实战项目。本篇博客将引导你完成一个任务管理系统,其中任务信息将存储在Redis中,以充分利用Redis的高性能和灵活性。
1. 项目构思
我们将创建一个简单的任务管理系统,用户可以通过Web界面添加、查看和完成任务。任务信息将以JSON格式存储在Redis的哈希数据结构中。
2. 技术选型
- 后端框架: Spring Boot(Java)
- 前端框架: Thymeleaf模板引擎
- 数据库: Redis
- 项目结构:
src/main/java/com/example/taskmanager/TaskManagerApplication.java
:Spring Boot应用主类src/main/java/com/example/taskmanager/controller/TaskController.java
:控制器类src/main/resources/templates/index.html
:Thymeleaf模板文件
3. 实施步骤
3.1 创建Spring Boot项目
使用Spring Initializer(https://start.spring.io/)创建一个新的Spring Boot项目,选择Web、Thymeleaf和Redis作为依赖。
3.2 编写控制器
在TaskController.java
中编写任务控制器:
package com.cheney.example.taskmanager.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@Controller
@RequestMapping("/tasks")
public class TaskController {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@GetMapping
public String index(Model model) {
Map<Object, Object> tasks = redisTemplate.opsForHash().entries("tasks");
model.addAttribute("tasks", tasks);
return "index";
}
@PostMapping("/add")
public String addTask(@RequestParam String taskName, @RequestParam String taskDescription) {
redisTemplate.opsForHash().put("tasks", taskName, taskDescription);
return "redirect:/tasks";
}
@PostMapping("/complete/{taskName}")
public String completeTask(@PathVariable String taskName) {
redisTemplate.opsForHash().delete("tasks", taskName);
return "redirect:/tasks";
}
}
3.3 编写Thymeleaf模板
在index.html
中编写Thymeleaf模板文件:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Task Manager</title>
</head>
<body>
<h1>Task Manager</h1>
<form action="/tasks/add" method="post">
<label for="taskName">Task Name:</label>
<input type="text" id="taskName" name="taskName" required>
<label for="taskDescription">Task Description:</label>
<input type="text" id="taskDescription" name="taskDescription" required>
<button type="submit">Add Task</button>
</form>
<ul>
<li th:each="taskName, taskDescription : ${tasks}">
<span th:text="${taskName}"></span>
<span th:text="${taskDescription}"></span>
<form action="/tasks/complete/{taskName}" method="post" style="display: inline;">
<input type="hidden" name="taskName" th:value="${taskName}">
<button type="submit">Complete</button>
</form>
</li>
</ul>
</body>
</html>
3.4 运行项目
在项目根目录下使用以下命令运行Spring Boot应用:
./mvnw spring-boot:run
访问http://localhost:8080/tasks
,你将看到一个简单的任务管理系统。你可以添加任务、标记任务为完成,所有的任务信息都将存储在Redis中。
4. 项目演示
下面是项目的简单演示:
- 打开浏览器,访问
http://localhost:8080/tasks
。 - 输入任务名称和描述,点击"Add Task"按钮,任务将被添加到列表中。
- 点击任务后面的"Complete"按钮,任务将被标记为已完成,该任务会从列表中移除。
结语
通过这个小型实战项目,我们成功地将所学知识应用到了一个实际的系统中。使用Spring Boot框架,我们能够轻松搭建起一个基于Java的Web应用,并结合Thymeleaf模板引擎和Redis数据库构建一个简单而完整的任务管理系统。这个项目不仅帮助我们巩固了所学知识,还展示了如何构建一个完整的Web应用。在接下来的学习中,我们将继续研究Redis的其他高级特性和应用场景,以更好地应用Redis在实际项目中。通过这个小型实战项目,我们深入了解了Spring Boot和Redis的集成,为我们未来的Java Web开发奠定了基础。