引言

校园才艺赛、企业评选、线上人气榜等活动,越来越依赖网络渠道收集观众支持。传统纸质投票或群聊接龙方式,统计慢、难追溯,也容易出现重复投票与人工汇总错误。基于浏览器访问的 B/S 架构投票平台,可以让选手信息、活动公告与得票排名集中展示,用户随时参与,管理员也能在后台统一维护数据。

本文介绍的系统面向普通观众、VIP 会员与后台管理员三类角色,围绕「浏览选手—登录投票—查看排名—后台运维」完整链路展开。系统采用 Spring Boot 与 JSP 一体化部署,适合作为 Java Web 方向毕业设计或课程综合实训的参考实现。

系统概述

本系统包含前台门户与后台管理两个端侧。普通用户通过浏览器访问首页,浏览选手列表、排行榜与通知公告;登录后可在选手详情页提交投票,并在个人中心查看历史记录、修改资料或升级 VIP。管理员登录后台后,可维护选手资料、用户账号、公告内容、留言回复以及投票统计报表。

主要业务链路为:管理员发布选手与公告 → 用户注册登录 → 验证码校验后投票 → 系统写入 record 表并累加选手 fav 字段 → 排行榜与统计页实时反映结果。

技术架构

系统采用 Spring Boot 1.5.7.RELEASE 作为服务端框架,内嵌 Tomcat 8.5.20 提供 Web 容器;持久层使用 MyBatis 3.4.0 配合 mybatis-spring-boot-starter 1.1.1 访问 MySQL 数据库;表现层以 JSP 页面配合 JSTL 标签渲染,静态资源与 KindEditor 富文本组件位于 resources/static 目录。整体分为表现层、业务层与数据层:Controller 接收表单请求并转发视图,Service 处理投票次数限制与分页逻辑,Mapper 完成 SQL 持久化。

层次 技术选型 说明
表现层 JSP + HTML/CSS/JS 前台门户与后台表格表单界面
业务层 Spring Boot + Spring MVC 控制器映射、Session 会话与业务规则
数据层 MySQL + MyBatis 选手、用户、投票记录等表持久化

核心功能

门户浏览与活动介绍

访客进入首页后可查看热门选手卡片、最新公告列表以及投票活动介绍。介绍页详细说明选手展示方式、每日投票规则、实时排名机制与公平性要求,帮助用户在参与前了解活动背景。

前台投票介绍页,说明选手展示、投票机制与排名规则

用户注册、登录与个人中心

用户通过注册页创建账号,登录成功后 Session 保存用户编号。个人中心展示姓名、VIP 状态与侧边菜单,可进入投票记录、资料修改、密码修改等子页面。未登录用户尝试投票或留言时,系统会提示先登录。

用户个人中心,展示 VIP 状态与我的菜单入口

选手投票与次数控制

用户在选手详情页输入图形验证码后提交投票。MyAction 控制器会校验验证码、检查当日是否已对同一选手投票:普通用户每日限 1 次,VIP 用户每日限 2 次。投票成功后写入 record 表,并将 player 表对应记录的 fav 字段加一,同时弹出「投票成功,感谢你的支持」提示。

选手详情页投票成功后,系统弹出感谢提示

VIP 会员与差异化权益

个人中心提供购买 VIP 入口,页面展示会员价格与支付方式选项。用户确认购买后,系统将 user 表 isvip 字段更新为 VIP 状态,从而获得更高的每日投票上限,体现会员差异化运营思路。

购买 VIP 页面,配置会员价格与支付方式选择

公告发布与留言互动

前台公告列表支持标题检索与详情阅读,详情页记录浏览次数。用户登录后可提交留言反馈,管理员在后台查看并填写回复内容,形成活动运营与用户互动的闭环。

通知公告详情页,展示活动说明与浏览次数

后台管理与统计报表

管理员登录后台后可维护选手图片与富文本介绍、发布通知公告、管理用户与管理员账号、查看投票记录。ReportDataAction 提供投票结果统计接口,按选手汇总得票数并以图表形式展示,便于活动主办方掌握排名走势。

后台通知公告编辑,使用富文本维护活动内容

后台管理员列表,支持查询、编辑与权限维护

数据库设计

系统数据库 onlinevoting 包含七张核心业务表:

  • player(选手):pname 名称、pic 头像、fg 特色标签、fav 得票数、see 浏览量、bz 富文本介绍
  • user(用户):uname 登录名、upass 密码、man 姓名、isvip 会员标识(0 普通 1 VIP)
  • record(投票记录):uid 用户编号、cid 选手编号、cname 选手名、addtime 投票时间
  • notice(通知公告):bt 标题、cont 简介、bz 正文、see 浏览量
  • feedback(留言反馈):bt 主题、cont 内容、reply 管理员回复
  • about(投票介绍):fee VIP 价格、bz 活动说明
  • admin(管理员):lname 用户名、pwd 密码、role 角色

投票次数控制依赖 record 表按用户、选手与日期聚合统计;VIP 状态通过 user.isvip 字段区分权益。

界面与交互展示

下图补充展示登录成功反馈与前台整体导航结构。登录成功后系统跳转个人中心,并通过统一 succeed 页面给出操作结果与返回路径,保证交互一致性。

用户登录成功后跳转个人中心的提示反馈

前台顶部导航包含网站首页、选手、通知公告、留言反馈、选手排行与个人中心;后台采用左侧功能菜单加多标签页布局,适合频繁切换维护任务。

部署与运行

运行环境建议 JDK 1.8、MySQL 5.x 与现代浏览器。部署时先在 MySQL 中创建 onlinevoting 库,执行 DB 目录下 onlinevoting.sql 初始化表结构与演示数据;修改 application.properties 中的数据库连接信息后,运行 com.SpringBoot 主类启动服务,默认端口 8089。浏览器访问根路径进入前台门户,通过页脚「管理员登录」进入后台。生产环境请修改默认管理员与业务账号密码,勿使用演示环境弱口令。

总结

该网络投票系统将 Spring Boot、MyBatis 与 JSP 经典三层架构结合,完整覆盖了选手展示、验证码投票、VIP 差异化、公告运营与后台统计等典型业务点,适合理解 B/S 架构下会话管理、分页查询与业务规则校验的实现方式。后续可扩展接入真实支付、短信通知、Redis 防刷票或 Vue 前后端分离改造,进一步提升并发能力与用户体验。

更多推荐