Ajax登录验证实现代码

 更新时间:2021年07月12日 10:06:33   作者:wbcra  
这篇文章主要为大家详细介绍了jQuery+ajax实现用户登录验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
package cn.hp.util;
import java.sql.*;
public class JDBCUtils {
    static Connection connection = null ;
    static Statement statement = null ;
    static PreparedStatement preparedStatement = null ;
    static ResultSet resultSet = null ;
    static{
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/user_system?characterEncoding=utf8&serverTimezone=UTC", "root", "root");
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
//    新增和修改  DML 操作 String sql , sql中的参数    preparedStatement   Object[] arr 用来补全sql中的?
    public static int DML(String sql , Object[] arr  ){  // 可变参数 Object ... arr  0~n个参数
        int update = 0 ;
        try{
            preparedStatement = connection.prepareStatement(sql);
//            循环完毕,会将sql中全部? 补充齐
            for (int i = 0 ; i < arr.length ; i++){
                preparedStatement.setObject(i+1 , arr[i] );
            }
            update = preparedStatement.executeUpdate();
        }catch (SQLException e){
            e.printStackTrace();
        }
        return update ;
    }
    //     带参查询  DQL 操作
    public static ResultSet DQL(String sql , Object[] arr ){
        try{
            preparedStatement = connection.prepareStatement(sql);
//            循环完毕,会将sql中全部? 补充齐
            for (int i = 0 ; i < arr.length ; i++){
                preparedStatement.setObject(i+1 , arr[i] );
            }
            resultSet = preparedStatement.executeQuery();
        }catch (SQLException e){
            e.printStackTrace();
        }
        return resultSet ;
    }
    //    单独提供关闭资源方法
    public static void close(){
        try {
            if (statement!=null){
                statement.close();
            }
            if (connection!= null){
                connection.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
package cn.hp.service;
import cn.hp.dao.UserDao;
public class UserService {
    public boolean login(String account, String password) {
        //service层,依赖于dao层 制定某一条sql执行
        UserDao userDao = new UserDao();
        int select = userDao.selectByAccountAndPassword(account ,password);
        if (select>0){
          return true;
        }else {
            return false;
        }
    }
    public boolean check(String account) {
        //service层,依赖于dao层 制定某一条sql执行
        UserDao userDao = new UserDao();
        int select = userDao.selectByAccount(account);
        if (select>0){
            return true;
        }else {
            return false;
        }
    }
}
package cn.hp.servlet;
import cn.hp.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.设置用户输入的编码格式,因为有可能是中文
        req.setCharacterEncoding("utf-8");
        //2.获取用户数输入的内容
        String account = req.getParameter("account");
        String password = req.getParameter("password");
        //3.依据service来判断当前登录的账号密码是否正确
        //User表 定义一个UserService 用来处理 所有和user有关的业务
        UserService userService = new UserService();
        //login方法传入账号密码  返回是否登录成功
        boolean flag = userService.login(account,password);
        //4.依据是否登录成功,进行控制页面的跳转
        if (flag){
            req.getRequestDispatcher("success.jsp").forward(req,resp);
        }else {
            req.setAttribute("msg","密码错误,请重新登录!");
            req.getRequestDispatcher("login.jsp").forward(req,resp);
        }
    }
}
package cn.hp.servlet;
import cn.hp.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/check")
public class CheckServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.设置用户输入的编码格式,因为有可能是中文
        req.setCharacterEncoding("utf-8");
        //2.获取用户数输入的内容
        String account = req.getParameter("account");
        //3.依据service来判断当前登录的账号密码是否正确
        //User表 定义一个UserService 用来处理 所有和user有关的业务
        UserService userService = new UserService();
        //使用check方法  检出是否存在用户  true 存在用户  false 不存在
        boolean flag = userService.check(account);
        resp.getWriter().println(flag);
    }
}
package cn.hp.dao;
import cn.hp.util.JDBCUtils;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDao {
    public int selectByAccountAndPassword(String account, String password) {
        //执行select查询sql语句
        String sql = "select count(*) from user where account = ? and password = ?";
        Object[] objects = {account , password};
        ResultSet resultSet = JDBCUtils.DQL(sql,objects);
        int select = 0;
        try {
            while (resultSet.next()){
                select = resultSet.getInt(1);
            }
        }catch (SQLException e){
            e.printStackTrace();
        }
        return select;
    }
    public int selectByAccount(String account) {
        //执行select查询sql语句
        String sql = "select count(*) from user where account = ? ";
        Object[] objects = {account };
        ResultSet resultSet = JDBCUtils.DQL(sql,objects);
        int select = 0;
        try {
            while (resultSet.next()){
                select = resultSet.getInt(1);
            }
        }catch (SQLException e){
            e.printStackTrace();
        }
        return select;
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录页</title>
    <script src="js/jquery-3.6.0.js"></script>
</head>
<body>
    <form action="login">
        账号:<input id="input1" type="text" name="account" /> <span id="span1"></span> <br/>
        密码:<input type="password" name="password" /> <span style="color:red"> ${msg } </span><br/>
        <input type="submit" value="登录"/>
    </form>
</body>
<script>
    // 使用jQuery完成ajax校验 ,当前账号是否存在
    $("#input1").blur(function () {
        //    发送ajax请求,获取到当前输入的账号是否存在,写入到span1标签中
        let account = $("#input1").val();
        $.ajax({
            url:"check",
            // data:{"account":$("#input1").val() },
            data:"account="+account ,
            type:"get",
            success:function (data) {
                let data1 = JSON.parse(data);
                if (data1){
                    // 表示存在当前账号
                    // 可以登录
                    $("#span1").html("可以登录");
                    $("#span1").attr("style","color:green");
                }else {
                    $("#span1").html("未注册");
                    $("#span1").attr("style","color:red");
                }
            }
        })
    })
</script>
</html>

相关文章

  • Java线程实现的两种方式解析

    Java线程实现的两种方式解析

    这篇文章主要介绍了Java线程实现的两种方式解析,注意在构造器中启动这个线程的话,很容易造成this逃逸的问题,这是要注意的,这是通过直接集成thread来成为线程,同时在这种情况下,你可以通过调用合适的方法来,需要的朋友可以参考下
    2024-01-01
  • SpringBoot项目将mybatis升级为mybatis-plus的方法

    SpringBoot项目将mybatis升级为mybatis-plus的方法

    本文主要介绍了SpringBoot项目将mybatis升级为mybatis-plus的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 用java实现斗地主发牌过程

    用java实现斗地主发牌过程

    这篇文章主要为大家详细介绍了用java实现斗地主发牌过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • 关于使用MyBatis简化JDBC开发和解决SQL语句警告的问题

    关于使用MyBatis简化JDBC开发和解决SQL语句警告的问题

    这篇文章主要介绍了关于使用MyBatis简化JDBC开发和解决SQL语句警告的问题,如果idea和数据库没有建立链接,idea不识别表的信息,就会出现SQL语句的警告,需要的朋友可以参考下
    2023-05-05
  • Spring的Bean容器介绍

    Spring的Bean容器介绍

    今天小编就为大家分享一篇关于Spring的Bean容器介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 多数据源模式JPA整合sharding-jdbc实现数据脱敏

    多数据源模式JPA整合sharding-jdbc实现数据脱敏

    这篇文章主要为大家介绍了JPA项目中多数据源模式整合sharding-jdbc来实现数据脱敏,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • SpringBoot集成Shiro进行权限控制和管理的示例

    SpringBoot集成Shiro进行权限控制和管理的示例

    这篇文章主要介绍了SpringBoot集成Shiro进行权限控制和管理的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Java ConcurrentHashMap的使用示例

    Java ConcurrentHashMap的使用示例

    这篇文章主要介绍了Java ConcurrentHashMap的使用示例,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-04-04
  • 浅谈java Collection中的排序问题

    浅谈java Collection中的排序问题

    下面小编就为大家带来一篇浅谈java Collection中的排序问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • 关于Java Guava ImmutableMap不可变集合源码分析

    关于Java Guava ImmutableMap不可变集合源码分析

    这篇文章主要介绍Java Guava不可变集合ImmutableMap的源码分析的相关资料,需要的朋友可以参考下面具体的文章内容
    2021-09-09

最新评论