本文共 3870 字,大约阅读时间需要 12 分钟。
一,介绍此次实现
介绍一下我们这次实现的功能,从标题就能知道,前端表单提交数据通过ajax发送数据到后台,后台接受到数据并查询用户是否存在,如果用户存在给予修改密码的权限,如果不存在返回无法修改信息给用户,简单的来说就是对数据库中的数据进行修改的问题,只不过通过前后端交互进行修改,SQL实现更改语句为update 表名 set 字段……,这里我通过Spring JPA自定义语句为 update UserInfo set password=:password where userName=:username
二,回顾WEB项目的创建,登陆实现,注册实现
1,如何快速搭建一个Springboot Web项目: 2,如何通过ajax发送数据实现后台数据库查询数据,并进行登录功能: 3,如何通过ajax发送数据实现后台判断用户存在,并进行注册功能:三,实现更改密码的展示,先看效果再看具体代码实现
1,此时我们的数据库User_Info表中数据为这样的,如下图 2,验证表中存在数据能进行密码的更改,此时输入用户名:king 密码:999,我们把密码改为666 控制台打印3,验证表中不存在数据不能进行密码的更改,此时输入用户名:andy 密码:122
同时控制台打印 四,前后端代码展示1,前端的HTML ,js 代码,和后端的pojo实体类,就不展示了和上篇博客中注册时一样的,这里提供上篇博客的链接,需要可以去看哈,
2,dao层
package com.springboot.springboot.dao;import com.springboot.springboot.pojo.UserInfo;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.jpa.repository.Modifying;import org.springframework.data.jpa.repository.Query;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Transactional;import java.util.List;@Repositorypublic interface UserDao extends JpaRepository{ //定义通过用户名密码查询数据 public UserInfo findByUserNameAndPassword(String username,String password); //定义通过用户查询 public List findByUserName(String username); //定义根据用户名更改密码 @Modifying//自动清除实体里保存的数据。 @Transactional//解用于提交事务,若没有带上这句,会报事务异常提示。 @Query(value = "update UserInfo set password=:password where userName=:username") public void updateOne(String username,String password);}
3,controller
package com.springboot.springboot.controller;import com.springboot.springboot.dao.UserDao;import com.springboot.springboot.pojo.UserInfo;import com.springboot.springboot.service.UserServiceImpl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import java.util.List;import java.util.Map;import com.alibaba.fastjson.JSON;import sun.plugin2.message.JavaReplyMessage;/** * @author ganxiang * IDE IntelliJ IDEA * @project_name and filename Springboot UserController * @date 2020/04/08 0008 14:15 */@Controllerpublic class UserController { @Autowired UserDao userDao; @RequestMapping("/userBackPwd") @ResponseBody public String userBackPwd(HttpServletRequest request,Mapmap,HttpSession session){ //1,获取ajax传递过来的数据 String name =request.getParameter("username"); String password =request.getParameter("password"); String pwd =request.getParameter("pwd"); System.out.println(name+":"+password+":"+pwd); //2,根据用户名查询用户 List list =userService.getUserName(name); System.out.println("根据用户名查询是否存在"+list); //3,通过判断用户是否为空,返回数据给前端 if (list.isEmpty()){ //3.1如果为空返回用户不存在无法修改 map.put("status","no"); map.put("message","查询得知,用户不存在"); System.out.println("查询得知,用户不存在"); } else { //3.2如果用户存在则进行修改,并返回修改信息给前端 //3.2修改的前提是前后输入两次的密码相同 if (password.equals(pwd)){ //3.2.1修改的前后输入两次的密码相同 session.setAttribute("userInfo", name); //修改语句 userDao.updateOne(name,pwd); map.put("status","ok"); map.put("message","用户更改成功"); System.out.println(name+"用户更改密码成功,更改密码为:"+pwd); } else { //3.2.2修改前后输入两次的密码不同 map.put("status","no"); map.put("message","前后输入的密码不一致,更改失败"); System.out.println("前后输入的密码不一致,更改失败"); } } return JSON.toJSONString(map); }}
到此完成用户的密码修改问题。
转载地址:http://deqzi.baihongyu.com/