二维码签到系统
一、项目简介
本次开发一套基于 Servlet+JSP+MySQL+ZXing 二维码工具的课堂签到系统,分为教师端、学生端两大模块。 教师功能:创建班级、输入班级 ID 生成签到二维码、查看所有签到记录; 学生功能:扫描二维码跳转签到页面,填写学号姓名完成签到; 技术栈:Eclipse、Tomcat9、MySQL8、ZXing3.5.3、JDBC。
二、环境搭建步骤
1. 项目结构搭建
采用 Maven 式 Web 项目分层:
com.scut.signin.servlet:Servlet 控制器(TeacherServlet、StudentSignServlet)com.scut.signin.util:工具类(数据库工具 DBUtil、二维码生成 QRCodeUtil)- Web 页面分层:teacher 教师页面、student 学生页面、公共提示页 success.jsp
WEB-INF/lib:存放所有运行依赖 jar 包
2. 依赖包部署(重点踩坑点)
需要导入 3 类 jar:
- MySQL 驱动:
mysql-connector-j-8.3.0.jar - ZXing 二维码核心包:
core-3.5.3.jar、javase-3.5.3.jar
3. Tomcat9 环境配置
- 修改端口 8081,避免 8080 端口占用导致启动失败;
- 项目 JDK 版本注意:Tomcat9 最高兼容 JDK11,使用 JDK21 会出现启动崩溃;
- 每次修改代码后执行两步清理:Project→Clean + Servers 右键 Clean,清除缓存。
三、核心功能代码实现
1. 数据库工具 DBUtil
封装 JDBC 连接,统一获取数据库连接,简化 Servlet 重复代码。
2. 二维码工具 QRCodeUtil
使用 ZXing 生成签到二维码,拼接学生签到地址 + 班级 ID; 易错点:缺失全部 ZXing 包导入,会直接编译报错,需要补齐QRCodeWriter、BitMatrix等全部导包。
3. 教师端 TeacherServlet
单 Servlet 分发多业务:通过 action 区分创建班级、生成二维码、查询签到列表; 表单 POST 提交,必须重写doPost调用doGet,否则报 405 方法不允许。
4. 学生签到 StudentSignServlet
接收表单学号、班级 ID,插入签到记录表;捕获重复签到异常,页面提示签到成功 / 失败。
四、开发全程踩坑与解决方案(博客核心亮点)
坑 1:HTTP 405 方法不允许
报错:此 URL 不支持 Http 方法 POST 原因:JSP 表单使用 post 提交,Servlet 只写了 doGet,没有 doPost 方法 解决:在每个 Servlet 末尾添加 doPost,复用 doGet 逻辑
java
运行
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }坑 2:HTTP 500 内部错误 ClassNotFoundException: QRCodeWriter
报错:运行时找不到 ZXing 二维码类,编译无报错 原因:jar 包只加到编译路径,未放到 WEB-INF/lib,Tomcat 部署不会打包该依赖 解决:
- 将 core、javase 两个 jar 放入 WEB-INF/lib;
- 项目右键 Properties → Deployment Assembly,添加 jar 包发布规则;
- 清理 Tomcat 缓存、项目缓存后重启。
坑 3:Tomcat 启动失败,端口占用
解决:打开 server.xml,修改 Connector 端口从 8080 改为 8081。
坑 4:方法嵌套语法报错
错误:将 doPost 写在 doGet 方法内部,Java 不支持方法嵌套,出现大量红叉 解决:doGet、doPost 平级书写,所有业务代码只放在 doGet 内部。
五、系统演示效果
- 教师首页:输入班级名称创建班级,输入班级 ID 一键生成签到二维码;
- 二维码页面:展示签到二维码,手机扫码跳转学生签到页;
- 学生签到页:填写学号、姓名提交,提示签到成功;
- 签到列表:展示该班级所有学生签到时间、学号、姓名。
六、开发总结
- Web 项目编译正常、运行报错 90% 都是 jar 包部署问题,优先检查 WEB-INF/lib;
- 表单 POST 提交的 Servlet 必须实现 doPost 转发,规避 405 错误;
- Tomcat 环境三大清理步骤:Clean 项目、Clean 服务器、重启软件,解决绝大多数缓存异常;
- 工具类注意补齐全部导包,缺失类会直接抛出 500 异常;
- 版本匹配很重要:Tomcat 版本、JDK 版本、数据库驱动版本要对应,避免兼容性崩溃。
