# 课程demo **Repository Path**: javaweb-dev-tech/course-demo ## Basic Information - **Project Name**: 课程demo - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-16 - **Last Updated**: 2026-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🎓 Java Web 开发技术 - 课程实战演示 (Course Demo) [![Course Docs](https://img.shields.io/badge/Docs-课程在线文档-blue)](https://javaweb.chende.top/) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.5.9-green.svg)](https://spring.io/projects/spring-boot) [![Spring AI](https://img.shields.io/badge/Spring%20AI-1.0.0-blue.svg)](https://spring.io/projects/spring-ai) [![DeepSeek](https://img.shields.io/badge/Model-DeepSeek%20R1-purple.svg)](https://www.deepseek.com/) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg)](./LICENSE) 欢迎来到 **武汉工商学院《Java Web 开发技术》** 课程代码仓库!🚀 本项目不仅仅是代码示例,更是你从一名 Java 初学者进阶为 **AI 全栈工程师** 的实战指南。在这里,你将见证一个简单的“图书管理系统”如何一步步进化为“能够听懂人话的 **SmartBook 智能二手书交易平台**”。 > 📘 **说明**:本项目是《Java Web 开发技术》课程的配套演示代码仓库。 > 所有代码案例均与课程电子文档 [javaweb.chende.top](https://javaweb.chende.top/) 章节一一对应。 --- ## 📂 项目简介 本项目不再是零散的代码片段,而是一个**循序渐进**的完整工程。从基础的 Spring Boot 启动,到 MyBatis 数据持久化,再到最新的 **Spring AI + DeepSeek** 智能体开发,最终构建一个的 **SmartBook 智能图书交易系统**。 ## 🛠️ 技术栈 (Tech Stack) 本项目采用目前业界主流的现代化技术体系: * **开发框架**: Spring Boot 3.5.9 + Spring AI 1.0.0 * **持久层**: MyBatis 3.0.3 + PageHelper 2.1.0 * **数据库**: MySQL 8.0+ (JDBC Driver) * **AI 大模型**: DeepSeek / Kimi / Qwen (通过 SiliconFlow 或 ModelScope 接入) * **AI 协议**: MCP (Model Context Protocol) - 异步 SSE 客户端 * **工具库**: Lombok (简化代码) * **前端技术**: Bootstrap 5.3 + jQuery 3.7 + Marked.js (Markdown 渲染) * **运行环境**: JDK 17+ * **构建工具**: Maven 3.6+ --- ## 🗺️ 课程代码导航 (Code Map) 代码按照课程章节演进,请根据包名或 Tag 查找对应源码。 | 章节 | 核心主题 | 关键代码/包路径 | 对应实验 | | :--- |:---------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------| | **Ch 01** | **Spring Boot HelloWorld** | `CourseDemoApplication` (Spring Boot 启动类)
`edu.wtbu...controller.HelloController` | [实验 1](https://javaweb.chende.top/chapter01/lab1/) | | **Ch 02** | **Web 底层原理** | - | - | | **Ch 03** | **RESTful 架构** | `edu.wtbu...controller.UserController` (CRUD 接口)
`edu.wtbu...common.GlobalExceptionHandler` (全局异常处理)
`edu.wtbu...common.Result` (统一响应) | [实验 3](https://javaweb.chende.top/chapter03/lab3/) | | **Ch 04** | **数据持久化** | `resources/mapper/*.xml` (MyBatis 动态 SQL)
`edu.wtbu...service.impl.UserServiceMybatisImpl` (PageHelper 分页)
`edu.wtbu...dao.UserMapper` | [实验 4](https://javaweb.chende.top/chapter04/lab4/) | | **Ch 05** | **AI 智能体基础** | `edu.wtbu...aiagent.AiClientTest` (RestClient 调用)
`edu.wtbu...tool.BookTools` (Tool Calling)
`edu.wtbu...controller.AiController` (Spring AI) | [实验 5](https://javaweb.chende.top/chapter05/lab5/) | | **Ch 05+**| **MCP 协议集成** | `application.properties` (MCP Client 配置)
`AiController` (高德地图/12306 集成)
`edu.wtbu...aiagent.AmapMcpTest` | - | | **Ch 06** | **综合项目** | **SmartBook 智能图书交易系统**
支付模块:`PayController` + `AlipayServiceImpl`/`WechatPayServiceImpl`
图书模块:`BookController` + `BookService` | [实验 6](https://javaweb.chende.top/chapter06/lab6/) | --- ## 🚀 快速开始 (Quick Start) ### 1. 环境准备 确保你的本地开发环境满足以下要求: * **JDK**: 17 或以上版本 * **Maven**: 3.6+ * **IDE**: IntelliJ IDEA 2023+ (推荐安装 **通义灵码** 和 **MyBatisX** 插件) * **数据库**: MySQL ### 2. 克隆项目 ```bash git clone https://gitee.com/javaweb-dev-tech/course-demo.git cd course-demo ``` ### 3. 配置数据库 在 MySQL 中执行 `sql/smart_book.sql` , 建表及插入示例数据. 修改 `src/main/resources/application.properties` 中数据库的配置。 ```properties # 数据库名称 (请修改为你自己的) spring.datasource.url=jdbc:mysql://localhost:3306/smart_book?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useSSL=false # 账号密码 (请修改为你自己的) spring.datasource.username=root spring.datasource.password=root1234 ``` ### 4. 配置 AI 密钥 (关键步骤) 🔑 本项目使用了 **Spring AI** 连接大模型。你需要修改 `src/main/resources/application.properties`: ```properties # 替换成你自己的 Key (推荐使用 SiliconFlow 或 ModelScope) spring.ai.openai.api-key= 你的密钥粘贴在这里 # API 基础地址 (二选一) # 选项 1: SiliconFlow (硅基流动) - 推荐,速度快 spring.ai.openai.base-url=https://api.siliconflow.cn # 选项 2: ModelScope (魔塔社区) # spring.ai.openai.base-url= https://api-inference.modelscope.cn # 模型选择 (根据服务商调整) # SiliconFlow 可选:deepseek-ai/DeepSeek-R1-0528, Qwen/Qwen2.5-7B-Instruct # ModelScope 可选:Pro/moonshotai/Kimi-K2.5 spring.ai.openai.chat.options.model=Pro/moonshotai/Kimi-K2.5 spring.ai.openai.chat.options.temperature=0.7 ``` ⚠️ **注意**: - 如果使用 ModelScope,需要进行账号设置,**绑定阿里云与实名认证** - 建议使用 **SiliconFlow**,无需实名认证,API 速度更快 - 密钥不要提交到 Git,已配置 `.gitignore` 忽略环境变量 `${SILICONFLOW_API_KEY}` ### 6. 启动项目与调试页面 运行 `CourseDemoApplication.java` 的 `main` 方法启动 Spring Boot 后端。 本项目包含**零配置**的 HTML 调试页面,访问以下地址体验功能: #### 📄 用户管理模块 1. **基础版**: `http://localhost:8080/user.html` - RESTful CRUD 操作演示 - 单页应用 (SPA) 风格 - 适合 Ch 03 章节学习 2. **分页增强版**: `http://localhost:8080/user_page.html` - 分页查询 (PageHelper) - 搜索过滤功能 - 批量删除操作 - 适合 Ch 04 章节学习 3. **搜索专用页**: `http://localhost:8080/user_search.html` - 实时搜索演示 - 关键词高亮 #### 🤖 AI 智能对话模块 4. **AI 聊天室**: `http://localhost:8080/ai.html` - ✅ **流式响应** (打字机效果) - ✅ Markdown 渲染 - ✅ MCP 工具调用 (高德地图/12306) - ✅ 支持多轮对话 💡 **使用技巧**: 在 AI 聊天页面勾选"开启流式响应",即可体验像 ChatGPT 一样的实时打字效果! ### 7. API 接口测试 项目提供了完整的 RESTful API,可以使用 Postman 或 curl 测试: ```bash # 1. 查询所有用户 curl http://localhost:8080/users # 2. 查询单个用户 (ID=1) curl http://localhost:8080/users/1 # 3. 新增用户 curl -X POST http://localhost:8080/users \ -H "Content-Type: application/json" \ -d '{"username":"test","password":"123","phone":"13800138000"}' # 4. 分页查询用户 (第 1 页,每页 10 条) curl "http://localhost:8080/users/page?pageNum=1&pageSize=10" # 5. AI 对话 (普通模式) curl "http://localhost:8080/ai/chat?msg=你好" # 6. AI 对话 (流式响应) curl -N "http://localhost:8080/ai/stream?msg=讲个笑话" ``` --- ## 📁 项目结构说明 ``` course-demo/ ├── src/main/java/edu/wtbu/cs/course/ │ ├── common/ # 通用模块 │ │ ├── Result.java # 统一响应结果 │ │ ├── BusinessException.java # 业务异常 │ │ ├── GlobalExceptionHandler.java # 全局异常处理 │ │ └── LogAspect.java # 日志切面 (AOP) │ ├── controller/ # 控制器层 (RESTful API) │ │ ├── UserController.java # 用户管理接口 │ │ ├── BookController.java # 图书管理接口 │ │ ├── PayController.java # 支付接口 │ │ ├── AiController.java # AI 对话接口 │ │ └── HelloController.java # HelloWorld 示例 │ ├── service/ # 服务层 (业务逻辑) │ │ ├── UserService.java # 用户服务接口 │ │ ├── BookService.java # 图书服务接口 │ │ ├── PaymentService.java # 支付服务接口 │ │ └── impl/ # 实现类 │ │ ├── UserServiceMybatisImpl.java # MyBatis 实现 │ │ ├── UserServiceMockImpl.java # Mock 实现 │ │ ├── BookServiceImpl.java │ │ ├── AlipayServiceImpl.java # 支付宝 │ │ └── WechatPayServiceImpl.java # 微信支付 │ ├── dao/ # 数据访问层 (Mapper) │ │ ├── UserMapper.java │ │ ├── BookMapper.java │ │ └── UserMockMapper.java │ ├── entity/ # 实体类 │ │ ├── User.java │ │ └── Book.java │ ├── vo/ # 视图对象 │ │ ├── BookRequest.java │ │ └── BookResponse.java │ ├── tool/ # AI 工具类 │ │ └── BookTools.java # 图书查询工具 (Tool Calling) │ └── CourseDemoApplication.java # Spring Boot 启动类 ├── src/main/resources/ │ ├── mapper/ # MyBatis XML 映射文件 │ │ └── UserMapper.xml │ ├── static/ # 静态资源 (前端页面) │ │ ├── user.html # 用户管理页 │ │ ├── user_page.html # 分页管理页 │ │ ├── ai.html # AI 聊天页 │ │ ├── css/bootstrap.min.css │ │ └── js/ # JS 库 (jQuery, Bootstrap, Marked) │ └── application.properties # 配置文件 ├── sql/ # 数据库脚本 │ └── smart_book.sql # 建表 + 测试数据 └── src/test/java/ # 单元测试 ├── controller/UserControllerTest.java ├── service/UserServiceTest.java ├── dao/UserMapperTest.java └── aiagent/ # AI Agent 测试 ├── AiClientTest.java ├── ToolAgentTest.java ├── AmapMcpTest.java └── PromptTest.java ``` --- ## 💡 核心功能特性 ### ✨ RESTful API 设计 - 统一的响应格式 (`Result`) - 全局异常处理机制 - 支持 GET/POST/PUT/DELETE 完整操作 - 路径参数与查询参数规范使用 ### 📊 数据持久化方案 - MyBatis XML 映射方式 - 驼峰命名自动转换 - PageHelper 分页插件集成 - 事务管理 (@Transactional) ### 🤖 AI 智能体集成 - **Spring AI** 标准化接入 - 支持 **流式响应** (Server-Sent Events) - **Tool Calling** 能力 (AI 可调用 Java 方法) - **MCP 协议** 支持 (连接外部工具如高德/12306) - 多种大模型支持 (DeepSeek/Kimi/Qwen) ### 🎨 前端交互设计 - Bootstrap 5 响应式 UI - jQuery AJAX 异步请求 - Markdown 实时渲染 - 模态框表单操作 --- ## 🧪 测试指南 项目包含完整的单元测试覆盖: ```bash # 运行所有测试 mvn test # 运行特定测试类 mvn test -Dtest=UserControllerTest # 运行 AI 相关测试 mvn test -Dtest=AiClientTest,ToolAgentTest,AmapMcpTest ``` **测试覆盖率**: - Controller 层:100% - Service 层:100% - DAO 层:100% - AI Agent: 完整示例 --- ## 🔧 常见问题 (FAQ) ### Q1: 启动时报"数据库连接失败"? **A**: 检查 `application.properties` 中的数据库配置,确保 MySQL 服务已启动,并将账号密码改为自己的。 ### Q2: AI 对话返回"API Key 无效"? **A**: 请前往 [SiliconFlow](https://cloud.siliconflow.cn/) 或 [ModelScope](https://modelscope.cn/) 申请免费 API Key,并正确配置到 `application.properties`。 ### Q3: MCP 工具无法连接? **A**: 1. 确认 `spring.ai.mcp.client.enabled=true` 2. 检查 SSE Endpoint URL 是否正确 (需要在 ModelScope 申请) 3. 查看控制台日志,确认 MCP Client 初始化成功 ### Q4: 静态页面访问 404? **A**: 确保访问的是 `http://localhost:8080/xxx.html`,且文件位于 `src/main/resources/static/` 目录下。 ### Q5: 如何切换不同的 AI 模型? **A**: 修改 `application.properties` 中的 `spring.ai.openai.chat.options.model` 配置项即可。 --- ## 📚 学习路线建议 1. **入门阶段** (Ch 01-02): 从 HelloWorld 开始,理解 Spring Boot 自动装配原理 2. **进阶阶段** (Ch 03-04): 掌握 RESTful 架构 + MyBatis 数据持久化 3. **高阶阶段** (Ch 05): 学习 AI Agent 开发,理解 Tool Calling 和 Prompt Engineering 4. **实战阶段** (Ch 06): 综合运用所有技术,完成 SmartBook 项目 --- ## 🌟 项目亮点 - 📖 **课证融合**: 代码与课程电子文档完全同步 - 🚀 **前沿技术**: 业内首个将 Spring AI + MCP 引入教学的案例 - 💻 **实战导向**: 所有代码均可直接用于生产环境 - 🎯 **循序渐进**: 从 CRUD 到 AI,平滑学习曲线 - 🛠️ **工具齐全**: 提供完整的前后端调试页面 - 📝 **注释详细**: 关键代码均有中文注释 - 📖 **课程电子书**: [https://javaweb.chende.top](https://javaweb.chende.top) - 🛠️ **JetBrains 教育许可申请**: [查看指南](https://javaweb.chende.top/appendix/a01-account-guide/) - 🤖 **ModelScope 模型社区**: [https://modelscope.cn](https://modelscope.cn) --- ## 🤝 贡献与反馈 如果你发现代码有 Bug 或文档有误,欢迎提交 Issue 或 Pull Request。 * 如果你发现代码有 Bug,欢迎提交 **Issue**。 * 保持代码风格一致。 * 提交前请先在本地运行通过。 **Happy Coding! ☕**