java修改用户密码全代码
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">×</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修改用户密码全代码相关推荐
- oracle中修改用户密码
oracle中修改用户密码 首先是 win键 + R 输入cmd 输入sqlplus/ as sysdba,回车,此时进入到SQL> 输入 alter user system identifie ...
- linux用户密码管理,Linux_详解Linux中的用户密码管理命令passwd和change,passwd
修改用户密码参数
nbsp - phpStudy...
详解Linux中的用户密码管理命令passwd和change passwd 修改用户密码 参数 -k 保持未过期身份验证令牌 -l 关闭账号密码.效果相当于usermod -L,只有root才有权使用 ...
- vue.js实现用户评论、登录、注册、及修改用户部分信息功能代码。
github效果在线预览 仓库地址: https://github.com/zhongyoucong/vuejs/ vue.js实现用户评论.登录.注册.及修改用户部分信息功能代码.效果图如下: 登入 ...
- Linux学习-26-passwd命令:修改用户密码
8.10 Linux passwd命令:修改用户密码 用户管理的一项重要内容是用户口令的管理.useradd 命令命令创建新用户时,并没有设定用户密码,所以被系统锁定,无法使用,必须为其指定口令后才可 ...
- 利用MS-SAMR协议修改用户密码
利用MS-SAMR协议修改用户密码 @(Tips) 文章目录 利用MS-SAMR协议修改用户密码 0x00 利用 1. SetNTLM (1) 利用条件 (2) Demo 2. ChangeNTLM ...
- 【安全研究】利用MS-SAMR协议修改用户密码
本文为Windows RPC利用系列文章的第一篇,主要介绍关于MS-SAMR的部分利用,在后续的文章中将继续介绍RPC在ST测试中的应用 作者: Loong716@Amulab 在ST测试过程中,经常 ...
- 在linux下修改用户密码
修改本地用户密码: 1.交互配置本地用户: 以root用户: passwd <username> Changing password for user dewang. New UNIX p ...
- ansible 非root 用户 批量修改用户密码
为什么80%的码农都做不了架构师?>>> 目录 一 环境 系统环境 软件版本 二 批量修改用户密码 1. hosts 文件配置 2. 修改密码的yml 正文 一 环境 系统环 ...
- linux chpasswd命令 批量修改用户密码
chpasswd 批量修改用户密码 工作原理: 从系统的标准输入读入用户的名称和口令,并利用这些信息来更新系统上已存在的用户的口令 语法: 1:# echo 用户名:密码 | chpasswd 2: ...
最新文章
- github流程图_10月份Github上最热门的JavaScript开源项目
- List去除重复的元素
- android viewpage预加载和懒加载问题
- Java中使用JNA实现全局监听Linux键盘事件
- 58同城笔试题:数组去重;分饼干(分糖果);最小路径和(leetcode64)
- linux 只运行一个实例 互斥锁,Linux多线程4-1_互斥量
- 浅谈CSS3中的弹性布局
- nodejs项目安装ant design
- 17.卷1(套接字联网API)--- ioctl 操作
- et文件怎么转成excel_怎么将pdf转成excel?一定要学会这个PDF转Excel方法
- Oracle P6培训系列:12进度计算
- 蜂鸣器的专业分类是这样的
- 机器学习——训练模型
- 搭建frida+木木模拟器运行环境
- 在Android运行cocos Demo游戏
- 计算机网络复习-典型题目答案
- Attempted to lock an already-locked dir异常解决方法
- 「分辨率比拼」还不够,4D成像雷达进入“软”竞争时代
- Adobe Flash Player ActiveX 不能安装
- 用反证法证明有无穷多个素数