网上图书商城项目学习笔记-008修改密码功能
2016-01-26 11:36
501 查看
一、修改密码流程分析
二、代码
1.view层
1)pwd.jsp
2)pwd.js
2.servlet层
1)UserServlet.java
3.service层
1)UserService.java
4.dao层
1)UserDao.java
二、代码
1.view层
1)pwd.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>pwd.jsp</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <link rel="stylesheet" type="text/css" href="<c:url value='/css/css.css'/>"> <link rel="stylesheet" type="text/css" href="<c:url value='/jsps/css/user/pwd.css'/>"> <script type="text/javascript" src="<c:url value='/jquery/jquery-1.5.1.js'/>"></script> <script src="<c:url value='/js/common.js'/>"></script> <script src="<c:url value='/jsps/js/user/pwd.js'/>"></script> </head> <body> <div class="div0"> <span>修改密码</span> </div> <div class="div1"> <form action="<c:url value='/UserServlet'/>" method="post" target="_top" id="updatePasswordForm"> <input type="hidden" name="method" value="updatePassword"/> <table> <tr> <td><label class="error">${msg }</label></td> <td colspan="2"> </td> </tr> <tr> <td align="right">原密码:</td> <td><input class="input" type="password" name="loginpass" id="loginpass" value=""/></td> <td><label id="loginpassError" class="error"></label></td> </tr> <tr> <td align="right">新密码:</td> <td><input class="input" type="password" name="newpass" id="newpass" value=""/></td> <td><label id="newpassError" class="error"></label></td> </tr> <tr> <td align="right">确认密码:</td> <td><input class="input" type="password" name="reloginpass" id="reloginpass" value=""/></td> <td><label id="reloginpassError" class="error"></label></td> </tr> <tr> <td align="right"></td> <td> <img id="vCode" src="<c:url value='/VerifyCodeServlet'/>" border="1"/> <a href="javascript:_change();">看不清,换一张</a> </td> </tr> <tr> <td align="right">验证码:</td> <td> <input class="input" type="text" name="verifyCode" id="verifyCode" value=""/> </td> <td><label id="verifyCodeError" class="error"></label></td> </tr> <tr> <td align="right"></td> <td><input id="submit" type="submit" value="修改密码"/></td> </tr> </table> </form> </div> </body> </html>
2)pwd.js
$(function() { /* * 1. 给注册按钮添加submit()事件,完成表单校验 */ $("#updatePasswordForm").submit(function(){ $("#msg").text(""); var bool = true; $(".input").each(function() { var inputName = $(this).attr("name"); if(!invokeValidateFunction(inputName)) { bool = false; } }); return true; }); /* * 3. 输入框推动焦点时进行校验 */ $(".input").blur(function() { var inputName = $(this).attr("name"); invokeValidateFunction(inputName); }); }); /* * 输入input名称,调用对应的validate方法。 * 例如input名称为:loginname,那么调用validateLoginname()方法。 */ function invokeValidateFunction(inputName) { inputName = inputName.substring(0, 1).toUpperCase() + inputName.substring(1); var functionName = "validate" + inputName; return eval(functionName + "()"); } /* * 校验密码 */ function validateLoginpass() { var bool = true; $("#loginpassError").css("display", "none"); var value = $("#loginpass").val(); if(!value) {// 非空校验 $("#loginpassError").css("display", ""); $("#loginpassError").text("密码不能为空!"); bool = false; } else if(value.length < 3 || value.length > 20) {//长度校验 $("#loginpassError").css("display", ""); $("#loginpassError").text("密码长度必须在3 ~ 20之间!"); bool = false; } else {// 验证原错误是否正确 $.ajax({ cache: false, async: false, type: "POST", dataType: "json", data: {method: "validateLoginpass", loginpass: value}, url: "/goods/UserServlet", success: function(flag) { if(!flag) { $("#loginpassError").css("display", ""); $("#loginpassError").text("原密码错误!"); bool = false; } } }); } return bool; } // 校验新密码 function validateNewpass() { var bool = true; $("#newpassError").css("display", "none"); var value = $("#newpass").val(); if(!value) {// 非空校验 $("#newpassError").css("display", ""); $("#newpassError").text("新密码不能为空!"); bool = false; } else if(value.length < 3 || value.length > 20) {//长度校验 $("#newpassError").css("display", ""); $("#newpassError").text("新密码长度必须在3 ~ 20之间!"); bool = false; } return bool; } /* * 校验确认密码 */ function validateReloginpass() { var bool = true; $("#reloginpassError").css("display", "none"); var value = $("#reloginpass").val(); if(!value) {// 非空校验 $("#reloginpassError").css("display", ""); $("#reloginpassError").text("确认密码不能为空!"); bool = false; } else if(value != $("#newpass").val()) {//两次输入是否一致 $("#reloginpassError").css("display", ""); $("#reloginpassError").text("两次密码输入不一致!"); bool = false; } return bool; } /* * 校验验证码 */ function validateVerifyCode() { var bool = true; $("#verifyCodeError").css("display", "none"); var value = $("#verifyCode").val(); if(!value) {//非空校验 $("#verifyCodeError").css("display", ""); $("#verifyCodeError").text("验证码不能为空!"); bool = false; } else if(value.length != 4) {//长度不为4就是错误的 $("#verifyCodeError").css("display", ""); $("#verifyCodeError").text("错误的验证码!"); bool = false; } else {//验证码是否正确 $.ajax({ cache: false, async: false, type: "POST", dataType: "json", data: {method: "validateVerifyCode", verifyCode: value}, url: "/goods/UserServlet", success: function(flag) { if(!flag) { $("#verifyCodeError").css("display", ""); $("#verifyCodeError").text("错误的验证码!"); bool = false; } } }); } return bool; }
2.servlet层
1)UserServlet.java
public String updatePassword(HttpServletRequest request, HttpServletResponse response) { /* * 1. 封装表单数据到user中 * 2. 从session中获取uid * 3. 使用uid和表单中的oldPass和newPass来调用service方法 * > 如果出现异常,保存异常信息到request中,转发到pwd.jsp * 4. 保存成功信息到rquest中 * 5. 转发到msg.jsp */ User formUser = CommonUtils.toBean(request.getParameterMap(), User.class); User user = (User) request.getSession().getAttribute("sessionUser"); if(user == null) { request.setAttribute("msg", "您还没有登录!"); return "f:/jsps/user/login.jsp"; } try { userService.updatePassword(user.getUid(), formUser.getNewpass(), formUser.getLoginpass()); request.setAttribute("msg", "修改密码成功"); request.setAttribute("code", "success"); return "f:/jsps/msg.jsp"; } catch (UserException e) { request.setAttribute("msg", e.getMessage()); request.setAttribute("user", formUser); return "f:/jsps/user/pwd.jsp"; } }
3.service层
1)UserService.java
/** * 修改密码 * @param uid * @param newPass * @param oldPass * @throws UserException */ public void updatePassword(String uid, String newPass, String oldPass) throws UserException { try { boolean bool = userDao.findByUidAndPassword(uid, oldPass); if(!bool) {//如果老密码错误 throw new UserException("老密码错误"); } userDao.updatePassword(uid, newPass); } catch (SQLException e) { throw new RuntimeException(e); } }
4.dao层
1)UserDao.java
/** * 按uid和password查询 * @param uid * @param password * @return * @throws SQLException */ public boolean findByUidAndPassword(String uid, String password) throws SQLException { String sql = "select count(1) from t_user where uid=? and loginpass=?"; Number count = (Number) qr.query(sql, new ScalarHandler(), uid, password); return count.intValue() > 0; } /** * 修改密码 * @param uid * @param password * @throws SQLException */ public void updatePassword(String uid, String password) throws SQLException { String sql = "update t_user set loginpass=? where uid=?"; qr.update(sql, password, uid); }
相关文章推荐
- div+css将同一个div中图标和文字对齐
- SQL增加、删除、更改表中的字段名
- 那2000万的数据
- Python导入第三方模块后eclipse提示unresolved import
- VS版本记录、_MSC_VER记录
- 对spark中RDD的理解
- Terrier文档翻译:概述
- Android Navigation Drawer
- AndroidStudio开启时报错问题
- J2EE框架(Struts&Hibernate&Spring)的理解
- 3.1 活动应用样式与主题
- Quartz.NET笔记(八) SchedulerListeners
- 优化SQL查询:如何写出高性能SQL语句
- CodeForces 614B Gena's Code
- ConcurrentHashMap线程安全的实现
- Android layoutInflate.inflate 方法具体解释,removeView()错误解决
- ios 将时间戳转为时间类型
- 转:KVC 与 KVO 理解
- css相关 细节 优化 备忘
- 内存泄漏