欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)的使用詳解

    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
  • IDEA開(kāi)啟Run Dashboard的幾種方式

    IDEA開(kāi)啟Run Dashboard的幾種方式

    Run Dashboard 是 IntelliJ IDEA 中的一個(gè)工具窗口,用于管理和監(jiān)視項(xiàng)目中正在運(yùn)行的應(yīng)用程序和配置,它提供了一種集中管理運(yùn)行和調(diào)試過(guò)程的方式,本文給大家介紹了IDEA開(kāi)啟Run Dashboard的幾種方式,需要的朋友可以參考下
    2024-03-03
  • 基于java HashMap插入重復(fù)Key值問(wèn)題

    基于java HashMap插入重復(fù)Key值問(wèn)題

    這篇文章主要介紹了基于java HashMap插入重復(fù)Key值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Spring整合quartz做定時(shí)任務(wù)的示例代碼

    Spring整合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-01
  • SpringCloud Alibaba項(xiàng)目實(shí)戰(zhàn)之nacos-server服務(wù)搭建過(guò)程

    SpringCloud 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-06
  • Netty分布式ByteBuf緩沖區(qū)分配器源碼解析

    Netty分布式ByteBuf緩沖區(qū)分配器源碼解析

    這篇文章主要為大家介紹了Netty分布式ByteBuf緩沖區(qū)分配器源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • SpringBoot實(shí)現(xiàn)動(dòng)態(tài)控制定時(shí)任務(wù)支持多參數(shù)功能

    SpringBoot實(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
  • 小白教程! Linux服務(wù)器上JDK安裝配置方法

    小白教程! Linux服務(wù)器上JDK安裝配置方法

    這篇文章主要為大家詳細(xì)介紹了Linux服務(wù)器上JDK安裝配置方法,小白教程!具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 自己寫(xiě)的java日志類(lèi)和方法代碼分享

    自己寫(xiě)的java日志類(lèi)和方法代碼分享

    這篇文章主要介紹了一個(gè)自己寫(xiě)的java日志類(lèi)和方法,下面把代碼分享給大家
    2014-01-01
  • java垃圾收集器與內(nèi)存分配策略詳解

    java垃圾收集器與內(nèi)存分配策略詳解

    本篇文章主要介紹了Java垃圾收集器與內(nèi)存分配策略的方法和原理總結(jié),Java垃圾回收器是Java虛擬機(jī)的重要模塊,具有一定的參考價(jià)值,有興趣的可以了解一下
    2021-08-08

最新評(píng)論