使用JSP+Servlet+JavaBean做的课程后台管理系统

课程后台管理系统

基于 JSP+Servlet+JavaBean 的 MVC 模型开发的课程后台管理系统。

项目简介

本系统是一个完整的课程后台管理系统,实现了用户管理、课程管理、Excel导入导出等功能。系统采用经典的 MVC 架构,使用 JSP+Servlet+JavaBean 技术栈开发。

技术栈

  • 前端: JSP、HTML、CSS、JavaScript
  • 后端: Servlet、JavaBean、JDBC
  • 数据库: MySQL 8.0(支持数据持久化)
  • 服务器: Tomcat 8.0+
  • 开发工具: Eclipse / IntelliJ IDEA
  • JDK版本: JDK 1.7+
  • Excel处理: Apache POI 5.2.3
  • 日志框架: Apache Log4j 2

功能特性

1. 登录功能

  • 支持超级管理员和普通管理员两种角色
  • 超级管理员账号:imooc,密码:imooc
  • 验证码验证,防止恶意登录
  • 普通管理员由超级管理员添加

2. 用户管理

  • 仅超级管理员可操作
  • 添加普通管理员
  • 删除普通管理员
  • 查看所有管理员列表
  • 权限过滤器阻止普通管理员访问

3. 课程管理

  • 表单添加课程:手动录入课程信息

    • 课程ID
    • 课程名称
    • 课程方向
    • 课程描述
    • 课程时长
    • 自动记录操作人
  • Excel导入课程:批量导入课程数据

    • 支持 .xls 和 .xlsx 格式
    • 自动解析Excel文件
  • Excel导出课程:导出所有课程数据

    • 自动生成 Excel 文件
    • 包含完整课程信息
  • 课程查询:分页显示课程列表

    • 每页显示10条记录
    • 支持翻页功能

项目结构

csharp 复制代码
kechenghoutai/
├── src/
│   └── com/
│       └── imooc/
│           ├── entity/              # 实体类
│           │   ├── Course.java      # 课程实体
│           │   └── User.java        # 用户实体
│           ├── dao/                 # 数据访问层
│           │   ├── CourseDao.java
│           │   └── impl/
│           │       └── CourseDaoImpl.java
│           ├── service/             # 业务逻辑层
│           │   ├── CourseService.java
│           │   └── impl/
│           │       └── CourseServiceImpl.java
│           ├── servlet/             # Servlet控制器
│           │   ├── LoginServlet.java
│           │   ├── LogoutServlet.java
│           │   ├── CaptchaServlet.java
│           │   ├── UserServlet.java
│           │   └── CourseServlet.java
│           ├── filter/              # 过滤器
│           │   ├── EncodeFilter.java       # 编码过滤器
│           │   ├── PermissionFilter.java   # 权限过滤器
│           │   └── LoginFilter.java        # 登录过滤器
│           └── util/                # 工具类
│               ├── DBUtil.java             # 数据库连接工具
│               ├── ExcelHelper.java        # Excel工具类
│               ├── ValidateUtil.java       # 验证工具类
│               └── FileUtil.java           # 文件工具类
├── WebContent/
│   ├── WEB-INF/
│   │   └── web.xml                  # Web配置文件
│   ├── login.jsp                    # 登录页面
│   ├── course-list.jsp              # 课程列表页
│   ├── course-add.jsp               # 课程添加页
│   └── user-list.jsp                # 用户管理页
└── README.md

快速开始

🚀 5分钟快速启动

方式一:使用内存存储(演示用)
  1. 下载 JAR 包 :双击运行 download-jars.bat
  2. 导入项目:在 Eclipse 中导入项目
  3. 配置 Tomcat:添加 Tomcat 服务器
  4. 启动访问http://localhost:8080/kechenghoutai/
  5. 登录系统 :用户名 imooc,密码 imooc
方式二:使用 MySQL 数据库(生产用)⭐
  1. 下载依赖 :运行 download-jars.batdownload-mysql-driver.bat
  2. 创建数据库 :执行 database.sql 脚本
  3. 配置密码 :修改 DBUtil.java 中的数据库密码
  4. 启动测试 :运行 DBUtil.main() 测试连接
  5. 访问系统:数据将永久保存到 MySQL

📖 详细步骤请查看:

  • 快速入门:快速开始指南.md
  • MySQL配置:MySQL配置说明.txt
  • 启动说明:如何启动项目.txt

安装部署

1. 环境要求

  • JDK: 1.7 或以上版本
  • Tomcat: 8.0 或以上版本
  • IDE: Eclipse 或 IntelliJ IDEA
  • MySQL: 8.0(可选,用于数据持久化)

2. 导入项目

  1. 下载项目源码
  2. 在 Eclipse 中选择 File -> Import -> Existing Projects into Workspace
  3. 选择项目目录,点击 Finish

3. 配置依赖

3.1 Apache POI 依赖(Excel 功能)

方式一:自动下载(推荐)

复制代码
双击运行:download-jars.bat

方式二:手动下载

将以下 11 个 JAR 包放入 WebContent/WEB-INF/lib/ 目录:

核心 POI 库(3个):

  • poi-5.2.3.jar
  • poi-ooxml-5.2.3.jar
  • poi-ooxml-lite-5.2.3.jar ⚠️ 必需

依赖库(6个):

  • xmlbeans-5.1.1.jar
  • commons-collections4-4.4.jar
  • commons-compress-1.21.jar
  • commons-io-2.11.0.jar
  • curvesapi-1.07.jar
  • commons-codec-1.15.jar

日志库(2个):

  • log4j-api-2.20.0.jar
  • log4j-core-2.20.0.jar

📥 下载地址见: WebContent/WEB-INF/lib/README.txt

3.2 MySQL 驱动(如使用数据库)

自动下载:

复制代码
双击运行:download-mysql-driver.bat

手动下载:

  • mysql-connector-java-8.0.30.jar

下载地址:

ruby 复制代码
https://maven.aliyun.com/repository/central/mysql/mysql-connector-java/8.0.30/mysql-connector-java-8.0.30.jar

4. 配置 MySQL 数据库(可选)

4.1 创建数据库
bash 复制代码
mysql -u root -p
source database.sql
4.2 修改数据库配置

编辑 src/com/imooc/util/DBUtil.java 第 16 行:

arduino 复制代码
private static final String PASSWORD = "你的MySQL密码";
4.3 测试连接

在 Eclipse 中运行 DBUtil.java 的 main 方法,查看连接是否成功。

📖 详细配置请查看: MySQL配置说明.txt

5. 配置 Tomcat

  1. 在 Eclipse 中配置 Tomcat 服务器
  2. 将项目添加到 Tomcat
  3. 启动 Tomcat 服务器

6. 访问系统

在浏览器中访问:http://localhost:8080/kechenghoutai/

使用说明

登录系统

  1. 打开登录页面

  2. 输入用户名和密码

    • 超级管理员:用户名 imooc,密码 imooc
  3. 输入验证码(点击图片可刷新)

  4. 点击登录按钮

管理课程

  1. 登录后自动进入课程管理页面

  2. 添加课程:点击"添加课程"按钮,填写表单

  3. 导入课程

    • 点击"导入课程"按钮
    • 选择 Excel 文件(.xls 或 .xlsx 格式)
    • 点击上传
  4. 导出课程:点击"导出课程"按钮,自动下载 Excel 文件

  5. 查看课程:在列表中查看所有课程,支持分页

管理用户(仅超级管理员)

  1. 点击导航栏的"用户管理"

  2. 添加管理员

    • 点击"添加管理员"按钮
    • 输入用户名(4-20位字母、数字、下划线)
    • 输入密码(6-20位字符)
    • 点击添加
  3. 删除管理员:点击用户列表中的"删除"按钮

Excel 导入格式

导入的 Excel 文件应包含以下列(第一行为标题行):

课程ID 课程名 课程方向 课程描述 时长 操作人
C004 Python基础 后端开发 Python编程入门 30小时 admin
C005 MySQL高级 数据库 MySQL数据库进阶 25小时 admin

系统架构

MVC 模式

  • Model(模型层)

    • Entity:Course、User 实体类
    • DAO:数据访问接口和实现
    • Service:业务逻辑接口和实现
  • View(视图层)

    • JSP 页面:login.jsp、course-list.jsp、course-add.jsp、user-list.jsp
  • Controller(控制器)

    • Servlet:LoginServlet、UserServlet、CourseServlet 等

过滤器

  • EncodeFilter:处理请求和响应的编码,解决中文乱码问题
  • PermissionFilter:权限验证,确保只有超级管理员能访问用户管理功能
  • LoginFilter:登录验证(可选配置)

注意事项

  1. 数据存储

    • 当前版本:已配置为 MySQL 8 数据库存储,数据永久保存 ✅
    • 内存版本:如需切换回内存存储(演示用),参考《MySQL配置说明.txt》
  2. 文件上传:导入功能需要上传 Excel 文件,确保服务器有足够的磁盘空间。

  3. 浏览器兼容性:推荐使用现代浏览器(Chrome、Firefox、Edge)访问系统。

  4. 安全性

    • 密码建议使用加密存储(当前为明文存储)
    • 生产环境建议添加更多安全验证

常见问题

1. 中文乱码问题

现象 :页面显示乱码 解决 :确保 EncodeFilter 已在 web.xml 中正确配置

2. Excel 导出报错:ClassNotFoundException

错误 1:LogManager 找不到
makefile 复制代码
ClassNotFoundException: org.apache.logging.log4j.LogManager

原因 :缺少 Log4j 日志库 解决 :运行 download-log4j.bat 或手动下载:

  • log4j-api-2.20.0.jar
  • log4j-core-2.20.0.jar
错误 2:CTWorkbook 找不到
makefile 复制代码
ClassNotFoundException: org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook

原因 :缺少 OOXML Schemas 库 解决 :运行 download-poi-schemas.bat 或手动下载:

  • poi-ooxml-lite-5.2.3.jar
错误 3:其他 JAR 包缺失

解决 :运行 download-jars.bat 一次性下载所有依赖

3. MySQL 连接失败

错误Communications link failure 检查

  1. MySQL 服务是否启动
  2. 数据库密码是否正确(DBUtil.java 第 16 行)
  3. 数据库是否已创建(执行 database.sql
  4. MySQL 驱动 JAR 包是否已添加

测试连接 :运行 DBUtil.main() 方法

4. 权限验证不生效

确保 PermissionFilter 已在 web.xml 中正确配置,并且 URL 映射正确。

5. JVM 参数错误

错误Unrecognized option: --add-opens 原因 :JDK 8 不支持此参数 解决 :在 Eclipse Tomcat 配置中删除 --add-opens 参数

6. Tomcat 启动失败

解决步骤

  1. 清理项目:ProjectClean
  2. 清理 Tomcat:右键 Tomcat → Clean...
  3. 刷新项目:右键项目 → Refresh (F5)
  4. 重启 Tomcat

📖 更多问题请查看: Excel导出所需JAR包.txt

扩展功能建议

已实现功能 ✅

  1. ✅ 集成 MySQL 8 数据库持久化存储
  2. ✅ Excel 批量导入导出功能
  3. ✅ 完善的权限控制系统
  4. ✅ 验证码防暴力破解
  5. ✅ 数据分页显示

可扩展功能

  1. 添加课程编辑和删除功能
  2. 实现高级搜索和筛选
  3. 添加用户权限细化管理
  4. 实现操作日志记录
  5. 添加数据统计和报表
  6. 实现密码加密存储(MD5/BCrypt)
  7. 添加邮件通知功能
  8. 前后端分离(Vue.js + RESTful API)
相关推荐
AnalogElectronic3 小时前
vue3 实现贪吃蛇手机版01
开发语言·javascript·ecmascript
asdfsdgss3 小时前
Angular CDK 自适应布局技巧:响应式工具实操手册
前端·javascript·angular.js
乌暮3 小时前
数据库--JDBC编程
java·数据库·学习
小白黑科技测评3 小时前
2025 年视频去水印工具实测:擦擦视频双版本解析一键去字幕与多格式兼容能力
java·人工智能·音视频·智能电视·1024程序员节
爱吃的强哥3 小时前
Electron_Vue3 自定义系统托盘及退出二次确认
前端·javascript·electron
华仔啊3 小时前
Go 语言未来会取代 Java 吗?别争了,先看完这篇再说
java·后端·go
多多*3 小时前
Spring Bean的生命周期 第二次思考
java·开发语言·rpc
Jtti3 小时前
如何通过检查MySQL与系统日志以找出服务器CPU占用源
服务器·mysql·adb
小丁努力不焦虑4 小时前
c++基本语法
java·c++·算法