# 课程demo-servlet **Repository Path**: javaweb-dev-tech/course-demo-servlet ## Basic Information - **Project Name**: 课程demo-servlet - **Description**: 课程demo-servlet servlet基础demo - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-21 - **Last Updated**: 2026-01-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java Web 开发技术课程示例代码(Servlet 篇) > 📘 本仓库是 **《Java Web 开发技术》课程** 的配套示例代码仓库, > 主要用于讲解 **Servlet 核心原理、请求响应模型、会话管理、过滤器监听器及JDBC数据持久化**, > 对应课程电子文档 **第二章:Servlet 技术基础**。 --- ## 🔗 课程与文档对应关系 - 📦 **课程代码仓库(Gitee)** 👉 https://gitee.com/javaweb-dev-tech/course-demo-servlet - 📖 **课程电子文档 · 第二章** 👉 https://javaweb.chende.top/chapter02/ > **建议学习路径:** > 1️⃣ 先阅读电子文档第二章(理解原理) > 2️⃣ 再结合本仓库代码(对照实现) > 3️⃣ 最后自行扩展与改造(完成实验任务) --- ## 🎯 本章学习目标(Chapter 02) 通过本仓库示例代码,学生应能够: - 理解 **Servlet 的运行机制与生命周期**、能够编写 **基础 Servlet 程序** - 掌握 **HttpServletRequest / HttpServletResponse** 的基本使用 - 理解 **请求参数获取、响应输出、编码处理** - 掌握 **Cookie 与 Session** 的基本使用 - 理解 **ServletContext** 应用上下文对象的使用 - 了解 **过滤器(Filter)** 和 **监听器(Listener)** 的基本使用 - 掌握 **JDBC 数据持久化** 及数据库连接池 **Druid** 的配置与使用 - 完成图书信息 **增删改查(CRUD)** 综合应用 - 为后续 **JSP / MVC / Spring MVC** 学习打下基础 --- ## 📂 项目结构说明 ``` course-demo-servlet ├── src/main/java/edu/wtbu/cs/coursedemoservlet │ ├── HelloServlet.java # 第一个 Servlet 示例 │ ├── RequestDemoServlet.java # 请求对象使用示例 │ ├── ResponseDemoServlet.java # 响应对象使用示例 │ ├── CookieDemoServlet.java # Cookie 操作示例 │ ├── SessionDemoServlet.java # Session 会话示例 │ ├── ContextDemoServlet.java # ServletContext 示例 │ ├── EncodingFilter.java # 编码过滤器(重要) │ ├── AdminFilter.java # 后台管理过滤器 │ ├── CorsFilter.java # 跨域资源共享过滤器 │ ├── OnlineUserListener.java # 在线用户监听器 │ ├── BookServlet.java # 图书管理 Servlet(CRUD) │ ├── LoginServlet.java # 登录处理 Servlet │ ├── HomeServlet.java # 首页处理 Servlet │ ├── HotBooksServlet.java # 热门图书 API │ ├── JDBCUtils.java # JDBC 数据库工具类 │ ├── dao/BookEntityDao.java # 图书数据访问对象 │ └── pojo/ # 实体类包 │ ├── Book.java # 图书实体类(API响应) │ ├── BookEntity.java # 图书实体类(数据库) │ └── Author.java # 作者实体类 ├── src/main/webapp │ ├── index.jsp # 项目入口页面 │ ├── home.jsp # 首页 │ ├── book.jsp # 图书列表页面 │ ├── book_form.jsp # 图书表单页面 │ ├── hot_book_list.jsp # 热门图书页面 │ ├── login.jsp # 登录页面 │ ├── login_fail.jsp # 登录失败页面 │ ├── register.jsp # 注册页面 │ └── WEB-INF │ └── web.xml # Servlet 配置文件(可选) ├── src/main/resources │ └── druid.properties # Druid 连接池配置 ├── src/test/java/edu/wtbu/cs/coursedemoservlet │ ├── JSONTest.java # JSON 转换测试 │ └── JdbcDemoTest.java # JDBC 数据库操作测试 └── pom.xml # Maven 项目配置 ``` --- ## 🧩 核心示例代码索引 ### 1️⃣ 第一个 Servlet - **示例文件:** `HelloServlet.java` - **访问地址:** `http://localhost:8080/demo/hello` - **说明:** Servlet 基本结构、`doGet` / `service` 方法、生命周期演示 ### 2️⃣ 请求与响应 | 功能 | 示例文件 | 访问地址 | |:---:|:---:|:---:| | 请求对象使用 | `RequestDemoServlet.java` | `/demo/request-demo` | | 响应对象使用 | `ResponseDemoServlet.java` | `/demo/response-demo` | ### 3️⃣ JSON 数据交互 - JSON 与 Java 对象相互转换: [`JSONTest.java`](src/test/java/edu/wtbu/cs/coursedemoservlet/JSONTest.java) - 获取热门图书列表(JSON): [`HotBooksServlet.java`](src/main/java/edu/wtbu/cs/coursedemoservlet/HotBooksServlet.java) `/demo/api/books/hot` ### 4️⃣ 会话管理 | 功能 | 示例文件 | 访问地址 | |:---:|:---:|:---:| | Cookie 操作 | `CookieDemoServlet.java` | `/demo/cookie-demo` | | Session 会话 | `SessionDemoServlet.java` | `/demo/session-demo` | | 应用上下文 | `ContextDemoServlet.java` | `/demo/context-demo` | ### 5️⃣ 过滤器(Filter)与 监听器(Listener) | 过滤器 | 作用 | 拦截路径 | |:---:|:---:|:---:| | `EncodingFilter` | 请求响应编码处理 | `/*`(全部请求) | | `AdminFilter` | 后台管理权限控制 | `/admin/*` | | `CorsFilter` | 跨域资源共享 | `/*`(全部请求) | - **在线用户监听器:** `OnlineUserListener.java` - 实现 `HttpSessionListener` 接口 - 监听用户会话创建与销毁 ### 6️⃣ 数据库与数据持久化 | 组件 | 说明 | |:---:|:---:| | `JDBCUtils.java` | 数据库连接工具类(包含 Druid 连接池) | | `BookEntityDao.java` | 图书数据访问对象(CRUD 操作) | | `BookEntity.java` | 图书实体类(对应数据库表) | - **JDBC 数据库操作及连接池测试**: [`JdbcDemoTest.java`](src/test/java/edu/wtbu/cs/coursedemoservlet/JdbcDemoTest.java) ### 7️⃣ 综合应用 | 功能 | 访问地址 | 说明 | |:---:|:---:|:---:| | 图书管理 | `/demo/book` | 图书信息增删改查 | | 登录功能 | `/demo/login` | 用户登录处理 | | 热门图书 API | `/demo/api/books/hot` | 返回热门图书 JSON 数据 | --- ## 🚀 运行与部署说明 ### 运行环境要求 | 组件 | 版本要求 | 备注 | |:---:|:--------------------------:|:---:| | **JDK** | 11 / 17 / 21 | 推荐使用 LTS 版本 | | **Maven** | 3.6+ | 用于依赖管理和构建 | | **MySQL** | 5.7+ | 用于 JDBC 测试 | | **Tomcat** | 11.0 | Web 容器 | | **IDE** | IntelliJ IDEA(推荐)/ Eclipse | - | ### 数据库初始化 项目使用 MySQL 数据库,请先创建数据库并导入初始化脚本: ```sql -- 创建数据库 CREATE DATABASE IF NOT EXISTS course_demo_servlet DEFAULT CHARACTER SET utf8mb4; -- 导入初始化脚本(如果有) -- mysql -u root -p course_demo_servlet < sql/smart_book.sql ``` ### 配置数据库连接 数据库连接配置位于 `src/main/resources/druid.properties`,请根据本地环境修改以下配置: ```properties # Druid 数据库连接配置 driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/course_demo_servlet?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true username=root password=your_password ``` ### 部署步骤(IDEA 示例) 1. **克隆仓库** ```bash git clone https://gitee.com/javaweb-dev-tech/course-demo-servlet.git ``` 2. **使用 IDEA 打开项目** - 打开 IntelliJ IDEA - 选择 `File` → `Open`,选中项目根目录下的 `pom.xml` 文件 - 等待 Maven 自动下载依赖 3. **配置 Tomcat 服务器** - 在 IDEA 右上角点击 `Add Configuration` → `+` → `Tomcat Server` → `Local` - 在 `Deployment` 选项卡中,添加 `Artifact` → `course-demo-servlet:war exploded` - 在 `Deployment` 修改下方的 `Application context` 为 `/demo` - 点击运行按钮 4. **启动项目并访问** ``` http://localhost:8080/demo/ ``` > 💡 **建议:** 代码一定要「敲一遍」,不要只看。 --- ## 📝 主要功能模块说明 ### 图书管理系统 本项目提供了一个完整的 **图书信息增删改查(CRUD)** 示例,包括: - **查询图书列表** - 查看所有图书信息 - **添加图书** - 新增图书记录 - **编辑图书** - 修改现有图书信息 - **删除图书** - 删除指定图书 - **作者信息** - 图书关联作者信息 ### 用户认证模块 - **用户登录** - 基于 Session 的用户认证 - **访问控制** - 通过过滤器实现权限管理 - **会话管理** - 监听在线用户数量 ### API 接口 项目还提供了 RESTful API 接口,用于前后端分离开发: | 接口 | 方法 | 说明 | |:---:|:---:|:---:| | `/demo/api/books/hot` | GET | 获取热门图书列表(JSON) | --- ## 🧪 测试说明 项目包含单元测试,位于 `src/test/java` 目录: | 测试类 | 测试内容 | |:---:|:---:| | `JSONTest.java` | JSON 与 Java 对象相互转换 | | `JdbcDemoTest.java` | JDBC 数据库操作及连接池测试 | 运行测试: ```bash mvn test ``` --- ## 📌 特别说明 - 本仓库 **仅用于教学与学习用途** - 示例代码追求 **清晰、易懂、可复现**,而非商业级完整性 - 欢迎同学在此基础上进行扩展与改造 - 如有问题请查看课程文档或提交 Issue --- ## 👨‍🏫 课程信息 | 信息 | 内容 | |:---:|:---:| | 课程名称 | Java Web 开发技术 | | 章节对应 | 第二章 · Servlet 技术基础 | | 配套文档 | https://javaweb.chende.top/chapter02/ | --- ## 🤝 贡献与反馈 如果您发现代码中的错误或有改进建议,欢迎提交 Issue 或 Pull Request。 --- ## 📄 许可证 本项目采用 MIT License 开源协议。 ---