首页 > 其他分享 >快速入门修改密码

快速入门修改密码

时间:2022-11-02 11:25:43浏览次数:79  
标签:updatePwd old 入门 修改 update 密码 pass new

技术:bootstarp+jquery+ajax+thymeleaf(了解程度)

功能描述:单击修改密码 => 弹出模态框 =>模态框内容有原密码新密码确认密码是三行 + 确认与取消按钮

效果展示

image-20221029161255974

文字有点多,建议Ctrl+F 搜索关键词 : 修改密码 modal-body

代码思路:

先进行修改密码的页面设计

导航栏设计(页面部分核心代码展示):

modal-body 配合模态框,下一步讲模态框的大概使用方法

<div th:fragment="header" class="header-box">
    <div class="logo-box">
        <span>Gan教育在线考试系统</span>
    </div>
    <div class="welcome-box">
        <span>欢迎 </span>
        <!-- Single button -->
        <div class="btn-group">
            <button type="button" class="btn btn-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                [[${session.loginTeacher.tname}]] <span class="caret"></span>
            </button>
            <ul class="dropdown-menu">
                <li>
                    <a href="javascript:void(0);">
                        <span class="glyphicon glyphicon-user"></span> 个人信息
                    </a>
                </li>
                <li>
                    <a href="javascript:void(0);" onclick="main.update()">
                        <span class="glyphicon glyphicon-lock"></span> 修改密码
                    </a>
                </li>
                <li>
                    <a href="javascript:void(0);" onclick="main.exit();">
                        <span class="glyphicon glyphicon-log-out"></span> 退出系统
                    </a>
                </li>
            </ul>
        </div>
    </div>

    <!-- Modal-->
    <div class="modal fade" id="myModal" tabindex="-1">
        <div class="modal-dialog" >
            <div class="modal-content">

                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" ><span >&times;</span></button>
                    <h4 class="modal-title" id="modal-title">修改密码</h4>
                </div>

                <div class="modal-body" id="modal-body">
						<!--注意 这边是空的,配合模态框-->
                </div>

                <div class="modal-footer" id="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                    <button type="button" class="btn btn-primary" onclick="main.updatePwd()">提交</button>
                </div>

            </div>
        </div>
    </div>

</div>

首先,模态框要配合js点击事件的使用,单击 修改密码 按钮,弹出模态框,这里给出js代码

代码逻辑:1.单击 修改密码按钮 onclick=main.update() ,触发js函数,发送/common/update请求(这里mvc配置了相关路径),后端返回一个视图,前端再展示这个视图view。

2.在弹出的模态框里单击确认按钮 onclick=main.updatePwd(),触发js函数,方/common/updatePwd请求(这里mvc配置了相关路径),返回Json数据(ture或false),前端负责判断 new-pass和 re-pass 是否相同,后端判断old-pass数据库中是否存在。

var main={}

main.exit = function(){
    if(!confirm('是否确认退出'))
        return ;
    location.href='common/exit' ;
}

main.update = function (){
    $.post('common/update',{},function (view) {
        //不传参,返回网页内容view,这个view就是下面的updatePwdTemplate.html
        $('#modal-body').html(view);
        //展示模态框
        $('#myModal').modal('show');

    });
}

main.updatePwd = function(){
    var new_pass = $('#new-pass').val();
    var re_pass = $('#re-pass').val();
    var old_pass = $('#old-pass').val();

    if(new_pass != re_pass){
        alert('两次密码不一致') ;
        return ;
    }

    var param = {
        old_pass:old_pass,
        new_pass:new_pass
    }
    $.post('common/updatePwd',param,function(f) {
        if (f == true) {
            alert('密码修改成功') ;
            $('#myModal').modal('hide') ;
            return ;
        }

        alert('原密码不正确') ;
    });

}

bootstap模态框动态实例

新建文件 updatePwdTemplate.html,配合 $('#modal-body').html(view) 使用

将实例稍微改动一下,变成这样:

<html lang="en" xmlns:th="http://www.thymeleaf.org">
<form>
    <div class="form-group">
        <h2 align="center" th:text="#{login_label}"></h2></div>
    <div id="msg"></div>

    <div class="form-group">
        <label for="old-pass" > 原密码</label>
        <div class="input-group">
                    <span class="input-group-addon">
                        <span class="glyphicon glyphicon-lock"></span>
                    </span>

            <input type="password" class="form-control" id="old-pass">
        </div>
    </div>

    <div class="form-group">
        <label for="new-pass">新密码</label>
        <div class="input-group">
                    <span class="input-group-addon">
                        <span class="glyphicon glyphicon-lock"></span>
                    </span>

            <input type="password" class="form-control" id="new-pass">
        </div>
    </div>

    <div class="form-group">
        <label for="re-pass"> 确认密码</label>
        <div class="input-group">
                    <span class="input-group-addon">
                        <span class="glyphicon glyphicon-lock"></span>
                    </span>

            <input type="password" class="form-control" id="re-pass">
        </div>
    </div>


</form>
</html>

至此,修改密码界面设计(前端部分)大致完成,下面分别从controller,service,dao层说下后端的实现


controller层:展示部分代码,登录等功能模块代码此处不展示

@Controller
public class CommonController {

    @Autowired
    private TeacherService teacherService;

    Logger log = LoggerFactory.getLogger(CommonController.class);
    
    @RequestMapping("/common/update")
    public String update(){
        return "common/updatePwdTemplate";
    }

    @RequestMapping("/common/updatePwd")
    @ResponseBody
    public boolean updatePwd(String old_pass , String new_pass,HttpSession session){
        log.debug("old_pass ["+old_pass+"]");
        log.debug("new_pass [{}]",new_pass);

        Teacher teacher = (Teacher) session.getAttribute("loginTeacher");
        log.debug("[{}]",teacher);
        old_pass = DigestUtil.md5Hex(old_pass) ;
        if(!teacher.getPass().equals(old_pass)){
            log.debug("update fail");
            return false ;
        }

        new_pass = DigestUtil.md5Hex(new_pass);
        Long tid = teacher.getId();
        teacherService.updatePwd(tid,new_pass);

        log.debug("update success");
        return true ;
    }

}

service层:在实现类里注解@Service

public interface TeacherService {
    void updatePwd( Long id, String pass);
}
@Service
public class TeacherServiceImpl implements TeacherService {
    private Logger logger = LoggerFactory.getLogger(TeacherServiceImpl.class);


    @Autowired
    private TeacherMapper teacherMapper;
    
    @Override
    public void updatePwd(Long id, String pass) {
        teacherMapper.updatePwd(id,pass);
    }
}

dao层:

public interface TeacherMapper {
    void updatePwd(@Param("id") Long id,@Param("pass") String pass);
}

用接口方式进行传参的时候,它不支持两个的,必须用@Param注解指定它的名字,否则在mybatis框架底层它会把这两个参数编程数组

mapper配置,namespace是TeacherMapper的全类名

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gan.examonline.dao.TeacherMapper">
  <update id="updatePwd" parameterType="com.gan.examonline.domain.Teacher">
    update t_teacher
    set pass = #{pass}
    where id = #{id}
  </update>
</mapper>    

标签:updatePwd,old,入门,修改,update,密码,pass,new
From: https://www.cnblogs.com/ganbaojun/p/16850374.html

相关文章

  • 修改校准debain的时间时钟
    一次重启后发现时间竟然从上午变成了晚上!要问,我是怎么发现在的我就是发现上午的时候我的屏幕夜灯突然出现了使用命令sudorm-f/etc/localtime删除本地时间文件sudocp......
  • 查看WIFI密码
    一、CMD命令查看WiFi密码使用方法:①、运行CMD(命令提示符)(确保无线网卡启用状态)②、输入命令查看WiFi配置文件: #列出所有连接过的WiFi的配置文件  netshwl......
  • Unity坐标系入门
    一、坐标系的概念Unity世界坐标系采用左手坐标系,大拇指指向X轴(红色),食指指向Y轴(黄色),中指向手心方向歪曲90度表示Z轴(蓝色),同时Z轴也是物体前进方向,下图表示Unity的四......
  • Flutter官方推荐的状态管理库-Provider简单入门
    最近几年崛起的新一代的GUI开发方式,几乎都是组件式开发。代表就是VueReactFlutter等。组件开发一时爽,状态传递就很蛋疼了。比如A和B组件没有上下级关系,也不是层级相近......
  • Azure DevOps Server 入门实践与安装部署
    一,引言最近一段时间,公司希望在自己的服务器上安装本地版的AzureDevOpsService(AzureDevOpsServer),用于项目内的测试,学习。本着学习的目的,我也就开始学习在测试服务......
  • C# Linq学习笔记(一)-基础语法入门
    一、简介:Linq(语言集成查询):为C#和VisualBasic提供语言级查询功能和高阶函数API,让你能够编写具有很高表达力度的声明性代码。二、优点:1、LINQ具有语言级查询语法,切......
  • 修改XMAPP中Apache的默认访问的主页
    默认主页修改:0.本人XAMPP版本为3.21.修改httpd-conf:即下图DocumentRoot后的路径以及下一行的路径,即为默认路径,因此将这两个路径修改为自己项目的路径即可2.本人修改后3.......
  • Oracle 数据库忘记sys与system管理员密码重置操作方法
    首先打开cmd执行123orapwdfile=C:\app\PWDorcl.orapassword=orclorclC:\app\PWDorcl.ora是你要存放的路径文件Password=orclorcl是你要改的密码......
  • Mac新手必看Mac入门基本知识图文教程
    你已经是Mac的用户了吗?还是准备入手的新手呢?赶快看看“Mac入门基本知识”吧!macbook系统基础内容简介Mac入门基本知识1、主界面结构图基本知识介绍(如图所示)2、Ma......
  • Docker如何与外界互通(chrono《kubernetes入门实战课》笔记整理)
    Docker与外界互通的三种方式1、拷贝文件dockercp命令,可以直接在主机和容器之间互相拷贝(容器间不可以),格式和cp是一样的,就是注意要标明容器ID,例如:docker cp a.txt 062:......