最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ajax登錄驗證實現(xiàn)代碼

 更新時間:2021年07月12日 10:06:33   作者:wbcra  
這篇文章主要為大家詳細介紹了jQuery+ajax實現(xiàn)用戶登錄驗證,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
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 用來補全sql中的?
    public static int DML(String sql , Object[] arr  ){  // 可變參數(shù) Object ... arr  0~n個參數(shù)
        int update = 0 ;
        try{
            preparedStatement = connection.prepareStatement(sql);
//            循環(huán)完畢,會將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);
//            循環(huán)完畢,會將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 ;
    }
    //    單獨提供關(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層,依賴于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層,依賴于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è)置用戶輸入的編碼格式,因為有可能是中文
        req.setCharacterEncoding("utf-8");
        //2.獲取用戶數(shù)輸入的內(nèi)容
        String account = req.getParameter("account");
        String password = req.getParameter("password");
        //3.依據(jù)service來判斷當(dāng)前登錄的賬號密碼是否正確
        //User表 定義一個UserService 用來處理 所有和user有關(guān)的業(yè)務(wù)
        UserService userService = new UserService();
        //login方法傳入賬號密碼  返回是否登錄成功
        boolean flag = userService.login(account,password);
        //4.依據(jù)是否登錄成功,進行控制頁面的跳轉(zhuǎn)
        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.設(shè)置用戶輸入的編碼格式,因為有可能是中文
        req.setCharacterEncoding("utf-8");
        //2.獲取用戶數(shù)輸入的內(nèi)容
        String account = req.getParameter("account");
        //3.依據(jù)service來判斷當(dāng)前登錄的賬號密碼是否正確
        //User表 定義一個UserService 用來處理 所有和user有關(guān)的業(yè)務(wù)
        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) {
        //執(zhí)行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) {
        //執(zhí)行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校驗 ,當(dāng)前賬號是否存在
    $("#input1").blur(function () {
        //    發(fā)送ajax請求,獲取到當(dāng)前輸入的賬號是否存在,寫入到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){
                    // 表示存在當(dāng)前賬號
                    // 可以登錄
                    $("#span1").html("可以登錄");
                    $("#span1").attr("style","color:green");
                }else {
                    $("#span1").html("未注冊");
                    $("#span1").attr("style","color:red");
                }
            }
        })
    })
</script>
</html>

相關(guān)文章

  • Spring中的路徑匹配器AntPathMatcher詳解

    Spring中的路徑匹配器AntPathMatcher詳解

    這篇文章主要介紹了Spring中的路徑匹配器AntPathMatcher詳解,Spring的PathMatcher路徑匹配器接口,用于支持帶通配符的資源路徑匹配,本文提供了部分實現(xiàn)代碼,需要的朋友可以參考下
    2023-09-09
  • 從java反編譯及字節(jié)碼角度探索分析String拼接字符串效率

    從java反編譯及字節(jié)碼角度探索分析String拼接字符串效率

    這篇文章主要介紹了從java反編譯及字節(jié)碼角度探索分析String拼接字符串效率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • JavaEE中volatile、wait和notify詳解

    JavaEE中volatile、wait和notify詳解

    這篇文章主要給大家介紹了關(guān)于JavaEE中volatile、wait和notify的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-02-02
  • Java實現(xiàn)的properties文件動態(tài)修改并自動保存工具類

    Java實現(xiàn)的properties文件動態(tài)修改并自動保存工具類

    這篇文章主要介紹了Java實現(xiàn)的properties文件動態(tài)修改并自動保存工具類,可實現(xiàn)針對properties配置文件的相關(guān)修改與保存功能,需要的朋友可以參考下
    2017-11-11
  • SpringBoot整合Spring Data Elasticsearch的過程詳解

    SpringBoot整合Spring Data Elasticsearch的過程詳解

    這篇文章主要介紹了SpringBoot整合Spring Data Elasticsearch的過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Java讓多線程按順序執(zhí)行的幾種方法

    Java讓多線程按順序執(zhí)行的幾種方法

    本文主要介紹了Java讓多線程按順序執(zhí)行的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 解讀Java中char類型相加的問題

    解讀Java中char類型相加的問題

    這篇文章主要介紹了解讀Java中char類型相加的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • JAVA?OOM內(nèi)存溢出問題深入解析

    JAVA?OOM內(nèi)存溢出問題深入解析

    這篇文章主要為大家介紹了JAVA?OOM內(nèi)存溢出問題深入解析,在生產(chǎn)環(huán)境搶修中,我們經(jīng)常會碰到應(yīng)用系統(tǒng)java內(nèi)存OOM的情況,這個問題非常常見,今天我們就這個問題來深入學(xué)習(xí)探討一下
    2023-10-10
  • Java畢業(yè)設(shè)計實戰(zhàn)之共享租車信息管理系統(tǒng)的實現(xiàn)

    Java畢業(yè)設(shè)計實戰(zhàn)之共享租車信息管理系統(tǒng)的實現(xiàn)

    這是一個使用了java+Jsp+Servlet+Jdbc+Mysql開發(fā)的共享租車信息管理系統(tǒng),是一個畢業(yè)設(shè)計的實戰(zhàn)練習(xí),具有租車管理該有的所有功能,感興趣的朋友快來看看吧
    2022-02-02
  • SpringBoot實現(xiàn)API接口的完整代碼

    SpringBoot實現(xiàn)API接口的完整代碼

    這篇文章主要給大家介紹了關(guān)于SpringBoot實現(xiàn)API接口的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評論

云龙县| 宜君县| 遂平县| 辛集市| 南澳县| 额尔古纳市| 蓬莱市| 尚志市| 鸡东县| 公安县| 应城市| 错那县| 丰宁| 鱼台县| 江北区| 武鸣县| 上杭县| 黄石市| 永仁县| 漳州市| 霍山县| 抚远县| 巴彦县| 定安县| 荔浦县| 苍山县| 城口县| 内丘县| 合山市| 霍山县| 衡东县| 广元市| 黄石市| 上蔡县| 潞城市| 镇坪县| 抚松县| 太谷县| 阳泉市| 湖口县| 类乌齐县|