SpringBoot速成(11)更新用户头像,密码P13-P14
- 手机
- 2025-09-09 17:42:02

更新头像: 1.代码展示:
1.@RequestParam 是 Spring MVC 中非常实用的注解,用于从 HTTP 请求中提取参数并绑定到控制器方法的参数上。
2.@PatchMapping 是 Spring MVC 中的一个注解,用于处理 HTTP 的 PATCH 请求。PATCH 请求通常用于对资源的部分更新,而不是像 PUT 请求那样对资源进行完全替换。
在你的例子中,@PatchMapping("updateAvatar") 表示这个方法会处理路径为 /updateAvatar 的 PATCH 请求。
UserServiceImpl:
@Override public void updateAvatar(String avatarUrl) { Map<String,Object> map= ThreadLocalUtil.get(); Integer id= (Integer) map.get("id"); userMapper.updateAvater(avatarUrl,id); }UserMapper:
@Update("update user set userPic=#{userPic},updateTime=now() where id=#{id}") void updateAvater(String avatarUrl, Integer id);报错 : //更新头像 @Update("update user set userPic=#{userPic},updateTime=#{updateTime} where id=#{id}") void updateAvater(String avatarUrl, Integer id); @Override public void updateAvatar(String avatarUrl) { Map<String,Object> map= ThreadLocalUtil.get(); Integer id= (Integer) map.get("id"); userMapper.updateAvater(avatarUrl,id); }
@里边写的是 updateAvater()参数中能得到的东西
修改:updateTime=now()
正确举例:
//更新信息 @Update("update user set nickname=#{nickname},email=#{email},updateTime=#{updateTime} where id=#{id}") void update(User user); @Override public void update(User user) { user.setUpdateTime(LocalDateTime.now()); userMapper.update(user); }Map<String,Object> map=JwtUtil.parseToken(token);与 Map<String,Object> map=ThreadLocalUtil.get();的区别:
前者需要在Controller类中方法的参数上写上
@RequestHeader(name="Authorization") String token 2.参数校验:检验是否是一个合法的URL:
@URL:
局限性:只能判断有无@,则若写123@qq,也会通过
Controller:
@PatchMapping("updateAvatar") public Result updateAvatar(@RequestParam @URL String avatarUrl) { userService.updateAvatar(avatarUrl); return Result.success(); }更新密码:
1.@RequestBody 是Spring MVC中用于绑定HTTP请求体的注解。它将请求体中的JSON、XML等格式的数据自动转换为Java对象或集合。
//更新用户信息 @PutMapping("/update") public Result update(@RequestBody User user){ userService.update(user); return Result.success(); }2.@RequestParam 是 Spring MVC 中的一个注解,用于将请求参数(通常是 URL 中的查询参数或表单数据)绑定到方法的参数上。
3.代码局限性:新密码没有判断是否符合要求;新旧密码不能一致;更新密码后应自动跳转登陆页面,重新登陆(前端)
代码展示:userController:
//更新用户密码 @PatchMapping("/updatePwd") public Result updatePwd(@RequestBody Map<String,String> params){ String oldpwd = params.get("old_pwd"); String newpwd = params.get("new_pwd"); String repwd = params.get("re_pwd"); //没输全 if(StringUtils.hasLength(oldpwd)||StringUtils.hasLength(newpwd)||StringUtils.hasLength(repwd)){ return Result.error("缺少必要参数"); }else{ Map<String,Object> map=ThreadLocalUtil.get(); String username= (String) map.get("username"); User loginUser=userService.findByUserName(username); //输全 //判断输入是否合法 if(loginUser.getPassword().equals(MailUtil1.getMD5String(oldpwd))){ //判读oldpwd和加密过的密码(即根据username得到的密码)是否相同 return Result.error("原密码输入不正确"); } if(!repwd.equals(newpwd)){ return Result.error("新密码不一致"); } } //完全合法,将新密码输入表中 userService.updatePwd(newpwd); return Result.success(); }userServiceImpl:
@Override public void updatePwd(String newpwd) { Map<String,Object> map=ThreadLocalUtil.get(); Integer id= (Integer) map.get("id"); userMapper.updatePwd(MailUtil1.getMD5String(newpwd),id);//表中的是加密过的密码 }userMapper:
@Update("update user set password=#{pmd5String},updateTime=now() where id=#{id}") void updatePwd(String md5String, Integer id); 报错:?????????????????????????SpringBoot速成(11)更新用户头像,密码P13-P14由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“SpringBoot速成(11)更新用户头像,密码P13-P14”