基于Servlet+JSP的小区物业管理系统设计与实现(Bootstrap+MySQL)
一次完整的 Java Web 毕业设计级项目实战:管理员端与业主端分离的小区物业管理系统,覆盖房产、业主、报修、巡查、公告五大核心业务。
一、前言
物业管理是社区日常运转绕不开的信息化场景:房产台账要清晰、业主资料要准确、报修工单要能跟踪、日常巡查要有留痕、通知公告要及时触达。这个项目用最朴素的 Java Web 技术栈(Servlet + JSP + MySQL),把上述五条业务线完整地跑通,规模不大,但五脏俱全,特别适合用来理解"请求---控制器---DAO---数据库---视图"这条经典链路是怎么串起来的。
项目分两个角色:管理员 在后台维护房产、业主、报修、巡查、公告和管理员账号;业主通过前台登录,可以维护个人资料、提交报修、查看公告。两端通过同一个数据库协作,报修单在"等待处理 → 正在处理 → 已完成"之间流转,形成一个小而完整的业务闭环。
二、技术栈与系统架构
| 层次 | 技术选型 |
|---|---|
| 后端框架 | Servlet 2.5 + JSP(原生 Java Web,无重量级框架) |
| 数据访问 | JDBC + DBCP 1.4 连接池,按 DAO 模式分层 |
| 视图层 | JSP + JSTL 标签 + Bootstrap 3 布局 |
| 数据库 | MySQL 5.7(6 张业务表) |
| 密码存储 | MD5 摘要 + Base64 编码 |
架构上是标准的 MVC 分层:浏览器请求统一提交到 web.xml 注册的各业务 Servlet(/user、/house、/main、/inspection、/notice、/custom、/admin),Servlet 调用 Service 层校验逻辑,再由 DAO 层通过 DBCP 数据源访问 MySQL,最后 sendRedirect 或 forward 回 JSP 视图渲染。数据库连接参数集中在 database.properties 里,换库只改一个文件。

登录页支持双入口:管理员走后台通道进入管理首页,业主走业主通道进入个人中心,由同一个 Servlet 根据 usertype 参数分发到不同的会话与首页视图。

三、功能设计
管理员端功能清单:
| 模块 | 能力 |
|---|---|
| 房产信息管理 | 房产的登记、编辑、删除与列表检索(门牌号、楼号、单元、楼层、朝向、出售状况) |
| 业主信息管理 | 业主账户维护,与房产编号、门牌号绑定 |
| 报修管理 | 报修工单登记与状态流转:等待处理 / 正在处理 / 已完成,记录预约与完成时间、预估与实际费用 |
| 巡查记录管理 | 巡查事项登记:巡查人、陪同人、地点、问题描述与处理结果 |
| 公告管理 | 小区公告的发布、修改、删除,业主端同步可见 |
| 管理员信息管理 | 后台账号维护 |
业主端(前台)功能: 业主登录后进入个人中心,可修改个人资料与密码、在线提交报修申请并跟踪自己的报修进度、浏览物业发布的公告;同时可以查看与自己绑定房产的信息。


报修管理是业务上最值得看的模块:每条工单除了描述与地址,还带有"预约时间 / 完成时间 / 预估费用 / 实际费用"四个字段,把物业维修中"先报价、后结算"的现实流程直接建模进了数据表。


四、数据库设计
数据库共 6 张表,围绕"人 --- 房 --- 事"三条主线展开:
| 表名 | 说明 | 关键字段 |
|---|---|---|
| admin | 管理员 | name、password(MD5+Base64)、电话、地址 |
| custom_account | 业主账户 | username、ownerid(房产编号)、cardid、phone |
| house | 房产 | num(门牌号)、dep(楼号)、地区、出售状况、单元/楼层/朝向 |
| maintain | 报修工单 | 标题、状态、地址、预约/完成时间、预估/实际费用、报修业主 |
| inspection | 巡查记录 | 巡查人、事项、地点、陪同人、问题与处理描述 |
| notice | 小区公告 | 标题、内容、发布时间、发布人 |
业主与房产通过 ownerid 关联:业主账户表存房产编号,房产表记录门牌与楼栋信息;报修单里同时冗余了业主用户名和报修地址,方便物业按楼栋筛选工单。这样的设计虽然在范式上有冗余,但换来了物业场景里最常用的"按楼栋查工单"的查询效率。


五、系统演示
按 README 部署后(Tomcat 8.5 + MySQL 5.7,导入建库脚本即可),演示路径建议这样走:
- 管理员登录后台,先在房产信息里补齐楼栋台账;
- 到业主信息里登记业主,绑定房产编号;
- 切到业主通道登录,提交一条报修申请;
- 回到管理员端的报修管理,把工单从"等待处理"推进到"正在处理",填上预约时间与预估费用,维修完成后再更新为"已完成"并录入实际费用;
- 最后发布公告,业主端即可看到。
整个过程覆盖了系统全部六张表的读写,也把报修闭环完整跑了一遍,答辩演示照这条线走就能讲清楚。
六、小结
这个项目没有引入 SSM/Spring Boot,恰恰是它的价值所在:所有请求怎么路由、会话怎么管、参数怎么校验、SQL 怎么写,都摊开在明面上,读源码不会有"框架帮你做了什么"的困惑。报修工单的状态机、业主-房产的数据关联、双角色登录分发,这三个点都可以作为课程设计或毕业设计答辩时的展开方向。
完整资源已整理上传(含源码、数据库脚本与图文部署说明):
如果在实现类似系统时遇到问题,欢迎评论区交流。