note_cloud--修改密码功能

逻辑处理:

1.输入原密码与数据库中查询处理的密码进行匹配

2.匹配成功,更新数据库密码字段值

回调处理:

密码修改成功(服务器处理完成)以后,重定位到登录页面

-----------------------------------------------------------------------------------------------------------------------

Dao接口:

//根据userId查找User,用于验证密码是否正确,以便于修改密码
public User findByUserId(String userId);
public int modifyPassword(Map params);//修改密码

注意:第一个方法根据userId查找对应的用户,第二个方法用于修改密码

-----------------------------------------------------------------------------------------------------------------------

Mapper文件:

  <!-- 根据userId查找User,用于验证密码是否正确,以便于修改密码 -->
  <select id="findByUserId" parameterType="string" resultType="cn.tedu.cloud_note.entity.User">
    select * from cn_user where cn_user_id = #{userId}
  </select>
  
  <!-- 修改密码 -->
  <update id="modifyPassword" parameterType="map">
    update cn_user set cn_user_password = #{newPwd} 
    where cn_user_id = #{userId}
  </update>

注意:修改密码的时候需要两个参数,一个是userId,一个是新输入的密码

-----------------------------------------------------------------------------------------------------------------------

业务层接口:

//根据userId修改密码
public NoteResult<Object> modifyPassword(String userId,String lastPwd,String newPwd);

注意:传入三个参数,userId,原始密码,新密码,userId用于找到是哪一条记录

-----------------------------------------------------------------------------------------------------------------------

业务层实现类:

//修改密码
public NoteResult<Object> modifyPassword(String userId,String lastPwd,String newPwd) {
	//先对两个密码进行md5加密处理
	String md5LastPwd = NoteUtil.md5(lastPwd);
	String md5NewPwd = NoteUtil.md5(newPwd);
	
	NoteResult<Object> result = new NoteResult<Object>();
	//密码校验(输入密码与原密码是否符合)
	User user = userDao.findByUserId(userId);
	if(user == null){//密码不存在
		result.setStatus(2);
		result.setMsg("密码不存在");
		return result;
	}
	String pwd = user.getCn_user_password();//查询的密码
	if(!md5LastPwd.equals(pwd)){//查询出的密码和用户输入的密码不匹配
		result.setStatus(3);
		result.setMsg("密码错误");
		return result;
	}
		
	//验证密码正确后,修改新输入的密码
	//服务器传入两个参数,newPwd为新的密码,要进行MD5加密处理,然后将两个参数放入Map
		
	Map<String,Object> params = new HashMap<String,Object>();
	params.put("userId", userId);
	params.put("newPwd", md5NewPwd);
	userDao.modifyPassword(params);
	int rows = userDao.modifyPassword(params);
	if(rows == 1){
		result.setStatus(0);
		result.setMsg("修改密码成功");
		return result;
	}
		result.setStatus(1);
		result.setMsg("修改密码失败");
		return result;
	}
	result.setStatus(0);
		result.setMsg("修改密码成功");
		return result;
	}
		result.setStatus(1);
		result.setMsg("修改密码失败");
		return result;
	}
}

注意:传入三个参数,先将原始密码和新密码进行MD5加密处理,通过userId找到该User,验证原始密码是否正确,若正确则修改密码

-----------------------------------------------------------------------------------------------------------------------

Controller层:

package cn.tedu.cloud_note.controller;

import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import cn.tedu.cloud_note.service.UserService;
import cn.tedu.cloud_note.util.NoteResult;
//修改密码
@Controller
@RequestMapping("/user")
public class ModifyPwdController {
	@Resource(name="userService")
	private UserService service;
	
	@RequestMapping("/modify.do")
	@ResponseBody
	public NoteResult<Object> execute(String userId,String lastPwd,String newPwd){
		NoteResult<Object> result = service.modifyPassword(userId,lastPwd,newPwd);
		return result;
	}
}

-----------------------------------------------------------------------------------------------------------------------

点击修改密码后弹出以下修改页面:

进入修改密码的主页面

 

-----------------------------------------------------------------------------------------------------------------------

 

<!DOCTYPE html>
<html>
<head>
<title>修改密码</title>
<meta charset="utf-8">
<link rel="stylesheet" href="styles/login.css"/>
<script type="text/javascript" src="scripts/basevalue.js"></script>
<script type="text/javascript" src="scripts/jquery.min.js"></script>
<script type="text/javascript" src="scripts/cookie_util.js"></script>
<script type="text/javascript" src="scripts/base64.js"></script>
</head>
	<body>
		<div class="global">
			<div class="sig sig_in" tabindex='4' id='zc'>
				<dl>
					<dt>
						<div class='header'>
							<h3>修改密码</h3>
						</div>
					</dt>
					<dt></dt>
					<dt>
						<div class='letter'>
							原密码: <input type="text" name="" id="last_password" tabindex='1'/>
							<div class='warning' id='warning_1'><span></span></div>
						</div>
					</dt>
					<dt>
						<div class='letter'>
							新密码: <input type="password" name="" id="new_password" tabindex='2'/>
							<div class='warning' id='warning_2'><span></span></div>
						</div>
					</dt>
					<dt>
						<div class='password'>
							确认新密码: <input type="password" name="" id="final_password" tabindex='3'/>
							<div class='warning' id='warning_3'><span></span></div>
						</div>
					</dt>
					<dt>
						<div>
							<input type="button" name="" id="changePassword" value=' 确 定 ' tabindex='4'/>
							<input type="button" name="" id="back" value=' 关 闭 ' tabindex='5'/>
							<script type="text/javascript">
							function get(e){
								return document.getElementById(e);
							}
							//单击返回按钮回退页面
							get('back').onclick=function(){
								get('zc').className='sig sig_out';
								window.history.back();
								window.opener=null;
								window.open('','_self');
								window.close();
							}
							//鼠标移出事件(校验格式)
							window.onload=function(){
								//原始密码的校验
								$("#last_password").blur(function(){
									var lpassword=$("#last_password").val().trim();
									if(lpassword == ""){
										$("#warning_1").show();
										$("#warning_1 span").html("原密码不能为空");
									}else{
										$("#warning_1").hide();
									}
								});
									
								//新密码的校验
								$("#new_password").blur(function(){
									var npassword=$("#new_password").val().trim().length;
									if(npassword<6 && npassword>0){
										$("#warning_2").show();
										$("#warning_2 span").html("新密码长度过短");
									}else if(npassword == ""){
										$("#warning_2").show();
										$("#warning_2 span").html("新密码不能为空");
									}else{
										$("#warning_2").hide();
									}
								});
								
								//确认密码的校验
								$("#final_password").blur(function(){
									var npassword=$("#new_password").val().trim();
									var fpassword=$("#final_password").val().trim();
									if(npassword != fpassword){
										$("#warning_3").show();
										$("#warning_3 span").html("密码输入不一致");
									}else{
										$("#warning_3").hide();
									}
								});
								
								//鼠标移入input时候,提示信息隐藏
								$("#last_password").focus(function(){
									$("#warning_1").hide();
								});
								$("#new_password").focus(function(){
									$("#warning_2").hide();
								});
								$("#final_password").focus(function(){
									$("#warning_3").hide();
								});
								
								//绑定确认按钮单击事件
								$("#changePassword").click(function(){
									//清空3个提示框的样式
									$("#warning_1").hide();
									$("#warning_2").hide();
									$("#warning_3").hide();
									
									//获取请求参数共计4个,用户输入的3个,还有一个是Cookie中的用户userId(是否超时)
									var lastPwd = $("#last_password").val().trim();
									var newPwd = $("#new_password").val().trim();
									var finalPwd = $("#final_password").val().trim();
									//Cookie中的userId
									var userId = getCookie("userId");
									
									//参数验证(要求密码不能为空)
									var ok = true;
									if(lastPwd == ""){
										$("#warning_1 span").html("原密码不能为空");
										$("#warning_1").show();
										ok = false;
										//此处不给与提示,后续不发送ajax
									}
									if(newPwd == ""){
										ok = false;
										$("#warning_2 span").html("新密码不能为空");
										$("#warning_2").show();
									}else if(newPwd.length <6 && newPwd.length>0){
										ok = false;
										$("#warning_2 span").html("新密码长度过短");
										$("#warning_2").show();
									}
									if(finalPwd != newPwd){
										$("#warning_3 span").html("密码输入不一致");
										$("#warning_3").show();
										ok = false;
									}
									if(userId == null){//超时2小时
										ok = false;
										window.location.href = "log_in.html";//跳转到登录页面
									}
									
									//发送ajax请求
									if(ok){
										$.ajax({
											url:path + "/user/modify.do",
											type:"post",
											data:{"userId":userId,"lastPwd":lastPwd,"newPwd":newPwd},
											dataType:"json",
											success:function(result){
												if(result.status == 0){//修改成功
													//跳转到登录页面
													window.location.href = "log_in.html";
												}else if(result.status == 2){
													//原始密码不存在
													$("#warning_1 span").html(result.msg);
													$("#warning_1").show();
												}else if(result.status == 3){
													//原始密码错误
													$("#warning_1 span").html(result.msg);
													$("#warning_1").show();
												}
											},
											error:function(){alert("错误");}
										});
									}
								});
							}
							</script>
						</div>
					</dt>
				</dl>
			</div>
		</div>
	</body>
</html>

注意:

页面第一个功能:单击关闭按钮,返回之前的主页面;

页面第二个功能:鼠标移入和移出事件对input中输入信息的校验

例如:鼠标移入时候,input后面的提示信息不再显示,鼠标移出input时候,若符合格式则不显示提示,若不符合则显示提示;

页面第三个功能:单击确定按钮,会对三个input里面的信息进行校验(包括用户超时),若不符合,则提示信息,若符合,则跳转到登录页面;

-----------------------------------------------------------------------------------------------------------------------

js的页面还可以采用如下写法,不用每次移出input去校验,而是点击"确定"按钮后才提交校验,部分为js脚本校验,部分为ajax校验,代码如下:

<!DOCTYPE html>
<html>
<head>
<title>修改密码</title>
<meta charset="utf-8">
<link rel="stylesheet" href="styles/login.css"/>
<script type="text/javascript" src="scripts/basevalue.js"></script>
<script type="text/javascript" src="scripts/jquery.min.js"></script>
<script type="text/javascript" src="scripts/cookie_util.js"></script>
<script type="text/javascript" src="scripts/base64.js"></script>
<script type="text/javascript">
$(function(){
	//关闭按钮-回退页面
	$("#back").click(function(){
		window.location.href = document.referrer;//referrer 属性可返回载入当前文档的文档的 URL
	});
	//修改密码
	$("#changePassword").click(function(){
		//获取参数
		var userId = getCookie("userId");
		var last_password = $("#last_password").val().trim();//原密码
		var new_password = $("#new_password").val().trim();//新密码
		var final_password = $('#final_password').val().trim();//确认密码
		var ok = true;
		//清除校验提示
		$("#warning_1").hide();
		$("#warning_2").hide();
		$("#warning_3").hide();
		//原密码校验--非空
		if(last_password == ""){
			ok = false;
			$("#warning_1 span").html("原密码不能为空!");
			$("#warning_1").show();
		}
		//新密码校验--非空  长度
		if(new_password == ""){
			ok = false;
			$("#warning_2 span").html("新密码不能为空!");
			$("#warning_2").show();
		}else if(new_password.length < 6 && new_password.length > 0){
			ok = false;
			$("#warning_2 span").html("密码不能小于6位!");
			$("#warning_2").show();
		}
		//确认密码
		if(new_password != final_password){
			ok = false;
			$("#warning_3 span").html("输入密码不一致!");
			$("#warning_3").show();
		}
		if(ok){
			$.ajax({
				url: path + "/user/modify.do",
				type:"post",
				data:{"userId":userId,"new_pwd":new_password,"old_pwd":last_password},
				dataType:"json",
				success:function(result){
					if(result.status == 0){//定位到登录页面
						window.location.href = "log_in.html";
					}else if(result.status == 2){//原密码错误
						$("#warning_1 span").html(result.msg);
						$("#warning_1").show();
					}
				},
				error:function(){
					alert("修改密码失败");
				}
			});
		}
	});
});
</script>
</head>
	<body>
		<div class="global">
			<div class="sig sig_in" tabindex='4' id='zc'>
				<dl>
					<dt>
						<div class='header'>
							<h3>修改密码</h3>
						</div>
					</dt>
					<dt></dt>
					<dt>
						<div class='letter'>
							原密码:&nbsp;<input type="text" name="" id="last_password" tabindex='1'/>
							<div class='warning' id='warning_1'><span></span></div>
						</div>
					</dt>
					<dt>
						<div class='letter'>
							新密码:&nbsp;<input type="password" name="" id="new_password" tabindex='2'/>
							<div class='warning' id='warning_2'><span></span></div>
						</div>
					</dt>
					<dt>
						<div class='password'>
							确认新密码:&nbsp;<input type="password" name="" id="final_password" tabindex='3'/>
							<div class='warning' id='warning_3'><span></span></div>
						</div>
					</dt>
					<dt>
						<div>
							<input type="button" name="" id="changePassword" value='&nbsp;确&nbsp;定&nbsp;' tabindex='4'/>
							<input type="button" name="" id="back" value='&nbsp;关&nbsp;闭&nbsp;' tabindex='5'/>
						</div>
					</dt>
				</dl>
			</div>
		</div>
	</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荒--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值