温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何用SSM修改密码

发布时间:2022-09-30 10:23:23 来源:亿速云 阅读:142 作者:iii 栏目:开发技术

这篇“如何用SSM修改密码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何用SSM修改密码”文章吧。

HTML代码

<div id="dlg">
    <form id="fm">
        <div class="ditem">
            <label for="oldpass">旧密码</label>
            <input type="password" id="oldpass" name="oldpass" class="k-textbox" minlength="6"
                   maxlength="20" required="required"/>
        </div>
        <div class="ditem">
            <label for="newpass">新密码</label>
            <input type="password" id="newpass" name="newpass" class="k-textbox" minlength="6" maxlength="20"
                   required="required"/>
        </div>
        <div class="ditem">
            <label for="repassword">密码确认</label>
            <input type="password" id="repassword" name="repassword" class="k-textbox" minlength="6" maxlength="20"
                   required="required"/>
        </div>

    </form>
    <div class="buttons-wrap">
        <button type="button" class="k-button" onclick="javascript: $('#dlg').data('kendoWindow').close();">关闭</button>
        <button type="button" class="k-button k-state-selected" id="save" onclick="save()">保存</button>
    </div></div>

使用ajax.form表单提交方式

/*初始form表单*/
    $(function () {
        frm = $('#fm');
        frm.validate({            errorPlacement: function (error, element) {
                showReq(error.text(), element)
            }
        });
    })

在保存时添加一个事件

//修改密码
    $("#save").click(function () {        if (!frm.valid()) {            return;
        }
        frm.ajaxSubmit({            url: ctx + "/user/updatePassword",  //给后台发送一个请求
            success: function (data) {        //从后来返回一个数据
                if (data.status === 1) {
                    showTip('密码修改成功。', true);
                } else {
                    kendo.ui.ExtAlertDialog.show({message: data.data});
                }
            }
        });

Java后台代码

Controller层

/**
     * 修改密码功能
     *
     * @return
     */
    @RequestMapping(value = "/updatePassword")
    public String updatePassword(HttpServletRequest request) {        //从sesson中获取当前登陆的用户
        User loginedUser = SessionState.getLoginedUser(request);     //获取旧密码
        String oldPwd = ConvertUtil.StringToNull(request.getParameter("oldpass"));     //获取新密码
        String newPwd = ConvertUtil.StringToNull(request.getParameter("newpass"));
        ResultBean resultBean = userService.updatePassword(loginedUser, oldPwd, newPwd);        return resultBean.toString();
    }

Service层

/**
     * 修改密码功能
     * @param loginUser
     * @param newPass
     * @param oldPass
     */  //返回一个Bean
    ResultBean updatePassword(User loginUser , String oldPass, String newPass);

Service实现层

/**
     * 修改密码功能
     *
     * @param loginUser
     * @param newPass
     * @param oldPass
     */
    public ResultBean updatePassword(User loginUser, String oldPass, String newPass) {
        User _user = userDao.findById(loginUser.getUserId());        if (_user == null) {            return new ResultBean(-3, "账号不存在。");
        }        if (!SecurityUtil.authenticatePassword(_user.getUserId(), _user.getPwd(), oldPass)) {            return new ResultBean(-4, "密码错误,请重新输入。");
        }        int affectRows = changePwd(_user.getUserId(), newPass, loginUser);        if (affectRows == 1){            return new ResultBean(1, "修改成功");
        }        return new ResultBean(-5, "");
    }

UserDao

/**
     * 修改密码
     * @param user
     * @return
     */
    int changePwd(User user);

UserMapper.xml

<!-- 修 改-->
    <update id="changePwd" parameterType="wms.entity.sys.User">
        UPDATE USERS
        SET
            PWD = #{pwd, jdbcType=VARCHAR},
            UPDATE_BY = #{updateBy, jdbcType=VARCHAR},
            UPDATE_DATE = #{updateDate}
        WHERE U_ID = #{userId, jdbcType=INTEGER}    </update>

上边封装的工具类

package util;import org.springframework.util.StringUtils;import java.math.BigDecimal;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.regex.Pattern;public class ConvertUtil {    /**
     * 检查字符串是否为null、""或"  "
     * @param str
     *             字符串
     * @return null、""或"  "返回true,否则返回false
     */
    public static boolean isNullOrEmpty(String str){        return !StringUtils.hasText(str);
    }    /**
     * 将Object转换为String,若为空,则转换为null
     * @param obj
     *             Object
     * @return null或字符串
     */
    public static String toString(Object obj){        if (StringUtils.isEmpty(obj))            return null;        else
            return obj.toString();
    }    /**
     * 将字符串"on"转换为"Y",否则为“N”
     * @param str
     * @return "on" -> "Y",否则为"N"
     */
    public static String toActiveString(String str){        if (isNullOrEmpty(str))            return "N";        else if(str.equals("on"))            return "Y";        else
            return "N";
    }    /**
     * 将以","作为分隔符的字符串转为List<String>
     * @param str
     * @return List<String>
     */
    public static List<String> toList(String str) {        if (isNullOrEmpty(str))            return null;        else {
            String[] arr = str.split(",");            return java.util.Arrays.asList(arr);
        }
    }    /**
     * 将空字符串转换为null,将带有空格的字符串trim
     * @param str
     *             待处理字符串
     * @return null或字符串
     */
    public static String StringToNull(String str){        if (isNullOrEmpty(str))            return null;        else
            return str.trim();
    }    /**
     * 字符串转换为日期类型(Date,不是DateTime)
     * @param str 格式:yyyy-MM-dd
     * @return
     * @throws ParseException
     */
    public static Date toDate(String str) throws ParseException {        if (isNullOrEmpty(str))            return null;        else {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");            return sdf.parse(str);
        }
    }    /**
     * 字符串转换为日期类型(DateTime,不是Date)
     * @param str 格式:yyyy-MM-dd HH:mm
     * @return
     * @throws ParseException
     */
    public static Date toDateTime(String str) throws ParseException {        if (isNullOrEmpty(str))            return null;        else {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");            return sdf.parse(str);
        }
    }    public static Date toDate(String str, String formater) throws ParseException {        if (isNullOrEmpty(str))            return null;        else {
            SimpleDateFormat sdf = new SimpleDateFormat(formater);            return sdf.parse(str);
        }
    }    /**
     * 将日期转换为指定格式的字符串
     * @param date
     * @param formater
     * @return
     */
    public static String toDateString(Date date, String formater){        return new SimpleDateFormat(formater).format(date);
    }    public static Double toDouble(String str){        if (isNullOrEmpty(str)) return null;        else return Double.parseDouble(str);
    }    public static BigDecimal toDecimal(String str){        if (isNullOrEmpty(str)) return null;        else return new BigDecimal(str);
    }    public static Integer toInteger(String str){        if (isNullOrEmpty(str)) return null;        else return Integer.parseInt(str);
    }    /**
     * 判断是否为整数
     * @param str 传入的字符串
     * @return 是整数返回true,否则返回false
     */
    public static boolean isInteger(String str){
        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");        return pattern.matcher(str).matches();
    }    /**
     * 将字节数组转换为十六进制字符串
     *
     * @param b
     *            字节数组
     * @return 十六进制字符串
     */
    public static String bytesToHexString(byte[] b){
        StringBuilder stringBuilder = new StringBuilder("");        for (int i = 0; i < b.length; i++) {            int v = b[i] & 0xFF;
            String hv = Integer.toHexString(v);            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }        return stringBuilder.toString();
    }    /**
     * 将十六进制字符串转换字节数组
     *
     * @param hexString
     *            十六进制字符串
     * @return 字节数组
     */
    public static byte[] hexStringToBytes(String hexString) {
        hexString = hexString.toUpperCase();        int length = hexString.length() / 2;        char[] hexChars = hexString.toCharArray();        byte[] d = new byte[length];        for (int i = 0; i < length; i++) {            int pos = i * 2;
            d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
        }        return d;
    }    /**
     * 将char转换为byte
     * @param c char
     * @return byte
     */
    private static byte charToByte(char c) {        return (byte)"0123456789ABCDEF".indexOf(c);
    }
}

ResultBean.java

package wms.entity;import com.alibaba.fastjson.JSONObject;import java.util.Objects;/**
 * Created by liwm on 2015/11/30 10:36.
 * DESC:
 */public class ResultBean {
    public ResultBean(int status, Object data){        this.status = status;        this.data = data;
    }    /**
     * 状态标记
     */
    private int status;    /**
     * 返回的详细结果
     */
    private Object data;    public int getStatus() {        return status;
    }    public void setStatus(int status) {        this.status = status;
    }    public Object getData() {        return data;
    }    public void setData(Object data) {        this.data = data;
    }
    @Override    public String toString(){        return String.format("{\"status\":%s,\"data\":\"%s\"}", status, data);
    }
}

以上就是关于“如何用SSM修改密码”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ssm
AI