用Jsp,Servlet,Tomcat和MySQL实现的电费账户管理系统
一、项目前言
在电力服务数字化转型的背景下,传统线下电费缴费流程繁琐、账户信息查询不便,为解决这一痛点,我独立开发了这套电费账户管理系统。该系统聚焦普通电力用户的核心需求,实现了从用户注册登录到电费充值、代付、流水查询的全流程功能,兼顾实用性、易用性和专业性,既是对Java Web技术的综合实践,也贴合真实电力服务场景,可直接用于日常电费管理,同时适合作为面试展示项目,体现自身的开发能力和问题解决思维。
二、开发环境与技术栈选型
本项目采用轻量化、易部署的技术选型,兼顾开发效率和系统稳定性,所有技术均为Java Web开发核心常用技术,适合面试中重点讲解,具体选型如下:
| 技术类别 | 具体技术 | 版本说明 | 选型原因 |
|---|---|---|---|
| 开发语言 | Java | JDK 21(兼容JDK8/11) | 主流后端开发语言,语法成熟,生态完善,适合Web项目开发 |
| Web容器 | Apache Tomcat | 8.5.81 | 轻量级Web容器,部署简单、兼容性强,是Java Web开发首选容器 |
| 数据库 | MySQL | 8.0+ | 关系型数据库,易用性高、性能稳定,适合存储用户、账户等结构化数据 |
| 前端技术 | HTML/CSS/JavaScript + JSP | 原生开发,无框架依赖 | 聚焦核心功能,避免过度依赖框架,同时锻炼原生前端开发和动态页面渲染能力 |
| 数据交互 | JDBC | 原生JDBC | 深入理解数据库交互原理,避免使用ORM框架,夯实基础开发能力 |
| 开发工具 | IntelliJ IDEA | 2025.3(社区版) | 高效开发工具,支持Tomcat部署、代码提示、错误排查,提升开发效率 |
| 数据库驱动 | mysql-connector-java | 8.0.30 | 适配MySQL 8.0+版本,保证数据库连接稳定 |
架构模式:采用MVC(Model-View-Controller)分层架构,实现代码解耦,便于维护和扩展,符合Java Web开发规范。
三、系统架构与核心设计
3.1 MVC分层架构设计
本项目严格遵循MVC分层思想,将系统分为视图层、控制层、模型层,各层职责清晰、相互独立,具体分工如下:
View(视图层):负责页面展示和用户交互,由JSP页面组成,包括登录页、注册页、个人中心、充值页等,通过表单提交请求,接收控制层传递的数据并渲染页面。
Controller(控制层):核心控制器,由Servlet实现,负责接收前端请求、分发请求、调用模型层业务逻辑,处理请求结果并跳转页面,实现前后端交互的桥梁。
Model(模型层):负责数据处理和业务逻辑,包括实体类(封装数据)和DAO层(数据访问对象),DAO层通过JDBC实现数据库的增删改查操作,实体类对应数据库表结构,实现数据的封装和传递。
分层优势:降低代码耦合度,便于后续功能扩展和问题排查,比如修改页面样式仅需调整视图层,修改数据库操作仅需调整DAO层,符合工程化开发思维。
3.2 核心数据库设计
数据库设计遵循“简洁、高效、一致性”原则,设计3张核心数据表,覆盖用户、账户、交易流水三大核心数据,通过外键约束保证数据一致性,具体设计如下:
user(用户表):存储用户基础信息,核心字段包括id(主键,自增)、username(登录账号,唯一)、password(登录密码)、real_name(户主姓名)、address(用电地址),用于用户认证和信息展示。
power_account(电力账户表):存储用户电力账户信息,核心字段包括id(主键,自增)、user_id(外键,关联user表id)、account_no(电力户号,唯一)、balance(电费余额),实现用户与电力账户的一对一关联。
power_record(交易流水表):存储所有电费交易记录,核心字段包括id(主键,自增)、account_no(关联电力户号)、opt_type(操作类型:充值/代付/代收)、money(交易金额)、target_no(对方户号,代付/代收时使用)、create_time(操作时间),用于流水查询和数据追溯。
四、核心功能模块实现(重点展示)
系统聚焦用户核心需求,实现4大核心模块,所有功能均独立开发完成,覆盖“注册-登录-操作-查询”全流程,具体实现如下:
4.1 用户认证模块(核心基础)
负责用户注册、登录、退出,保障账户安全,是所有核心功能的前提,核心实现逻辑:
注册功能:前端表单收集用户信息(账号、密码、户主姓名、用电地址),后端Servlet接收请求后,通过DAO层校验账号唯一性(查询user表),校验通过后,同步插入user表和power_account表(自动生成电力户号,初始余额为0),注册成功后跳转至登录页并提示。
登录功能:前端提交账号密码,后端校验账号密码正确性(查询user表),校验通过后,通过Session保存登录用户信息,未登录用户访问核心页面(如个人中心)时,自动跳转至登录页,实现权限控制。
退出功能:点击退出按钮,销毁Session中的登录用户信息,跳转至登录页,防止账户信息泄露。
4.2 账户管理模块
展示用户核心账户信息,实现账户余额实时同步,核心实现:登录后,通过Session获取登录用户ID,调用DAO层查询power_account表,获取电力户号、电费余额、用电地址等信息,渲染至个人中心页面,充值、代付操作后,即时更新余额并重新渲染,保证数据实时性。
4.3 电费操作模块(核心业务)
包含电费充值和代他人缴费两大功能,是系统的核心价值所在,具体实现:
电费充值:用户输入充值金额,前端校验金额合法性(大于0),后端接收请求后,通过DAO层更新power_account表的balance字段(余额增加),同时在power_record表插入一条“充值”类型的流水记录,充值成功后跳转至个人中心并提示。
代他人缴费:用户输入对方电力户号和代付金额,前端校验合法性,后端先查询目标户号是否存在(查询power_account表),再校验当前用户余额是否充足,校验通过后,扣减当前用户余额、增加目标用户余额,同时在两张账户的流水表中分别插入“代付”和“代收”记录,代付成功后跳转至个人中心并提示。
4.4 交易流水查询模块
实现交易记录的可视化查询,方便用户追溯操作历史,核心实现:登录后,通过当前用户的电力户号,查询power_record表的所有相关记录,按操作时间倒序排列,前端通过表格展示流水编号、操作类型、交易金额、对方户号、操作时间等信息,区分正负金额(收入/支出),无流水时显示空状态提示,提升用户体验。
五、开发过程中遇到的核心难点及解决方案(面试重点)
开发过程中,重点解决了3个核心问题,既夯实了技术基础,也锻炼了问题解决能力,具体如下:
5.1 难点1:MySQL驱动加载失败(ClassNotFoundException)
现象:启动系统后,执行注册、登录操作时,控制台报错“com.mysql.cj.jdbc.Driver”找不到,数据库连接失败,无法执行SQL操作。
原因:MySQL驱动包仅放入项目源码目录,未部署到Tomcat运行时环境,Tomcat启动时无法加载驱动类,导致JDBC连接失败。
解决方案:将mysql-connector-java-8.0.30.jar驱动包,同时放入项目的WEB-INF/lib目录和Tomcat的全局lib目录(Tomcat安装目录下的lib文件夹),重启Tomcat后,驱动正常加载,数据库连接成功。
5.2 难点2:Servlet请求映射失效,表单提交无响应
现象:点击登录、注册按钮后,页面无任何反应,控制台无报错,前端请求未传递到后端Servlet。
原因:初期使用@WebServlet注解配置Servlet映射,可能因IDE编译问题、注解路径错误导致映射失效;同时前端表单的action属性与后端映射路径不匹配,导致请求无法被正确接收。
解决方案:放弃注解配置,改用web.xml文件手动配置所有Servlet映射,明确Servlet名称、全类名和请求路径,确保前端表单的action属性与web.xml中的映射路径完全一致,同时重新编译项目、重启Tomcat,解决请求映射问题。
5.3 难点3:界面简陋、用户体验差,不符合专业项目标准
现象:初始版本界面仅为基础表单,无样式、无交互,按钮无反馈、输入框无提示,视觉效果简陋,不适合展示和实际使用。
解决方案:结合电力系统的专业属性,采用深蓝色为主色调,设计卡片式布局,添加输入框聚焦效果、按钮悬停动画、操作结果提示(成功/失败);流水页采用斑马纹表格、类型标签(区分充值/代付),优化页面排版和可读性,让界面更专业、交互更流畅。
六、项目亮点(面试加分项)
架构规范,代码可维护性强:严格遵循MVC分层设计,各层职责清晰,命名规范、注释完整,便于后续功能扩展和问题排查,体现工程化开发思维。
问题处理能力突出:针对驱动加载、Servlet映射等常见Java Web问题,能快速定位原因并给出解决方案,体现自身的排错能力和技术基础。
用户体验优化到位:兼顾功能实现和用户体验,添加交互动画、操作提示、空状态处理,界面专业简洁,符合电力系统的使用场景,提升用户使用体验。
可移植性强:项目无硬编码路径,数据库连接信息可灵活修改,仅需同步JDK、Tomcat、MySQL的版本,即可快速移植到其他电脑运行,适配不同环境。
功能完整,贴合实际需求:覆盖用户从注册到流水查询的全流程需求,模拟真实电力账户管理场景,具有实际应用价值,而非单纯的技术demo。
七、项目总结与个人收获
7.1 技术收获
通过本项目的独立开发,熟练掌握了Java Web开发的核心技术,包括Servlet请求处理、JSP动态页面渲染、JDBC数据库交互、MVC分层架构设计,夯实了Java基础和Web开发基础;同时掌握了前端原生样式美化和交互实现,提升了全栈开发思维。
7.2 能力提升
学会了从需求分析到功能实现、问题排查的全流程开发思路,提升了问题解决能力和代码调试能力;培养了工程化开发思维,注重代码可读性、可维护性和可移植性,学会了站在用户角度优化产品体验。
7.3 后续优化方向(体现思考深度)
本项目虽实现了核心功能,但仍有可优化空间,后续可完善:
安全优化:添加密码加密存储(使用MD5/SHA256加密),避免明文存储,提升账户安全;添加验证码功能,防止恶意登录。
功能优化:添加忘记密码、密码修改功能,完善用户认证体系;添加流水分页查询功能,优化大量交易数据的展示效率。
体验优化:添加加载动画,优化页面跳转速度;支持用电地址修改、户主信息编辑等功能,提升用户灵活性。
八、项目运行说明(便于展示和部署)
环境准备:安装JDK 8+/Tomcat 8.5+/MySQL 8.0+,配置Java环境变量,确保MySQL服务正常启动。
数据库初始化:执行项目根目录下的sql脚本(power_bank.sql),创建数据库和核心数据表,导入初始数据。
配置修改:打开com.util.DBUtil.java文件,修改MySQL连接信息(用户名、密码、数据库名),确保与目标环境一致。
部署运行:将项目部署到Tomcat,启动Tomcat后,浏览器访问http://localhost:8080,即可进入登录页,测试所有功能。
评论区
暂无评论,快来抢沙发吧~