主页 > 手机  > 

SpringBoot速成(11)更新用户头像,密码P13-P14

SpringBoot速成(11)更新用户头像,密码P13-P14
更新头像: 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