sms-ssm密码修改功能开发:从前端到后端完整流程
【免费下载链接】sms-ssm:school::mortar_board: 一个基于 SSM 的简单学生管理系统,项目概述全面,代码注释详细,逻辑结构清晰,对于初学 SSM 的同学非常具有参考与学习价值哟 !项目地址: https://gitcode.com/gh_mirrors/sms/sms-ssm
在基于SSM框架的学生管理系统(sms-ssm)开发中,密码修改功能是保障用户账户安全的核心模块。本文将详细介绍如何从前端界面设计到后端业务逻辑实现,完整构建这一功能,适合SSM初学者参考学习。
功能需求分析与整体架构
密码修改功能需要满足三大核心需求:验证原密码正确性、确保新密码符合安全规则、支持多角色(管理员/学生/教师)使用。系统采用经典的MVC架构,通过以下路径实现:
- 前端交互:sms/src/main/webapp/WEB-INF/view/common/settings.jsp
- 后端控制:sms/src/main/java/pers/huangyuhui/sms/controller/CommonController.java
- 数据访问:sms/src/main/java/pers/huangyuhui/sms/dao/AdminMapper.java(以管理员为例)
图1:系统数据库ER图,展示了用户表与密码字段的关系
前端实现:用户界面与交互逻辑
1. 密码修改窗口设计
在settings.jsp中,通过EasyUI的dialog组件创建模态窗口,包含原密码、新密码和确认密码三个输入框:
<div id="passwordDialog" style="padding: 20px"> <form id="editPassword" action="#"> <table cellpadding="8"> <tr> <td>原密码</td> <td><input id="old_password" class="easyui-textbox" type="password" name="oldPassword">password: { validator: function(value) { return /^[a-zA-Z0-9]{6,16}$/.test(value); }, message: '密码6-16位,且只能为英文、数字' }两次密码一致性校验:
equals: { validator: function(value, param) { return $(param[0]).val() === value; }, message: '两次密码不同' }3. AJAX提交逻辑
点击提交按钮后,通过AJAX异步提交数据:
$.ajax({ type: "post", url: "editPassword?t=" + new Date().getTime(), data: $("#editPassword").serialize(), success: function(data) { if (data.success) { $.messager.alert("消息提醒", "修改成功! 你的账户将会在3秒后注销~", "info"); setTimeout(function() { top.location.href = "../system/loginOut"; }, 3000); } else { $.messager.alert("消息提醒", data.msg, "error"); } } });后端实现:业务逻辑与数据处理
1. Controller层:请求处理
在CommonController中处理密码修改请求:
@PostMapping("/editPassword") @ResponseBody public Map<String, Object> editPassword(String oldPassword, String newPassword, HttpServletRequest request) { int userType = Integer.parseInt(request.getSession().getAttribute("userType").toString()); // 管理员密码修改逻辑 if (userType == 1) { Admin admin = (Admin) request.getSession().getAttribute("userInfo"); if (!admin.getPassword().equals(oldPassword)) { result.put("success", false); result.put("msg", "原密码错误!"); return result; } try { admin.setPassword(newPassword); if (adminService.updatePassowrd(admin) > 0) { result.put("success", true); } } catch (Exception e) { result.put("success", false); result.put("msg", "修改失败! 服务器端发生异常!"); } } // 学生和教师类似逻辑... return result; }2. Service层:业务逻辑
AdminServiceImpl实现密码更新:
@Override public int updatePassowrd(Admin admin) { return adminMapper.updatePassword(admin); }3. DAO层:数据访问
AdminMapper接口定义:
int updatePassword(Admin admin);对应的MyBatis映射文件实现数据库更新操作:
<update id="updatePassword" parameterType="Admin"> UPDATE admin SET password = #{password} WHERE id = #{id} </update>功能测试与安全优化
1. 测试场景覆盖
- 原密码错误:验证错误提示功能
- 密码格式不符:测试前端验证规则
- 两次密码不一致:检查equals验证效果
- 不同角色测试:分别以管理员、学生、教师身份测试
2. 安全增强建议
- 密码加密存储:目前系统采用明文存储,建议使用BCrypt算法加密
- 增加验证码:防止暴力破解
- 操作日志记录:记录密码修改行为,便于审计
图2:项目依赖关系,密码修改功能涉及的核心组件
总结与扩展
通过本文的步骤,我们完成了从前端到后端的完整密码修改功能开发。核心要点包括:
- 前端使用EasyUI构建交互界面,结合自定义验证确保输入合法性
- 后端通过Controller接收请求,Service处理业务逻辑,Mapper操作数据库
- 支持多角色统一处理,通过session获取用户类型
该实现方式符合SSM框架的最佳实践,代码结构清晰,注释详细,适合初学者学习参考。后续可进一步扩展密码强度检测、历史密码限制等高级功能。
【免费下载链接】sms-ssm:school::mortar_board: 一个基于 SSM 的简单学生管理系统,项目概述全面,代码注释详细,逻辑结构清晰,对于初学 SSM 的同学非常具有参考与学习价值哟 !项目地址: https://gitcode.com/gh_mirrors/sms/sms-ssm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考