目录
提醒:该Demo仅仅完成密码校验修改部分
我需要根据 username 去修改 password,前端需要传入用户名,旧密码,新密码三个参数
需求1:需要验证用户是否存在
需求2:新密码不能与老密码相同
需求3:修改密码前,需要验证旧密码
需求4:不能输入空值

需要验证用户是否存在,需要一个根据username查询user的查询
查询不存在,返回不存在用户;查询存在,得到用户当前密码
前端传入数据时,验证传入的旧密码是否与当前密码相同,验证传入的新密码是否与当前密码相同
- @Data
- public class User {
- private Integer id;
- private String username;
- private String password;
- }
Controller主要做从HTTP请求中获取信息,提取参数,并将其分发给不同的处理服务(service层),并向前端返回service层处理后的数据(JSON数据ModelAndView对象)
修改密码的controller
- @RestController
- public class UpdatePasswordController {
-
- @Autowired
- private UpdatePasswordService updatePasswordService;
-
- @RequestMapping("update")
- public void updatePassword(@RequestParam(value = "username") String username,
- @RequestParam(value = "password") String password,
- @RequestParam(value = "newPsw") String newPsw){
- updatePasswordService.updatePassword(username,password,newPsw);
- }
- }
根据username查询user的controller
- @RestController
- public class GetUserByUsernameController {
- @Autowired
- private GetUserByUsernameService getUserByUsernameService;
-
- @RequestMapping("seach")
- public @ResponseBody User getUserByUsername(String username){
- User user = getUserByUsernameService.getUserByUsername(username);
- return user;
- }
- }
Service主要做逻辑处理,本Demo具体逻辑在此部分进行
修改密码的service
- //接口层
- @Service
- public interface UpdatePasswordService {
- String updatePassword(String username,String password,String newPsw);
- }
-
-
- //接口实现层
- @Service
- public class UpdatePasswordServiceImp implements UpdatePasswordService{
-
- @Autowired
- private GetUserByUsernameMapper getUserByUsernameMapper;
- @Autowired
- private UpdatePasswordMapper updatePasswordMapper;
-
-
- @Override
- public String updatePassword(String username, String password, String newPsw) {
- //根据username获取user
- User user = getUserByUsernameMapper.getUserByUsername(username);
-
- if (user != null){
- if (StringUtils.isEmpty(username)||StringUtils.isEmpty(password)||StringUtils.isEmpty(newPsw)){
- System.out.println("输入不能为空");
- return "输入不能为空";
- }else if (!user.getPassword().equals(password)){
- System.out.println("原密码错误");
- return "原来密码错误";
- }
- else if (user.getPassword().equals(newPsw)){
- System.out.println("新密码不能与旧密码相同!");
- return "新密码不能与旧密码相同!";
- }else if (user.getPassword().equals(password)){
- updatePasswordMapper.updatePasswordByUsername(username,newPsw);
- System.out.println("密码修改成功");
- return "密码修改成功";
- }else
- System.out.println("用户密码未修改");
- return "用户密码未修改";
- }else{
- System.out.println("5");
- return "用户不能为空";
- }
-
- }
- }
-
-
根据username查询user的service
- @Service
- public interface GetUserByUsernameService {
- User getUserByUsername(String username);
- }
-
- @Service
- public class GetUserByUsernameServiceImp implements GetUserByUsernameService {
-
- @Autowired
- private GetUserByUsernameMapper getUserByUsernameMapper;
- @Override
- public User getUserByUsername(String username) {
- User user = getUserByUsernameMapper.getUserByUsername(username);
- return user;
- }
- }
Dao负责和数据库进行操作,本demo因为sql语句简单使用注解,复杂sql建议写xml
修改密码的Dao
- @Repository
- public interface UpdatePasswordMapper {
- @Update("update user set password = #{password} where username = #{username}")
- Integer updatePasswordByUsername(@Param("username")String username,@Param("password") String password);
- }
根据username查询user的Dao
- @Repository
- public interface GetUserByUsernameMapper {
- @Select("select * from user where username = #{username}")
- User getUserByUsername (@Param("username") String username);
- }
原来的密码为1141
密码错误

新密码不能与老密码相同

修改密码成功

