# servlet-crud **Repository Path**: java-lesson/servlet-crud ## Basic Information - **Project Name**: servlet-crud - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-01 - **Last Updated**: 2026-05-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Servlet CRUD 项目 ## 项目简介 这是一个基于 Java Servlet 技术实现的英雄管理系统,提供了完整的增删改查(CRUD)功能。该项目演示了如何使用 Servlet、JDBC 和 MySQL 数据库构建一个简单的 Web 应用程序。 ## 技术栈 - **后端**: Java Servlet (Jakarta EE 10) - **数据库**: MySQL 9.4.0 - **构建工具**: Maven - **Java 版本**: JDK 25 - **Web 容器**: Jakarta Servlet API 6.1.0 ## 项目结构 ``` servlet-crud/ ├── src/main/java/ │ ├── model/ │ │ └── Hero.java # 英雄实体类 │ ├── dao/ │ │ └── HeroDAO.java # 数据访问对象,处理数据库操作 │ └── com/example/servlet/crud/ │ ├── HeroAddServlet.java # 添加英雄的 Servlet │ ├── HeroDeleteServlet.java # 删除英雄的 Servlet │ ├── HeroEditServlet.java # 编辑英雄页面的 Servlet │ ├── HeroListServlet.java # 显示英雄列表的 Servlet │ └── HeroUpdateServlet.java # 更新英雄的 Servlet ├── src/main/webapp/ │ ├── WEB-INF/ │ │ └── web.xml # Web 应用配置文件 │ ├── index.jsp # 首页 │ └── add.html # 添加英雄页面 └── pom.xml # Maven 配置文件 ``` ## 功能特性 ### 1. 英雄列表展示 - URL: `/hero/list` - 显示所有英雄的完整信息表格 - 包含编辑和删除链接 ### 2. 添加英雄 - URL: `/hero/add` - 通过表单提交新英雄信息 - 字段包括:名字、血量、伤害值 ### 3. 编辑英雄 - URL: `/hero/edit?id={id}` - 根据 ID 获取英雄信息并显示编辑表单 - 支持修改英雄的各项属性 ### 4. 更新英雄 - URL: `/hero/update` - 接收编辑后的表单数据并更新到数据库 - 更新完成后重定向到列表页 ### 5. 删除英雄 - URL: `/hero/delete?id={id}` - 根据 ID 删除指定的英雄记录 - 删除完成后重定向到列表页 ## 数据库设计 ### hero 表结构 | 字段名 | 类型 | 说明 | |--------|------|------| | id | INT | 主键,自增 | | name | VARCHAR | 英雄名称 | | hp | FLOAT | 生命值 | | damage | INT | 伤害值 | ### 数据库配置 在 `HeroDAO.java` 中配置的数据库连接信息: - 主机: `127.0.0.1:3306` - 数据库名: `sakila` - 用户名: `root` - 密码: `root` > ⚠️ **注意**: 使用前需要修改 `HeroDAO.java` 中的数据库连接配置以匹配你的本地环境。 ## 安装与运行 ### 前置要求 1. 安装 JDK 25 或更高版本 2. 安装 Maven 3.6+ 3. 安装 MySQL 数据库 4. 安装支持 Jakarta EE 10 的 Web 服务器(如 Tomcat 10+) ### 步骤 1. **克隆或下载项目** ```bash cd F:\java-lesson\servlet-crud ``` 2. **创建数据库和表** ```sql CREATE DATABASE IF NOT EXISTS sakila CHARACTER SET utf8mb4; USE sakila; CREATE TABLE hero ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255), hp FLOAT, damage INT ); ``` 3. **修改数据库配置** 编辑 `src/main/java/dao/HeroDAO.java` 文件,修改第 25 行的数据库连接信息: ```java return DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/sakila?characterEncoding=UTF-8", "root", "root"); ``` 4. **编译项目** ```bash mvn clean package ``` 5. **部署到 Web 服务器** - 将生成的 `target/servlet-crud-1.0-SNAPSHOT.war` 文件部署到 Tomcat 或其他 Web 服务器 - 或者使用 IDE(如 IntelliJ IDEA)直接运行 6. **访问应用** - 首页: `http://localhost:8080/servlet-crud/` - 英雄列表: `http://localhost:8080/servlet-crud/hero/list` - 添加英雄: `http://localhost:8080/servlet-crud/add.html` ## 使用说明 ### 查看英雄列表 访问 `/hero/list` 可以看到所有英雄的列表,包含以下列: - id - name(名称) - hp(生命值) - damage(伤害值) - edit(编辑链接) - delete(删除链接) ### 添加新英雄 1. 访问 `add.html` 页面 2. 填写英雄信息: - 名字 - 血量 - 伤害值 3. 点击"增加"按钮提交 ### 编辑英雄 1. 在英雄列表中点击某个英雄的 "edit" 链接 2. 在打开的编辑页面中修改英雄信息 3. 点击"更新"按钮保存修改 ### 删除英雄 在英雄列表中点击某个英雄的 "delete" 链接即可删除该英雄。 ## 代码说明 ### Hero.java 英雄实体类,包含以下属性: - `id`: 英雄 ID - `name`: 英雄名称 - `hp`: 生命值 - `damage`: 伤害值 ### HeroDAO.java 数据访问层,提供以下方法: - `getTotal()`: 获取英雄总数 - `add(Hero)`: 添加英雄 - `update(Hero)`: 更新英雄信息 - `delete(int)`: 删除英雄 - `get(int)`: 根据 ID 查询单个英雄 - `list()`: 查询所有英雄 - `list(int, int)`: 分页查询英雄列表 ### Servlet 类 所有的 Servlet 都使用了 `@WebServlet` 注解进行配置,无需在 `web.xml` 中手动配置。 ## 注意事项 1. **字符编码**: 项目使用 UTF-8 编码,确保数据库和页面都使用相同的编码 2. **数据库连接**: 每次数据库操作都会创建新的连接,生产环境建议使用连接池 3. **SQL 注入**: 项目使用了 PreparedStatement 防止 SQL 注入 4. **异常处理**: 当前的异常处理较简单,仅打印堆栈信息,生产环境需要更完善的错误处理机制 ## 可能的改进 - [ ] 添加连接池(如 HikariCP)提高性能 - [ ] 实现分页功能 - [ ] 添加输入验证 - [ ] 使用 JSP 或模板引擎替代 HTML 字符串拼接 - [ ] 添加前端样式美化界面 - [ ] 实现搜索和过滤功能 - [ ] 添加用户认证和授权 - [ ] 使用 MVC 模式分离关注点 ## 许可证 本项目仅供学习使用。 ## 联系方式 如有问题,请提交 Issue 或联系项目维护者。