SSH 基于ajax实现修改密码功能步骤梳理

1. 为密码输入框进行输入校验,使用easyUI提供的easyui-validatebox

                  

 <table cellpadding=3>
 <tr>
    <td>新密码:</td>
    <td><input id="txtNewPass" type="Password" class="txt01 easyui-validatebox" 
               required="true" data-options="validType:'length[4,8]'" />
</
td> </tr> <tr> <td>确认密码:</td> <td><input id="txtRePass" type="Password" class="txt01 easyui-validatebox" required="true" data-options="validType:'length[4,8]'"/>
</
td> </tr> </table> </div> <div region="south" border="false" style="text-align: right; height: 30px; line-height: 30px;"> <a id="btnEp" class="easyui-linkbutton" icon="icon-ok" href="javascript:void(0)" >确定</a> <a id="btnCancel" class="easyui-linkbutton" icon="icon-cancel" href="javascript:void(0)">取消</a> </div> </div>

2. 为“确定”按钮绑定事件

<script type="text/javascript">
      //为“确定”按钮绑定事件
        $("#btnEp").click(function(){
            //进行表单校验
            var v = $("#editPasswordForm").form("validate");//对应表单中的所有输入框进行校验
            if(v){//表单校验通过
                //判断两次输入是否一致
                var v1 = $("#txtNewPass").val();
                var v2 = $("#txtRePass").val();
                if(v1 == v2){
                    //输入一致,发送ajax请求,修改当前用户的密码
                    var url = "${pageContext.request.contextPath}/userAction_editPassword.action";
                    $.post(url,{"password":v1},function(data){
                        if(data == '1'){
                            //修改密码成功
                            $.messager.alert("提示信息","密码修改成功!","info");
                        }else{
                            //修改失败
                            $.messager.alert("提示信息","密码修改失败!","warning");
                        }
                        //关闭修改密码的窗口 
                        $("#editPwdWindow").window("close");
                    });
                }else{
                    //输入不一致,提示用户输入不一致
                    $.messager.alert("提示信息","两次输入密码不一致!","warning");
                }
            }
        });
    </script>

3. 在UserAction中提供editPassword方法,修改密码

/**
     * 修改当前登录用户密码
     * @throws IOException 
     */
    public String editPassword() throws IOException{
        User user = (User) ServletActionContext.getRequest().getSession().getAttribute("loginUser");
        String password = model.getPassword();//新密码
        password = MD5Utils.md5(password);
        String flag = "1";
        try{
            userService.editPassword(password,user.getId());
        }catch (Exception e) {
            //修改密码失败
            flag = "0";
        }
        ServletActionContext.getResponse().setContentType("text/html;charset=UTF-8");
        ServletActionContext.getResponse().getWriter().print(flag);
        return NONE;
    }

4. 在BaseDao中扩展一个通用的更新方法

/**
     * 通用更新方法
     */
    public void executeUpdate(String queryName, Object... objects) {
        Session session = this.getSession();// 从本地线程中获得session对象
        // 使用命名查询语句获得一个查询对象
        Query query = session.getNamedQuery(queryName);
        // 为HQL语句中的?赋值
        int i = 0;
        for (Object arg : objects) {
            query.setParameter(i++, arg);
        }
        query.executeUpdate();// 执行更新
    }

5. 在User.hbm.xml中定义一个HQL语句,用于修改密码

 <query name="editPassword">
      UPDATE User SET password=? WHERE id=?
 </query>
原文地址:https://www.cnblogs.com/zjfjava/p/6961120.html