java实现修改密码

前段时间一直在写东西,本来不想把用户这块的东西放出来,想了想,还是弄一个修改密码功能实现一下,首先介绍一下我这个项目,他有session等验证,所以搞起来得和正式的项目一样得实现,废话不多说,直接开始,先是搞一个请求去查都有哪些账号

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- 前端实在是太差劲了,有很多地方不会写,但是还是将就着实现吧,以后慢慢优化,模态框是网上搜的,实在是不怎么懂前端 -->
<script type="text/javascript"src="<%=request.getContextPath()%>/jquery/jquery-3.1.1.min.js"></script>
<scriptsrc="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet"href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>用户管理</title>
</head>
<body><div id="div_user"></div><!-- 模态框(Modal) --><div class="modal fade" style="display: none;" id="myModal"tabindex="-1" role="dialog" aria-labelledby="myModalLabel"aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal"aria-hidden="true">&times;</button><h4 class="modal-title" id="myModalLabel">修改密码</h4></div><div class="modal-body"><input type="text" id="username" class="username">账号 <inputtype="password" id="y_password" class="y_password">原密码 <inputtype="password" id="x_password" class="x_password">新密码 <inputtype="password" id="qr_password" class="qr_password">确认新密码</div><div class="modal-footer"><a id="pswErrorMsg"></a><button type="button" class="btn btn-default" data-dismiss="modal">关闭</button><button type="button" class="btn btn-primary" onclick="submit()">提交更改</button></div></div><!-- /.modal-content --></div><!-- /.modal --></div>
</body><script type="text/javascript">$(document).ready(function() {user();})
<!--页面加载以后会执行这个函数去后台查都有哪些账号 -->function user() {$.ajax({"url" : "getuser.do","type" : "get","dataType" : "json",success : function(data) {console.log(data);var div_user = document.getElementById('div_user');data.map(function(item) {var p_div = document.createElement("div");var p = document.createElement("p");var button = document.createElement("button");p.id = "p_user";p.innerHTML = item.username;button.id = 'triggerBtn'// button.value='123';$("#triggerBtn").text("修改密码");button.setAttribute('class', 'btn btn-primary btn-lg');button.setAttribute('data-toggle', 'modal');button.setAttribute('data-target', '#myModal');p_div.appendChild(p);p_div.appendChild(button);div_user.appendChild(p_div);})}})}
</script>
<!--模态框的文本检查-->
<script type="text/javascript">function submit() {var msg = document.getElementById('pswErrorMsg');var username = $("#username").val();var y_password = $("#y_password").val();var x_password = $("#x_password").val();var qr_password = $("#qr_password").val();console.log(y_password + x_password + qr_password)var RegExp1 = /(?!^(\d+|[a-z]+|[A-Z]+|[-_.:,!@#%&*?]+)$)^[\w-.:,!@#%&*?]*/;var RegExp2 = /[A-Za-z0-9.\-_:,!@#%&*()]*/;var RegExp3 = /[A-Za-z0-9.\-_:,!@#%&*()]{6,32}/;if (y_password == "" || x_password == "" || qr_password == "") {msg.innerHTML = "密码不能为空!";return true;}if (RegExp2.exec(x_password) != x_password) {msg.innerHTML = "密码仅支持数字、大写字母、小写字母和指定特殊字符!";return true;}if (!RegExp1.test(x_password)) {msg.innerHTML = "密码数字、大写字母、小写字母和指定特殊字符至少包含2种!";return true;}if (!RegExp3.exec(x_password)) {msg.innerHTML = "密码长度应为6~32个字符!";return true;}if (x_password !== qr_password) {msg.innerHTML = "修改的密码不一致";return true;}var url = "changepwd.do";var data = {"username":username,"y_password" : y_password,"x_password" : x_password,"qr_password" : qr_password,};$.ajax({"url" : url,"type" : "get","dataType" : "json",data : data,success : function(data) {console.log(data)if(data==0){msg.innerHTML = "未知错误";return true;}else if(data==1){msg.innerHTML = "没有找到该用户的相关信息";return false;}else if(data==2){msg.innerHTML = "密码错误!请检查密码";return false;}else if(data==3){msg.innerHTML = "您无权修改此用户密码";return true;}else if(data==4){msg.innerHTML = "修改成功";return true;}}})}
</script></html>

这就是查到的数据返回到前端后展示的,我不懂前段端,所以只能这个样子了
实体类,get set 和toString自己生成一下,我这里为了节约空间就只写那些参数了

public class User {private Integer id;      private String username;       //账号private String user_password;  //密码private Integer identity;     //权限//get  set  toString 略
}

查询都有哪些用户controller

//查询有哪些账号Controller@RequestMapping("getuser")@ResponseBodypublic JSONArray getUser() {List<User> res = null;JSONArray json = null;       res = userService.findUser();json = JSONArray.fromObject(res);return json;}

接下来是dao层代码,

public interface UserDao {// 用户登录public User verifyUser(User user);//库里面查询有哪些账号List<User> findUser();// 修改密码时查询一下密码对错User managUser(String userName);// 更新密码int uodataPassword(@Param("username") String username, @Param("x_password") String x_password);
}

再就是service和他的实现类的代码

public interface UserService {public User userLogin(User user);// 查询有哪些用户List<User> findUser();// 修改密码查询账号对比密码User managUser(String userName);// 更新密码int uodataPassword(@Param("username") String username, @Param("x_password") String x_password);
}

实现类代码

@Service
public class UserServiceimpl implements UserService {@Autowiredprivate UserDao userDao;// 验证登录public User userLogin(User user) {return userDao.verifyUser(user);}public List<User> findUser() {return userDao.findUser();}public User managUser(String userName) {return userDao.managUser(userName);}public int uodataPassword(String username, String x_password) {return userDao.uodataPassword(username, x_password);}}

sql代码

<?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="webapidemo.cn.wzy.dao.UserDao.UserDao"><select id="verifyUser"resultType="webapidemo.cn.wzy.Entity.MyUser.User"parameterType="webapidemo.cn.wzy.Entity.MyUser.User">SELECT * FROM myuser where username = #{username};</select><select id="findUser"resultType="webapidemo.cn.wzy.Entity.MyUser.User"><!--identity=2可写可不写,我主要是不想让使用的人看到我的超管账号-->select username from myuser where identity=2;</select><!-- 修改密码时候查询是否有这个用户,与登录重复了 --><select id="managUser"resultType="webapidemo.cn.wzy.Entity.MyUser.User" parameterType="map">SELECT * FROM myuser where username = #{username};</select><!-- 修改密码 --><update id="uodataPassword"parameterType="webapidemo.cn.wzy.Entity.MyUser.User">update myuser set user_password = #{x_password}whereusername=#{username}</update>
</mapper> 

处理检查修改密码的controller

/*** * @param username*            用户名* @param y_password*            原密码* @param x_password*            要修改的密码* @param qr_password*            确认修改的密码* @return 0:未知错误 1:没有查到该用户 2密码不对 3无权限 4修改成功*/@SuppressWarnings("unlikely-arg-type")@RequestMapping("changepwd")@ResponseBodypublic int changeuserpwd(@RequestParam(value = "username", required = false) String username,@RequestParam(value = "y_password", required = false) String y_password,@RequestParam(value = "x_password", required = false) String x_password,@RequestParam(value = "qr_password", required = false) String qr_password) {User userRes = userService.managUser(username);// 查询有无这个账号if (!"".equals(userRes) && null != userRes) {// 账号存在的情况下比对密码if (!userRes.getUser_password().equals(Md5.string2MD5(y_password))) {return 2;// 比对是否有修改密码权限} else if (1 >= (userRes.getIdentity())) {return 3;// 验证密码,对比要修改的密码,密码判空 修改密码} else if (userRes.getUser_password().equals(Md5.string2MD5(y_password)) && x_password.equals(qr_password)&& !"".equals(x_password)) {int user = userService.uodataPassword(username, Md5.string2MD5(x_password));logger.info(username+":修改密码,时间:"+System.currentTimeMillis());;return 4;}}return 1;}

基本逻辑就是首先当点开账号管理这个页面,后台ajax会请求查询有哪些账号返回到前端,前端有一个修改按钮,点击修改会用模态框进行一些填写

数据库表

因为我不会前端的点击修改这个按钮就获取当前点击的账号信息,所以还是做了一个让输入账号的文本框,前端会进行一些你输入的判断,可以上最前面的页面看一下,然后就是提交以后后端进行判断,判断没问题进行update库,然后返回状况码到前端,前端进行展示,基本就是这些,哪里有不懂或者不通的可以联系我,我可以帮忙看解决一下哪里问题,

感悟:对于一个后端的人来说,写前端太烧脑,浪费了我好长时间才将就能凑合看

java修改用户密码全代码相关推荐

  1. oracle中修改用户密码

    oracle中修改用户密码 首先是 win键 + R 输入cmd 输入sqlplus/ as sysdba,回车,此时进入到SQL> 输入 alter user system identifie ...

  2. linux用户密码管理,Linux_详解Linux中的用户密码管理命令passwd和change,passwd 修改用户密码参数 nbsp - phpStudy...

    详解Linux中的用户密码管理命令passwd和change passwd 修改用户密码 参数 -k 保持未过期身份验证令牌 -l 关闭账号密码.效果相当于usermod -L,只有root才有权使用 ...

  3. vue.js实现用户评论、登录、注册、及修改用户部分信息功能代码。

    github效果在线预览 仓库地址: https://github.com/zhongyoucong/vuejs/ vue.js实现用户评论.登录.注册.及修改用户部分信息功能代码.效果图如下: 登入 ...

  4. Linux学习-26-passwd命令:修改用户密码

    8.10 Linux passwd命令:修改用户密码 用户管理的一项重要内容是用户口令的管理.useradd 命令命令创建新用户时,并没有设定用户密码,所以被系统锁定,无法使用,必须为其指定口令后才可 ...

  5. 利用MS-SAMR协议修改用户密码

    利用MS-SAMR协议修改用户密码 @(Tips) 文章目录 利用MS-SAMR协议修改用户密码 0x00 利用 1. SetNTLM (1) 利用条件 (2) Demo 2. ChangeNTLM ...

  6. 【安全研究】利用MS-SAMR协议修改用户密码

    本文为Windows RPC利用系列文章的第一篇,主要介绍关于MS-SAMR的部分利用,在后续的文章中将继续介绍RPC在ST测试中的应用 作者: Loong716@Amulab 在ST测试过程中,经常 ...

  7. 在linux下修改用户密码

    修改本地用户密码: 1.交互配置本地用户: 以root用户: passwd <username> Changing password for user dewang. New UNIX p ...

  8. ansible 非root 用户 批量修改用户密码

    为什么80%的码农都做不了架构师?>>>    目录 一 环境 系统环境 软件版本 二  批量修改用户密码 1. hosts 文件配置 2. 修改密码的yml 正文 一 环境 系统环 ...

  9. linux chpasswd命令 批量修改用户密码

    chpasswd  批量修改用户密码 工作原理: 从系统的标准输入读入用户的名称和口令,并利用这些信息来更新系统上已存在的用户的口令 语法: 1:# echo 用户名:密码 | chpasswd 2: ...

最新文章

  1. github流程图_10月份Github上最热门的JavaScript开源项目
  2. List去除重复的元素
  3. android viewpage预加载和懒加载问题
  4. Java中使用JNA实现全局监听Linux键盘事件
  5. 58同城笔试题:数组去重;分饼干(分糖果);最小路径和(leetcode64)
  6. linux 只运行一个实例 互斥锁,Linux多线程4-1_互斥量
  7. 浅谈CSS3中的弹性布局
  8. nodejs项目安装ant design
  9. 17.卷1(套接字联网API)--- ioctl 操作
  10. et文件怎么转成excel_怎么将pdf转成excel?一定要学会这个PDF转Excel方法
  11. Oracle P6培训系列:12进度计算
  12. 蜂鸣器的专业分类是这样的
  13. 机器学习——训练模型
  14. 搭建frida+木木模拟器运行环境
  15. 在Android运行cocos Demo游戏
  16. 计算机网络复习-典型题目答案
  17. Attempted to lock an already-locked dir异常解决方法
  18. 「分辨率比拼」还不够,4D成像雷达进入“软”竞争时代
  19. Adobe Flash Player ActiveX 不能安装
  20. 用反证法证明有无穷多个素数

热门文章

  1. 百度下架PLATO了
  2. Aleph1堆栈溢出例子调试过程
  3. MySQL 查看数据库和表空间大小及碎片处理
  4. MFC CListCtrl 虚拟列表使用详解
  5. 樱花动态背景登录页面
  6. SpringBoot 项目各个环境配置说明dev、uat、prod
  7. 为什么obs没有声音波动_进入Zoom视频会议时为什么没有声音
  8. mysql perror_mysql perror工具
  9. 毕业年薪30万,你准备好读人工智能专业了吗
  10. Zotero安装与配置教程