软件编程
位置:首页>> 软件编程>> java编程>> Ajax登录验证实现代码

Ajax登录验证实现代码

作者:wbcra  发布时间:2022-02-22 10:47:51 

标签: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>

来源:https://blog.csdn.net/wbcra/article/details/118014948

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com