Springboot WEB项目前端表单使用AJAX发送数据到后台,后台查询数据库实现根据用户名更改密码并登陆功能!

Springboot WEB项目实现用户密码更改并成功登陆功能

一,介绍此次实现

介绍一下我们这次实现的功能,从标题就能知道,前端表单提交数据通过ajax发送数据到后台,后台接受到数据并查询用户是否存在,如果用户存在给予修改密码的权限,如果不存在返回无法修改信息给用户,简单的来说就是对数据库中的数据进行修改的问题,只不过通过前后端交互进行修改,SQL实现更改语句为update 表名 set 字段……,这里我通过Spring JPA自定义语句为 update UserInfo set password=:password where userName=:username

二,回顾WEB项目的创建,登陆实现,注册实现
1,如何快速搭建一个Springboot Web项目: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;

@Repository
public interface UserDao extends JpaRepository<UserInfo, Integer> {
    //定义通过用户名密码查询数据
    public UserInfo findByUserNameAndPassword(String username,String password);
    //定义通过用户查询
    public List<UserInfo> 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
 */

@Controller
public class UserController {
    @Autowired
    UserDao userDao;
    @RequestMapping("/userBackPwd")
    @ResponseBody
    public String userBackPwd(HttpServletRequest request,Map<String,Object> map,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<UserInfo> 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);

    }
}

到此完成用户的密码修改问题。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值