二维码签到系统

📅 2026/6/27 1:49:51
二维码签到系统
一、项目简介本次开发一套基于 ServletJSPMySQLZXing 二维码工具的课堂签到系统分为教师端、学生端两大模块。 教师功能创建班级、输入班级 ID 生成签到二维码、查看所有签到记录 学生功能扫描二维码跳转签到页面填写学号姓名完成签到 技术栈Eclipse、Tomcat9、MySQL8、ZXing3.5.3、JDBC。二、环境搭建步骤1. 项目结构搭建采用 Maven 式 Web 项目分层com.scut.signin.servletServlet 控制器TeacherServlet、StudentSignServletcom.scut.signin.util工具类数据库工具 DBUtil、二维码生成 QRCodeUtilWeb 页面分层teacher 教师页面、student 学生页面、公共提示页 success.jspWEB-INF/lib存放所有运行依赖 jar 包2. 依赖包部署重点踩坑点需要导入 3 类 jarMySQL 驱动mysql-connector-j-8.3.0.jarZXing 二维码核心包core-3.5.3.jar、javase-3.5.3.jar3. 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插入签到记录表捕获重复签到异常页面提示签到成功 / 失败。四、开发全程踩坑与解决方案博客核心亮点坑 1HTTP 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); }坑 2HTTP 500 内部错误 ClassNotFoundException: QRCodeWriter报错运行时找不到 ZXing 二维码类编译无报错 原因jar 包只加到编译路径未放到 WEB-INF/libTomcat 部署不会打包该依赖 解决将 core、javase 两个 jar 放入 WEB-INF/lib项目右键 Properties → Deployment Assembly添加 jar 包发布规则清理 Tomcat 缓存、项目缓存后重启。坑 3Tomcat 启动失败端口占用解决打开 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 版本、数据库驱动版本要对应避免兼容性崩溃。