好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Ajax登录验证实现代码

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

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();

         }

     }

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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 ;

         }

     }

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

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);

         }

     }

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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);

     }

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

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;

     }

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

<%@ 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

查看更多关于Ajax登录验证实现代码的详细内容...

  阅读:13次