# bookshop-springboot **Repository Path**: Eleanor1/bookshop-springboot ## Basic Information - **Project Name**: bookshop-springboot - **Description**: 毕设项目,网上书店,本人另外一个项目bookshop的改造版,修改数据库连接后即可以完美运行。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 19 - **Forks**: 5 - **Created**: 2020-05-14 - **Last Updated**: 2026-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: 毕业设计, 毕设, SpringBoot, MyBatis ## README # 网上书店系统 这是一个给大学生做课程设计 / 毕业设计参考的 Spring Boot 项目。 项目特点很直接: - 前后端没有完全分离 - 页面模板、静态资源、后端接口都在同一个工程里 - 适合用来学习一个完整 Web 项目的基本结构 - 适合二次修改成自己的毕设题目 如果你是第一次接触这类项目,建议先完成下面两件事: 1. 先把项目跑起来 2. 再按“页面 -> Controller -> Service -> 数据库”这条链路去理解代码 ## 1. 项目定位 这个项目不是标准的前后端分离项目,而是“混合式”结构: - 前端页面使用 FreeMarker 模板渲染 - 页面里的交互使用原生 JS、Axios、少量 jQuery - 后端使用 Spring Boot + MyBatis-Plus + Shiro - 数据存储使用 MySQL 你可以把它理解成: - 浏览器负责页面交互 - Spring Boot 既负责返回 HTML 页面,也负责返回 JSON 接口 - 所有代码都在一个 Maven 工程里 这类结构对学生更友好,因为部署简单,调试路径短。 ## 2. 技术栈 - JDK 8 - Spring Boot 2.7.18 - FreeMarker - MyBatis-Plus - Apache Shiro - Druid - MySQL 5.7 / 8.0 - Maven 3.6+ ## 3. 先看效果 启动成功后可以访问: - 前台首页: [http://localhost:8080/index](http://localhost:8080/index) - 登录页: [http://localhost:8080/login](http://localhost:8080/login) - 后台首页: [http://localhost:8080/admin/index](http://localhost:8080/admin/index) - 图书管理: [http://localhost:8080/admin/books](http://localhost:8080/admin/books) - 订单管理: [http://localhost:8080/admin/orders](http://localhost:8080/admin/orders) - 用户管理: [http://localhost:8080/admin/users](http://localhost:8080/admin/users) 演示账号: | 角色 | 用户名 | 密码 | | --- | --- | --- | | 管理员 | `admin` | `123456` | | 普通用户 | `fanfan813` | `123456` | ## 4. 5 分钟快速启动 ### 第一步:准备环境 本地至少要有: - JDK 8 - Maven - MySQL 推荐先确认版本: ```bash java -version mvn -version mysql --version ``` ### 第二步:创建数据库 创建数据库: ```sql CREATE DATABASE bookshop DEFAULT CHARACTER SET utf8mb4; ``` 导入项目根目录下的 `bookshop.sql`: ```bash mysql -u root -p bookshop < bookshop.sql ``` ### 第三步:修改数据库连接 编辑文件 [application.properties](/D:/develop/bookshop-springboot/src/main/resources/application.properties): ```properties server.port=8080 spring.datasource.druid.url=jdbc:mysql://localhost:3306/bookshop?useSSL=false&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull spring.datasource.druid.username=root spring.datasource.druid.password=123456 spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver ``` 你至少要确认这 3 项和自己电脑一致: - 数据库地址 - 数据库用户名 - 数据库密码 ### 第四步:启动项目 方式一,命令行启动: ```bash mvn spring-boot:run ``` 方式二,IDEA 启动: - 打开项目 - 等待 Maven 依赖下载完成 - 找到 `com.book.BookshopApplication` - 直接运行 `main` 方法 启动类位置: - [BookshopApplication.java](/D:/develop/bookshop-springboot/src/main/java/com/book/BookshopApplication.java) ### 第五步:访问系统 浏览器打开: - [http://localhost:8080/login](http://localhost:8080/login) 如果管理员登录成功,会进入后台。 ## 5. 项目结构怎么理解 对学生来说,最重要的不是背技术名词,而是知道“一个请求从哪进,最后去哪”。 建议按下面方式理解: ### 5.1 先看目录 ```text src/main/java/com/book/ ├── controller # 页面入口、接口入口 ├── service # 业务逻辑 ├── service/impl # 业务实现 ├── mapper # 数据库访问 ├── entity # 数据库实体 ├── shiro # 登录、权限控制 ├── config # Spring / FreeMarker / MyBatis-Plus 配置 └── util # 通用工具类 src/main/resources/ ├── templates # 页面模板(FreeMarker) ├── static # JS / CSS / 图片 ├── sqlmapper # 自定义 SQL 映射 └── application.properties ``` ### 5.2 再看一次典型请求链路 例如管理员访问图书管理页: 1. 浏览器访问 `/admin/books` 2. `AdminController` 返回 `admin/book/list` 页面 3. 页面加载后执行 `admin-v2-book.js` 4. JS 再去请求 `/book/admin/getListData` 5. `BookController` 调用 `BookService` 6. `BookServiceImpl` 调用 `BookMapper` 7. 从 MySQL 取数据后返回给前端 8. 前端把数据渲染成表格 对应关键文件: - [AdminController.java](/D:/develop/bookshop-springboot/src/main/java/com/book/controller/AdminController.java) - [BookController.java](/D:/develop/bookshop-springboot/src/main/java/com/book/controller/BookController.java) - [list.html](/D:/develop/bookshop-springboot/src/main/resources/templates/admin/book/list.html) - [admin-v2-book.js](/D:/develop/bookshop-springboot/src/main/resources/static/js/admin-v2-book.js) ### 5.3 推荐阅读顺序 如果你想最快看懂项目,按这个顺序读: 1. [HomeController.java](/D:/develop/bookshop-springboot/src/main/java/com/book/controller/HomeController.java) 2. [AdminController.java](/D:/develop/bookshop-springboot/src/main/java/com/book/controller/AdminController.java) 3. [BookController.java](/D:/develop/bookshop-springboot/src/main/java/com/book/controller/BookController.java) 4. [OrderController.java](/D:/develop/bookshop-springboot/src/main/java/com/book/controller/OrderController.java) 5. [UserController.java](/D:/develop/bookshop-springboot/src/main/java/com/book/controller/UserController.java) 6. [UserRealm.java](/D:/develop/bookshop-springboot/src/main/java/com/book/shiro/UserRealm.java) 7. 对应的 `service/impl` 8. 最后再看 `mapper` 和 `sql` ## 6. 前后端是怎么揉在一起的 这是本项目最值得学生学习的点。 ### 页面层 - 页面模板在 `src/main/resources/templates` - 模板引擎是 FreeMarker,不是 Vue / React 例如: - 前台页面:`templates/index.html` - 后台页面:`templates/admin/...` ### 前端交互层 - JS 文件在 `src/main/resources/static/js` - 页面加载后通过 `axios` 或 `$.ajax` 调后端接口 例如: - 后台图书列表请求 `/book/admin/getListData` - 后台订单列表请求 `/order/getPager` - 后台用户列表请求 `/user/getPager` ### 后端接口层 - Controller 既负责返回页面,也负责返回 JSON - 所以你会看到一个 Controller 里同时存在: - `return "admin/book/list"` 这种页面返回 - `@ResponseBody` 的 JSON 接口 这也是为什么这个项目很适合学生做参考:页面和接口在一个地方比较容易串起来理解。 ## 7. 和部署最相关的配置 最重要的配置文件: - [application.properties](/D:/develop/bookshop-springboot/src/main/resources/application.properties) 当前默认配置里要注意: - 默认端口是 `8080` - 默认数据库名是 `bookshop` - 默认数据库账号密码写的是 `root / 123456` - 默认启用了 `dev` profile 如果你部署到自己的电脑,最常改的是数据库连接。 ## 8. 常见问题 ### 8.1 启动失败,提示数据库连接不上 优先检查: - MySQL 是否启动 - `bookshop` 数据库是否创建 - `bookshop.sql` 是否已导入 - `application.properties` 中用户名密码是否正确 ### 8.2 登录失败 优先检查: - 是否真的导入了初始化数据 - `user`、`role`、`user_role` 三张表是否有数据 - 是否使用了演示账号 `admin / 123456` ### 8.3 页面样式丢失 优先检查: - 项目是否完整启动 - 浏览器是否能访问 `/css/...`、`/js/...`、`/static/...` - 是否改坏了模板文件中的静态资源路径 ### 8.4 管理员页面进不去 优先检查: - 是否登录的是管理员账号 - Shiro 会话是否正常 - `user_role` 表中该用户是否绑定了 `admin` 角色 ## 9. 如果你想基于这个项目做毕设,建议这样改 不要一上来就重构全项目,优先做“可展示、可答辩”的改动: - 先改题目和页面文案 - 再改数据库里的演示数据 - 再补 1 到 2 个你自己的业务功能 - 最后再做界面美化和答辩材料整理 比较适合扩展的方向: - 图书推荐 - 订单统计 - 用户画像 - 评论系统 - 收藏功能 - 支付流程模拟 - 管理端数据看板 ## 10. 许可证 本项目仅供学习、交流、课程设计和毕业设计参考,禁止直接用于商业项目。