Ajax登錄驗(yàn)證實(shí)現(xiàn)代碼
更新時(shí)間:2021年07月12日 10:06:33 作者:wbcra
這篇文章主要為大家詳細(xì)介紹了jQuery+ajax實(shí)現(xiàn)用戶(hù)登錄驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
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中的參數(shù) preparedStatement Object[] arr 用來(lái)補(bǔ)全sql中的? public static int DML(String sql , Object[] arr ){ // 可變參數(shù) Object ... arr 0~n個(gè)參數(shù) int update = 0 ; try{ preparedStatement = connection.prepareStatement(sql); // 循環(huán)完畢,會(huì)將sql中全部? 補(bǔ)充齊 for (int i = 0 ; i < arr.length ; i++){ preparedStatement.setObject(i+1 , arr[i] ); } update = preparedStatement.executeUpdate(); }catch (SQLException e){ e.printStackTrace(); } return update ; } // 帶參查詢(xún) DQL 操作 public static ResultSet DQL(String sql , Object[] arr ){ try{ preparedStatement = connection.prepareStatement(sql); // 循環(huán)完畢,會(huì)將sql中全部? 補(bǔ)充齊 for (int i = 0 ; i < arr.length ; i++){ preparedStatement.setObject(i+1 , arr[i] ); } resultSet = preparedStatement.executeQuery(); }catch (SQLException e){ e.printStackTrace(); } return resultSet ; } // 單獨(dú)提供關(guān)閉資源方法 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層,依賴(lài)于dao層 制定某一條sql執(zhí)行 UserDao userDao = new UserDao(); int select = userDao.selectByAccountAndPassword(account ,password); if (select>0){ return true; }else { return false; } } public boolean check(String account) { //service層,依賴(lài)于dao層 制定某一條sql執(zhí)行 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.設(shè)置用戶(hù)輸入的編碼格式,因?yàn)橛锌赡苁侵形? req.setCharacterEncoding("utf-8"); //2.獲取用戶(hù)數(shù)輸入的內(nèi)容 String account = req.getParameter("account"); String password = req.getParameter("password"); //3.依據(jù)service來(lái)判斷當(dāng)前登錄的賬號(hào)密碼是否正確 //User表 定義一個(gè)UserService 用來(lái)處理 所有和user有關(guān)的業(yè)務(wù) UserService userService = new UserService(); //login方法傳入賬號(hào)密碼 返回是否登錄成功 boolean flag = userService.login(account,password); //4.依據(jù)是否登錄成功,進(jìn)行控制頁(yè)面的跳轉(zhuǎn) if (flag){ req.getRequestDispatcher("success.jsp").forward(req,resp); }else { req.setAttribute("msg","密碼錯(cuò)誤,請(qǐng)重新登錄!"); 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.設(shè)置用戶(hù)輸入的編碼格式,因?yàn)橛锌赡苁侵形? req.setCharacterEncoding("utf-8"); //2.獲取用戶(hù)數(shù)輸入的內(nèi)容 String account = req.getParameter("account"); //3.依據(jù)service來(lái)判斷當(dāng)前登錄的賬號(hào)密碼是否正確 //User表 定義一個(gè)UserService 用來(lái)處理 所有和user有關(guān)的業(yè)務(wù) UserService userService = new UserService(); //使用check方法 檢出是否存在用戶(hù) true 存在用戶(hù) 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) { //執(zhí)行select查詢(xún)sql語(yǔ)句 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) { //執(zhí)行select查詢(xún)sql語(yǔ)句 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>登錄頁(yè)</title> <script src="js/jquery-3.6.0.js"></script> </head> <body> <form action="login"> 賬號(hào):<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校驗(yàn) ,當(dāng)前賬號(hào)是否存在 $("#input1").blur(function () { // 發(fā)送ajax請(qǐng)求,獲取到當(dāng)前輸入的賬號(hào)是否存在,寫(xiě)入到span1標(biāo)簽中 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){ // 表示存在當(dāng)前賬號(hào) // 可以登錄 $("#span1").html("可以登錄"); $("#span1").attr("style","color:green"); }else { $("#span1").html("未注冊(cè)"); $("#span1").attr("style","color:red"); } } }) }) </script> </html>
相關(guān)文章
Java選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的使用詳解
循環(huán)結(jié)構(gòu)是指在程序中需要反復(fù)執(zhí)行某個(gè)功能而設(shè)置的一種程序結(jié)構(gòu)。它由循環(huán)體中的條件,判斷繼續(xù)執(zhí)行某個(gè)功能還是退出循環(huán),選擇結(jié)構(gòu)用于判斷給定的條件,根據(jù)判斷的結(jié)果判斷某些條件,根據(jù)判斷的結(jié)果來(lái)控制程序的流程2022-03-03基于java HashMap插入重復(fù)Key值問(wèn)題
這篇文章主要介紹了基于java HashMap插入重復(fù)Key值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Spring整合quartz做定時(shí)任務(wù)的示例代碼
這篇文章主要介紹了在spring項(xiàng)目使用quartz做定時(shí)任務(wù),首先我這里的項(xiàng)目已經(jīng)是一個(gè)可以跑起來(lái)的完整項(xiàng)目,web.xml里面的配置我就不貼出來(lái)了,具體實(shí)例代碼跟隨小編一起看看吧2022-01-01SpringCloud Alibaba項(xiàng)目實(shí)戰(zhàn)之nacos-server服務(wù)搭建過(guò)程
Nacos 是阿里巴巴推出來(lái)的一個(gè)新開(kāi)源項(xiàng)目,這是一個(gè)更易于構(gòu)建云原生應(yīng)用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺(tái)。本章節(jié)重點(diǎn)給大家介紹SpringCloud Alibaba項(xiàng)目實(shí)戰(zhàn)之nacos-server服務(wù)搭建過(guò)程,感興趣的朋友一起看看吧2021-06-06SpringBoot實(shí)現(xiàn)動(dòng)態(tài)控制定時(shí)任務(wù)支持多參數(shù)功能
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)動(dòng)態(tài)控制定時(shí)任務(wù)-支持多參數(shù)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05