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>
<script
	src="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">账号 <input
						type="password" id="y_password" class="y_password">原密码 <input
						type="password" id="x_password" class="x_password">新密码 <input
						type="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")
	@ResponseBody
	public 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 {
	@Autowired
	private 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}
		where
		username=#{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")
	@ResponseBody
	public 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库,然后返回状况码到前端,前端进行展示,基本就是这些,哪里有不懂或者不通的可以联系我,我可以帮忙看解决一下哪里问题,

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

  • 21
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Java中,修改密码通常涉及到用户界面交互和数据库操作。这里是一个简化的例子,展示如何在一个简单的Spring Boot应用中处理用户密码修改。这个例子假设你已经有了User实体类(包含username和password字段)和一个UserService来处理CRUD操作。 ```java // 假设User类 public class User { private String username; private String password; // getters and setters } // UserService接口 public interface UserService { void updatePassword(String username, String newPassword); } // UserService实现 @Service public class UserServiceImpl implements UserService { private UserRepository userRepository; // 假设UserRepository是JPA或Hibernate的用户仓库 @Autowired public UserServiceImpl(UserRepository userRepository) { this.userRepository = userRepository; } @Override public void updatePassword(String username, String newPassword) { Optional<User> user = userRepository.findByUsername(username); if (user.isPresent()) { User updatedUser = user.get(); // 使用工具类(如BCrypt)加密新密码 String hashedPassword = PasswordUtils.hash(newPassword); updatedUser.setPassword(hashedPassword); userRepository.save(updatedUser); System.out.println("Password updated successfully for user: " + username); } else { throw new ResourceNotFoundException("User not found with username: " + username); } } } // 在控制器层,我们可以这样使用 @RestController public class UserController { @Autowired private UserService userService; @PostMapping("/update-password") public ResponseEntity<?> updateUserPassword(@RequestBody UpdatePasswordRequest request) { try { userService.updatePassword(request.getUsername(), request.getNewPassword()); return ResponseEntity.ok().build(); } catch (Exception e) { return ResponseEntity.badRequest().body(e.getMessage()); } } } // 更新密码请求对象 public class UpdatePasswordRequest { private String username; private String newPassword; // getters and setters } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值