从下都上
UserMapper
//更新密码
int updatePassword(int id,String password);


user-mapper.xml
<update id="updatePassword">
    update user set password = #{password} where id = #{id}
</update>


UserService
//个人设置修改密码功能
public Map<String,Object> updatePassword(String password,String newPassword,int id){
    Map<String,Object> map =new HashMap<>();
    User user = userMapper.selectByID(id);
    password= CommunityUtil.md5(password+user.getSalt());
    if(!user.getPassword().equals(password)){
        map.put("passwordMsg","输入密码错误!");
        return map;
    }
    else {//注意:存入新密码要以加密后的形式存进去
        newPassword= CommunityUtil.md5(newPassword+user.getSalt());
        userMapper.updatePassword(id,newPassword);
    }

    return map;
}


UserController
//个人设置页面修改密码功能
//这里形参用Model类和User类即可,SpringMVC会把传入内容按照User属性填入user
@RequestMapping(path = "/setting", method = RequestMethod.POST)
public String updatePassword(Model model, String password,String newPassword,String confirmPassword) {
   if(StringUtils.isBlank(password)){
       model.addAttribute("passwordMsg","请输入原始密码!");
       return "/site/setting";
   }
    if(StringUtils.isBlank(newPassword)){
        model.addAttribute("newPasswordMsg","请输入新密码!");
        return "/site/setting";
    }
    if(StringUtils.isBlank(confirmPassword)){
        model.addAttribute("confirmPasswordMsg","请再次输入新密码!");
        return "/site/setting";
    }
    if(!confirmPassword.equals(newPassword)){
        model.addAttribute("newPasswordMsg","两次输入的新密码不相同!");
        return "/site/setting";
    }
    User user=hostHolder.getUser();
    Map<String, Object> map = userService.updatePassword(password,newPassword,user.getId());
    if (map == null || map.isEmpty()) {
        //传给templates注册成功信息
        model.addAttribute("msg", "密码修改成功");
        //跳到回个人设置页面
        model.addAttribute("target", "/user/setting");
        return "/site/operate-result";
    }else {
        //失败了传失败信息,跳到到原来的页面
        model.addAttribute("passwordMsg","输入的原始密码错误!");
        return "/site/setting";
    }


}


setting.html:注意form标签的要加method     th:action
<!-- 修改密码 -->
<h6 class="text-left text-info border-bottom pb-2 mt-5">修改密码</h6>
<form class="mt-5" method="post" th:action="@{/user/setting}">
   <div class="form-group row mt-4">
      <label for="old-password" class="col-sm-2 col-form-label text-right">原密码:</label>
      <div class="col-sm-10">
         <input type="password"
               th:class="|form-control ${passwordMsg!=null?'is-invalid':'' }|"
               id="old-password"
               th:value="${param.password}"
                name="password" placeholder="请输入原始密码!" required>
         <div class="invalid-feedback"th:text="${passwordMsg}">
            密码长度不能小于8位!
         </div>                   
      </div>
   </div>
   <div class="form-group row mt-4">
      <label for="new-password" class="col-sm-2 col-form-label text-right">新密码:</label>
      <div class="col-sm-10">
         <input type="password"
               th:class="|form-control ${newPasswordMsg!=null?'is-invalid':'' }|"
               id="new-password"
               th:value="${param.newPassword}"
                name="newPassword" placeholder="请输入新的密码!" required>
         <div class="invalid-feedback"th:text="${newPasswordMsg}">
            密码长度不能小于8位!
         </div>                   
      </div>
   </div>
   <div class="form-group row mt-4">
      <label for="confirm-password" class="col-sm-2 col-form-label text-right">确认密码:</label>
      <div class="col-sm-10">
         <input type="password"
               th:class="|form-control ${confirmPasswordMsg!=null?'is-invalid':'' }|"
               id="confirm-password"
               th:value="${param.confirmPassword}"
               name = confirmPassword placeholder="再次输入新密码!" required>
         <div class="invalid-feedback">
            两次输入的密码不一致!
         </div>                      
      </div>
   </div>