三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

sms-ssm密码修改功能开发:从前端到后端完整流程

sms-ssm密码修改功能开发:从前端到后端完整流程

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:项目依赖关系,密码修改功能涉及的核心组件

    总结与扩展

    通过本文的步骤,我们完成了从前端到后端的完整密码修改功能开发。核心要点包括:

    1. 前端使用EasyUI构建交互界面,结合自定义验证确保输入合法性
    2. 后端通过Controller接收请求,Service处理业务逻辑,Mapper操作数据库
    3. 支持多角色统一处理,通过session获取用户类型

    该实现方式符合SSM框架的最佳实践,代码结构清晰,注释详细,适合初学者学习参考。后续可进一步扩展密码强度检测、历史密码限制等高级功能。

    【免费下载链接】sms-ssm:school::mortar_board: 一个基于 SSM 的简单学生管理系统,项目概述全面,代码注释详细,逻辑结构清晰,对于初学 SSM 的同学非常具有参考与学习价值哟 !项目地址: https://gitcode.com/gh_mirrors/sms/sms-ssm

    创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

    ← 返回列表