面向“借阅效率 + 管理体验”的轻量级图书借阅管理系统:更少依赖、更强安全默认、更一致的 UI 语言。
- 玻璃拟态 + 极光背景的管理后台 UI(统一主题变量、组件化布局)
- Bento Grid 仪表盘,关键动作一眼可见
- 快捷键帮助面板与筛选计数,提升检索效率
- 登录体验增强(CapsLock 提示 / 密码可视 / 提示自动淡出)
- 页面加载遮罩与状态汇总,降低操作不确定性
- 导出 CSV / 本页条数提示 / 无数据自动禁用导出
- 借阅 / 归还 / 归还确认清晰闭环
- 借阅归还日期后端校验(90 天内)
- 输入归一化(空格收敛 / 数字净化 / 邮箱小写)
- 登录口令采用 PBKDF2-SHA256 + 随机盐(支持旧明文口令自动升级)
- 基础安全响应头默认启用(防止常见点击劫持/嗅探等风险)
- CSRF 防护:关键写接口强制校验
_csrf/X-CSRF-Token(前端自动注入) - CSP 强化:移除内联事件处理与
javascript:链接,启用 Nonce 脚本策略 - 仓库中不再保存明文 Token / 密钥(部署脚本已改为环境变量注入)
- 前端运行时:纯原生 JS + 自研 Modal(移除 jQuery / Bootstrap 运行时依赖)
- 协议压缩:WAR 内置 GZIP Filter,压缩 HTML/JSON/CSS/JS,弱网更友好
- Maven Wrapper:无需本机安装 Maven 即可构建
- 依赖升级:Spring / MyBatis / Jackson 等升级到安全版本,替换 Log4j 为 Logback
- Java 17
- Spring MVC 5.3 + MyBatis 3.5 + PageHelper
- JSP + 原生 CSS/JS(无 jQuery/Bootstrap 运行时依赖)
- MySQL 8(Connector/J)+ HikariCP
- Logback(SLF4J)
- Maven Wrapper(
mvnw/mvnw.cmd) - Docker(可选:Tomcat 9 + JDK 17)
flowchart TB
subgraph Client[客户端 / Browser]
View[JSP 页面 + 静态资源]
Net[kbApi:拦截/超时/重试/进度条/状态事件]
View --> Net
end
subgraph Server[服务端 / Tomcat + Spring MVC]
Filter[Filter: 编码 & 安全响应头]
Ctrl[Controller]
Svc[Service + Transaction]
Mapper[MyBatis Mapper]
Filter --> Ctrl --> Svc --> Mapper
end
subgraph Data[数据层]
DB[(MySQL)]
end
Net -->|HTTP JSON / Form| Ctrl
Mapper --> DB
关键链路:JSP/原生 JS → kbApi(请求闭环)→ Controller → Service(事务)→ Mapper(SQL)→ DB。
更完整的分层与时序图见:docs/index.md、docs/ARCHITECTURE.md。
借阅链路(时序图)
sequenceDiagram
participant U as User
participant P as Page(JS)
participant C as Controller
participant S as Service
participant M as Mapper
participant DB as MySQL
U->>P: 点击“借阅”
P->>P: kbApi 进入请求闭环(loading/超时/重试)
P->>C: POST /book/borrowBook
C->>S: borrowBook(...)
S->>M: SQL
M->>DB: UPDATE/INSERT
DB-->>M: OK
M-->>S: rows
S-->>C: Result
C-->>P: JSON(Result)
P-->>U: Toast + 跳转
- JDK 17+
- MySQL(或使用 Docker Compose)
任选其一:
- 方式 A:使用
deploy/docker-compose.yml启动 MySQL(自动导入deploy/init.sql) - 方式 B:手动创建数据库并导入
deploy/init.sql
复制 .env.example 并根据实际环境设置,或直接在系统环境变量中配置:
DB_DRIVER
DB_URL
DB_USER
DB_PASSWORDWindows:
.\mvnw.cmd -DskipTests packagemacOS / Linux:
./mvnw -DskipTests package产物:target/cloudlibrary-1.0-SNAPSHOT.war
- 外部 Tomcat 9(JDK 17)部署
war - 或使用
Dockerfile构建镜像后运行
初始化脚本 deploy/init.sql 内置示例账号:
- 管理员:
itheima@itcast.cn/Admin@123456 - 读者:
zhangsan@itcast.cn/User@123456
提示:示例账号仅用于演示。若用于真实环境,请务必修改账号与口令,并限制数据库外网访问。
K-Book
├─ .github/ # CI 工作流
├─ .mvn/ # Maven Wrapper 资源
├─ deploy/ # 部署脚本与数据库初始化
├─ docs/ # 预览图与文档资产
├─ src/main/java/ # 后端代码
├─ src/main/resources/ # 配置与 MyBatis 映射
├─ src/main/webapp/ # JSP 与静态资源
├─ mvnw / mvnw.cmd # Maven Wrapper 入口
└─ pom.xml
本项目文档支持 可折叠导航(<details>)+ Mermaid 架构图,推荐从入口页开始:
- 入口:
docs/index.md - 建议阅读顺序:
docs/index.md→docs/ARCHITECTURE.md→docs/DEPLOYMENT.md→docs/API.md
说明:Mermaid 图在 GitHub 会自动渲染;若在本地阅读,建议用支持 Mermaid 的 Markdown 查看器。
管理端内置零依赖诊断脚本,默认 按需加载(减少首屏 JS 成本),打开控制台即可使用:
- 一次性快照:
kbHealth()(会自动加载诊断脚本并输出快照) - 手动加载:
kbLoadDiagnostics().then(() => kbDiagnostics.start(2000)) - 停止采样:
kbDiagnostics.stop()(需已加载诊断脚本) - URL 自动加载:访问管理端时加上
?kbDiagnostics=1
docs/index.md:交互式文档入口(可折叠导航 + Mermaid 图)docs/STYLE_GUIDE.md:UI 样式指南docs/DEPLOYMENT.md:部署指南docs/ARCHITECTURE.md:架构概览docs/FAQ.md:常见问题docs/API.md:接口速览docs/DB_SCHEMA.md:数据结构docs/ROADMAP.md:路线图CHANGELOG.md:版本更新记录CONTRIBUTING.md:贡献流程
目标:在保持“借阅流程清晰 + 管理体验稳定”的前提下,逐步从“单体 JSP 应用”演进到“可观测、可扩展、可持续交付”的产品形态。
- 引入数据库迁移工具(Flyway/Liquibase),让
deploy/init.sql从“初始化脚本”演进为“可重复演进的迁移链” - 增加健康检查与运行信息(例如
/health、/version),为容器化与监控打底 - 统一日志结构(requestId/用户信息/耗时)并补齐关键业务链路埋点(登录、借阅、归还、确认)
- 增加最小化自动化测试(Mapper/Service 级别)与 CI 校验(构建 + 格式 + 简单安全检查)
- 抽象并固化 API(版本化
/api/v1/*),将 UI 渲染从“强耦合 Controller”逐步转为“API + 视图薄层” - 引入权限模型升级(RBAC 权限点、操作审计日志),管理员写操作更可追溯
- 增强数据能力:更强检索(组合条件/排序/导出列选择)与基础统计(热门图书、逾期风险、活跃读者)
- 增加缓存策略(只读统计/字典类数据),减少重复查询与提升响应一致性
- 升级到 Spring Boot 3 / Spring 6(Jakarta 命名空间),统一配置方式并提升生态兼容性
- UI 从 JSP 迁移到现代前端工程(例如 React/Vue + Vite),配套 Tree-shaking / 资源哈希 / 分包加载
- API 生成与契约化:OpenAPI/Swagger 自动生成、前后端契约校验与回归测试
- 引入更完整的安全体系(CSRF/Rate-limit/会话策略/安全审计)与可观测性(指标 + Trace)
未声明,默认保留所有权利。