html+miniui+servlet做的图书管理功能

151 阅读5分钟

图书管理系统 (JavaWeb - Servlet + MiniUI + JDBC)

项目介绍

这是一个基于 JavaWeb 技术栈实现的简单图书管理系统。它使用了经典的 Servlet + HTML + MiniUI + JDBC 架构,并结合了 MiniUI 前端框架来构建用户界面。系统实现了用户注册、登录、图书的增删改查等核心功能,并区分了管理员和普通用户权限。

本项目旨在演示一个基础的、非 Maven 构建的 JavaWeb 应用的开发流程。

技术栈

  • 后端:
    • Java (Servlet API - javax.*)
    • JDBC (用于数据库连接)
  • 前端:
    • HTML
    • MiniUI (jQuery MiniUI - 前端 UI 框架)
  • 数据库:
    • MySQL 5.7+ (SQL 脚本兼容 MySQL 5.7 及以上版本)
  • Web 容器:
    • Apache Tomcat (或其他兼容 Servlet 3.0+ 的容器)
  • 构建:
    • 无构建工具 (手动管理 JAR 包)

核心功能

  1. 用户认证:
    • 用户注册
    • 用户登录
    • 用户登出
  2. 角色权限:
    • 管理员 (admin): 可以查看和管理所有用户的图书信息。
    • 普通用户 (user): 只能查看和管理自己添加的图书信息。
  3. 图书管理 (CRUD):
    • 添加图书: 用户可以添加新的图书信息(书名、作者、出版社、ISBN)。
    • 查看图书: 用户可以查看图书列表(管理员看所有,普通用户看自己的)。列表支持分页、排序和过滤。
    • 编辑图书: 用户可以修改已存在的图书信息(管理员改所有,普通用户改自己的)。
    • 删除图书: 用户可以删除图书(管理员删所有,普通用户删自己的)。
  4. 界面:
    • 使用 MiniUI 框架构建统一风格的界面,包括登录页、注册页、主界面布局(页头、菜单、内容区、页脚)、数据表格、表单等。
    • 所有界面文案均为中文。

项目特点

  • 传统 Java EE 结构: 使用 javax.servlet.* 包,适合学习和理解 Servlet 基础。
  • 无 Maven: 依赖的 JAR 包需要手动下载并放置到 WebContent/WEB-INF/lib 目录下。
  • Servlet 作为控制器: 所有的业务请求都通过 Servlet 进行处理和转发,JSP 仅作为视图展示。
  • DAO 模式: 使用 Data Access Object (DAO) 模式封装数据库操作,使业务逻辑和数据访问分离。
  • JDBC 连接: 使用纯 JDBC 进行数据库交互,包含一个简单的 DBUtil 类来管理连接。
  • MiniUI 集成: 前端使用 MiniUI 快速构建功能性界面,如图书列表的 DataGrid 和增改操作的 Form。
  • 角色控制: 在 Servlet 和 DAO 层实现了基于用户角色的数据访问控制。
  • UTF-8 编码: 前后端均设置为 UTF-8 编码,以支持中文。
  • 独立表单页: 添加和编辑图书使用同一个独立的 bookForm.jsp 页面,与列表页分离。

如何运行

  1. 环境准备:
    • 安装 JDK 8 或更高版本。
    • 安装 Apache Tomcat 7 或更高版本。
    • 安装 MySQL 5.7 或更高版本数据库。
  2. 数据库设置:
    • 启动 MySQL 服务。
    • 创建一个数据库,例如 book_management_system (字符集推荐 utf8mb4)。
    • 执行项目根目录下的 database.sql 文件,创建 usersbooks 表,并插入初始数据(包含一个 admin/admin 账号)。
    • 重要: 打开 src/com/example/bookmanagement/util/DBUtil.java 文件,修改 URL, USER, PASSWORD 常量,使其匹配您的数据库连接信息。
  3. 下载依赖:
    • 下载 MySQL Connector/J (JDBC 驱动),例如 mysql-connector-java-8.0.x.jar 或适用于 MySQL 5.7 的 mysql-connector-java-5.1.x.jar
    • 下载 MiniUI 框架 (www.miniui.com/)。解压后会得到 scripts (包含 js), themes (包含 css), images 等目录。
    • 下载 Gson 库 (用于在 JSP 中方便地将 Java List 转为 JSON),例如 gson-2.8.9.jar (mvnrepository.com/artifact/co…)。
  4. 放置依赖:
    • 将下载的 mysql-connector-java-*.jargson-*.jar 复制到项目的 WebContent/WEB-INF/lib 目录下。
    • 将 MiniUI 解压后得到的 scripts/miniui 目录重命名为 js/miniui 并复制到 WebContent 下。
    • 将 MiniUI 解压后得到的 themes 目录重命名为 css/miniui 并复制到 WebContent 下。
    • 将 MiniUI 解压后得到的 images 目录复制到 WebContent 下。
    • 最终 WebContent 目录下应有 css/miniui, js/miniui, images 三个目录。
  5. 部署项目:
    • 将整个项目文件夹(例如 BookManagementSystem)复制到 Tomcat 的 webapps 目录下。
    • 或者,在 Eclipse/IDEA 等 IDE 中,配置 Tomcat 服务器,并将该项目添加(Add)到服务器进行部署。
  6. 启动 Tomcat: 启动 Tomcat 服务器。
  7. 访问系统:
    • 在浏览器中访问 http://localhost:8080/BookManagementSystem/ (假设 Tomcat 端口为 8080,项目部署名为 BookManagementSystem)。
    • 您应该能看到登录页面。
    • 使用默认管理员账号 admin / admin 登录,或注册新用户后登录。

注意事项

  • 密码安全: 本示例为了简化,直接在数据库中存储了明文密码,并在代码中进行了明文比较。在实际生产环境中,绝不能这样做! 应该使用安全的哈希算法(如 bcrypt, scrypt, Argon2 或至少 SHA-256 加盐)存储密码哈希值,并在登录时比较哈希值。
  • 错误处理: 示例中的错误处理比较基础,主要是在控制台打印异常或在页面上显示简单的错误消息。生产系统需要更健壮的错误处理和日志记录机制。
  • SQL 注入: 代码中使用了 PreparedStatement,这有助于防止 SQL 注入。应始终优先使用 PreparedStatement 而不是拼接 SQL 字符串。
  • 并发: 示例未特别处理高并发场景下的问题(如 DAO 或 Util 类中的线程安全问题,尽管当前实现看起来是线程安全的)。
  • 依赖管理: 手动管理 JAR 包在大型项目中会变得困难,推荐使用 Maven 或 Gradle 进行依赖管理和项目构建。

编辑.png

登录.png

列表.png

首页.png

注册.png