个人博客-2(用户信息修改)

用户信息修改

声明:该项目是GitHub上的开源项目,本人已购买作者相关课程,仅供个人学习使用。
课程链接https://www.lanqiao.cn/courses/1367

修改登录名和昵称
  • 先从session中获取已登录用户的登录名和昵称显示在输入框中

  • 用户可以根据原信息进行修改
    在这里插入图片描述

  • 使用ajax异步交互

profile.html

<form role="form" id="userNameForm">

   <div class="form-group col-sm-8">
       <div class="alert alert-danger" id="updateUserName-info" style="display: none;"></div>
   </div>
   
   <!-- 文本输入框 -->
   <div class="form-group">
       <label>登陆名称</label>
       <!-- 登录名不能修改-->
       <input type="text" class="form-control" id="loginUserName"
              name="loginUserName"
              placeholder="请输入登录名" required="true"
              th:value="${session.loginUser.getUserName()}"
              readonly="true">
   </div>
   
   <div class="form-group">
       <label>昵称</label>
       <input type="text" class="form-control" id="nickName"
              name="nickName"
              placeholder="请输入昵称" required="true" 
              th:value="${session.loginUser.getNickName()}">
   </div>
   
   <div class="card-footer">
       <button type="button" id="updateUserNameButton" onsubmit="return false;"
               class="btn btn-danger float-right">确认修改
       </button>
   </div>
</form>

profile.js

//修改个人信息
$('#updateUserNameButton').click(
	
	function () {
	
	   $("#updateUserNameButton").attr("disabled",true);
	   var userName = $('#loginUserName').val();
	   var nickName = $('#nickName').val();
	   if (validUserNameForUpdate(userName, nickName)) {
	       //ajax提交数据
	       var params = $("#userNameForm").serialize();
	       $.ajax({
	           type: "POST",
	           url: "/admin/profile/name",
	           data: params,
	           success: function (r) {
	               if (r == 'success') {
	                   alert('修改成功');
	               } else {
	                   alert('修改失败');
	                   $("#updateUserNameButton").prop("disabled",false);
	               }
	           }
	       });
	    } else {
	       $("#updateUserNameButton").prop("disabled",false);
	    }
	   
	 }
);

/**
 * 名称验证
 */
function validUserNameForUpdate(userName, nickName) {
    if (isNull(userName) || userName.trim().length < 1) {
        $('#updateUserName-info').css("display", "block");
        $('#updateUserName-info').html("请输入登陆名称!");
        return false;
    }
    if (isNull(nickName) || nickName.trim().length < 1) {
        $('#updateUserName-info').css("display", "block");
        $('#updateUserName-info').html("昵称不能为空!");
        return false;
    }
    if (!validUserName(userName)) {
        $('#updateUserName-info').css("display", "block");
        $('#updateUserName-info').html("请输入符合规范的登录名!");
        return false;
    }
    if (!validCN_ENString2_18(nickName)) {
        $('#updateUserName-info').css("display", "block");
        $('#updateUserName-info').html("请输入符合规范的昵称!");
        return false;
    }
    return true;
}
dao层
//修改用户名和昵称,使用万能的map传参
int updateName(Map<String,Object> map);
<update id="updateName" parameterType="map">
   update rm_blog.admin_user set user_name=#{loginUserName},nick_name=#{nickName} where id=#{id};
</update>
service层
int updateName(Map<String,Object> map);
@Override
public int updateName(Map<String, Object> map) {
    return adminUserMapper.updateName(map);
}
controller层
//修改name属性
@PostMapping("/profile/name")
@ResponseBody
public String nameUpdate(
						HttpServletRequest request, 
						@RequestParam("loginUserName") String loginUserName,
                        @RequestParam("nickName") String nickName) {
                        
    if (StringUtils.isEmpty(loginUserName) || StringUtils.isEmpty(nickName)) {
        return "参数不能为空";
    }
    
    Integer loginUserId = (int) request.getSession().getAttribute("loginUserId");
    HashMap<String, Object> map = new HashMap<>();
    map.put("loginUserName",loginUserName);
    map.put("nickName",nickName);
    map.put("id",loginUserId);

    if (adminUserService.updateName(map)>0) {
        return "success";
    } else {
        return "修改失败";
    }
}
修改密码

增加密码校验功能,最少6位,最多20位字母或数字、特殊字符的组合

profile.html

<form role="form" id="userPasswordForm">

   <!--显示信息-->
   <div class="form-group col-sm-8">
       <div class="alert alert-danger updatePassword-info" 
       id="updatePassword-info" style="display: none;"></div>
   </div>

   <!-- 输入框 -->
   <div class="form-group">
       <label class="control-label"><i class="fa fa-key"></i> 原密码</label>
       <input type="text" class="form-control" id="oldPassword"
              name="oldPassword"
              placeholder="请输入原密码" required="true">
   </div>
   <div class="form-group">
       <label class="control-label"><i class="fa fa-key"></i> 新密码</label>
       <input type="text" class="form-control" id="newPassword" name="newPassword"
              placeholder="请输入新密码" required="true">
   </div>
   <div class="card-footer">
       <button type="button" id="updatePasswordButton" onsubmit="return false;"
               class="btn btn-danger float-right">确认修改
       </button>
   </div>
</form>

profile.js

//修改密码
$('#updatePasswordButton').click(
    function () {
    $("#updatePasswordButton").attr("disabled",true);

    var oldPassword = $('#oldPassword').val();
    console.log(oldPassword);
    var newPassword = $('#newPassword').val();

    if (validPasswordForUpdate(oldPassword, newPassword)) {

        var params = $("#userPasswordForm").serialize();
        $.ajax({
            type: "POST",
            url: "/admin/profile/password",
            data: params,
            success: function (r) {
                console.log(r);
                if (r === 'success') {
                    alert('修改成功');
                    window.location.href = '/admin/login';
                } else {
                    alert('修改失败');
                    $("#updatePasswordButton").attr("disabled",false);
                }
            }
        });
    } else {
        $("#updatePasswordButton").attr("disabled",false);
    }
});


/**
 * 密码验证
 */
function validPasswordForUpdate(oldPassword, newPassword) {
    if (isNull(oldPassword) || oldPassword.trim().length < 1) {
        $('#updatePassword-info').css("display", "block");
        $('#updatePassword-info').html("请输入原密码222!");
        return false;
    }
    if (isNull(newPassword) || newPassword.trim().length < 1) {
        $('#updatePassword-info').css("display", "block");
        $('#updatePassword-info').html("新密码不能为空!");
        return false;
    }
    if (!validPassword(newPassword)) {
        $('#updatePassword-info').css("display", "block");
        $('#updatePassword-info').html("请输入符合规范的密码!");
        return false;
    }
    return true;
}

public.js
正则表达式

/**
 * 用户密码验证 最少6位,最多20位字母或数字、特殊字符的组合
 *
 * @param password
 * @returns {boolean}
 */
function validPassword(password) {
    var pattern = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$)^.{6,20}$/;
    if (pattern.test(password.trim())) {
        return (true);
    } else {
        return (false);
    }
}

dao层
//修改密码
int updatePassword(Map<String,Object> map);
<update id="updatePassword" parameterType="map">
    update rm_blog.admin_user 
    set password=md5(#{newPassword})
    where id=#{id} and password=md5(#{oldPassword});
</update>
service层
int updatePassword(Map<String,Object> map);
@Override
public int updatePassword(Map<String, Object> map) {
    return adminUserMapper.updatePassword(map);
}
controller层
//修改密码
@PostMapping("/profile/password")
@ResponseBody
public String passwordUpdate(@RequestParam("oldPassword") String oldPassword,
                             @RequestParam("newPassword") String newPassword,
                             HttpSession session) {

    if (StringUtils.isEmpty(oldPassword) || StringUtils.isEmpty(newPassword)) {
        return "参数不能为空";
    }

    int loginUserId = (int) session.getAttribute("loginUserId");
    HashMap<String, Object> map = new HashMap<>();
    map.put("id",loginUserId);
    map.put("oldPassword",oldPassword);
    map.put("newPassword",newPassword);
    System.out.println(map);

    if (adminUserService.updatePassword(map)>0) {
        //修改成功后清空session中的数据,前端控制跳转至登录页
        session.removeAttribute("loginUserId");
        session.removeAttribute("loginUser");
        session.removeAttribute("errorMsg");
        return "success";
    } else {
        return "修改失败";
    }
}
安全退出用户

点击退出按钮,移除session,重定向到登录页
index.html

<li class="nav-item">
    <a th:href="@{/admin/logout}" class="nav-link">
        <i class="fa fa-sign-out nav-icon"></i>
        <p>安全退出</p>
    </a>
</li>

controller

//退出功能
 @RequestMapping("/logout")
 public String logout(HttpSession session){
     session.removeAttribute("loginUserId");
     session.removeAttribute("loginUser");
     session.removeAttribute("errorMsg");
     return "redirect:/admin/login";
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值