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

AJAX+JAVA用戶登陸注冊(cè)驗(yàn)證的實(shí)現(xiàn)代碼

 更新時(shí)間:2018年06月04日 09:38:52   作者:haostarlilac  
這篇文章主要介紹了AJAX+JAVA用戶登陸注冊(cè)驗(yàn)證的實(shí)現(xiàn)代碼,通過(guò)ajax異步刷新頁(yè)面驗(yàn)證用戶輸入的賬號(hào)密碼是否在數(shù)據(jù)庫(kù)中存在。非常具有實(shí)用價(jià)值,需要的朋友可以參考下

需求

通過(guò)ajax異步刷新頁(yè)面驗(yàn)證用戶輸入的賬號(hào)密碼是否在數(shù)據(jù)庫(kù)中存在。

技術(shù)棧

JSP+Servlet+Oracle

具體代碼

JSP部分:

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<script>
  function createXMLHttpRequest() {
    try {
      xmlHttp = new XMLHttpRequest();//除了ie之外的其他瀏覽器使用ajax
    } catch (tryMS) {
      try {
        xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");//ie瀏覽器適配
      } catch (otherMS) {
        try {
          xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//ie瀏覽器適配
        } catch (failed) {
          xmlHttp = null;
        }
      }
    }
    return xmlHttp;
  }
  //提交請(qǐng)求
  var xmlHttp;
  function checkUserExists() {
    var u = document.getElementById("uname");
    var username = u.value;
    if (username == "") {
      alert("請(qǐng)輸入用戶名");
      u.focus();
      return false;
    }
    //訪問(wèn)字符串
    var url = "loginServlet";
    //創(chuàng)建核心xmlhttprequest組件
    xmlHttp = createXMLHttpRequest();
    //設(shè)置回調(diào)函數(shù)
    xmlHttp.onreadystatechange = proessRequest;
    //初始化核心組件
    xmlHttp.open("post", url, true);
    //設(shè)置請(qǐng)求頭
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
    //發(fā)送請(qǐng)求
    xmlHttp.send("uname="+username);
  }
  //回調(diào)函數(shù)
  function proessRequest() {
    if (xmlHttp.status==200 && xmlHttp.readyState == 4) {
      var b = xmlHttp.responseText;//得到服務(wù)端的輸出結(jié)果
      if (b=="true") {
        document.getElementById("alert").innerHTML = "<font color='red'>用戶名已經(jīng)存在!</font>";
      }else {
        document.getElementById("alert").innerHTML = "<font color='blue'>用戶名可以使用!</font>";
      }
    }
  }
</script>
<body>
  請(qǐng)輸入用戶名:
  <input id="uname" name="uname" type="text" onblur="checkUserExists()" /><div id="alert" style="display:inline"></div>
</body>
</html>

這里沒(méi)有用Dao層,直接用servlet和service層進(jìn)行驗(yàn)證。

下面是service下JDBC查詢的代碼:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.stx.service.User;
import com.stx.service.ConnectionManager;

public class ajaxService {
  public boolean searchUser (String uname) {
  //jdbc查詢用戶名是否存在
    boolean isFalse = false;
    Connection connection = null;
    Statement stmt = null;
    ResultSet rs = null;
    connection = ConnectionManager.getConnection();
    try {
      stmt = connection.createStatement();
      String sql = "select * from user_b where uname='"+uname+"'";//sql語(yǔ)句
      rs = stmt.executeQuery(sql);
      isFalse=rs.next();

    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      ConnectionManager.closeResultSet(rs);
      ConnectionManager.closeStatement(stmt);
      ConnectionManager.closeConnection(connection);
    }
    return isFalse;
  }
}

JDBC連接代碼:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class ConnectionManager {
  private final static String DRIVER_CLASS = "oracle.jdbc.OracleDriver";
  private final static String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
  private final static String DBNAME = "ibook";
  private final static String PASSWORD = "qwer";

  public static Connection getConnection() {
    Connection connection = null;
    try {
      Class.forName(DRIVER_CLASS);
      connection = DriverManager.getConnection(URL, DBNAME, PASSWORD);
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return connection;
  }

  public static void closeResultSet(ResultSet rs) {
    try {
      if (rs != null)
        rs.close();
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }

  public static void closeConnection(Connection connection) {
    try {
      if (connection != null && !connection.isClosed())
        connection.close();
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }

  public static void closeStatement(Statement stmt) {
    try {
      if (stmt != null)
        stmt.close();
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }
}

關(guān)于user類:

 public class User {
    private String uname;
    public User() {
      super();
    }
    public User(String uname) {
      super();
      this.uname = uname;
  
    }
  
    public String getUname() {
      return uname;
    }
    public void setUname(String uname) {
      this.uname = uname;
    }

關(guān)于控制層servlet:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.stx.service.ajaxService;

/**
 * Servlet implementation class loginServlet
 */
public class loginServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;
  private ajaxService ajaxService = new ajaxService();

  /**
   * @see HttpServlet#HttpServlet()
   */
  public loginServlet() {
    super();
    // TODO Auto-generated constructor stub
  }

  /**
   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    String uname = request.getParameter("uname");//獲取到輸入的用戶名
    boolean isUname = ajaxService.searchUser(uname);//調(diào)用service中的查詢方法
    response.setCharacterEncoding("UTF-8");//設(shè)置字符編碼
    PrintWriter out = response.getWriter();
    out.print(isUname);
    out.flush();
    out.close();//關(guān)閉資源
  }

  /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java自定義函數(shù)調(diào)用方法解析

    Java自定義函數(shù)調(diào)用方法解析

    這篇文章主要介紹了java自定義函數(shù)調(diào)用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • JAVA為什么要使用封裝及如何封裝經(jīng)典實(shí)例

    JAVA為什么要使用封裝及如何封裝經(jīng)典實(shí)例

    這篇文章主要給大家介紹了關(guān)于JAVA為什么要使用封裝及如何封裝的相關(guān)資料,封裝就是將屬性私有化,提供公有的方法訪問(wèn)私有屬性,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • JAVA內(nèi)存模型(JMM)詳解

    JAVA內(nèi)存模型(JMM)詳解

    這篇文章主要介紹了JAVA內(nèi)存模型(JMM)詳解的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • springboot對(duì)接支付寶支付接口(詳細(xì)開(kāi)發(fā)步驟總結(jié))

    springboot對(duì)接支付寶支付接口(詳細(xì)開(kāi)發(fā)步驟總結(jié))

    這篇文章主要介紹了springboot對(duì)接支付寶支付接口(詳細(xì)開(kāi)發(fā)步驟總結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 基于JPA中的@Basic注解詳解

    基于JPA中的@Basic注解詳解

    這篇文章主要介紹了JPA中的@Basic注解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java instanceof用法詳解及實(shí)例代碼

    Java instanceof用法詳解及實(shí)例代碼

    這篇文章主要介紹了Java instanceof用法詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • JAVA基于Redis實(shí)現(xiàn)計(jì)數(shù)器限流的使用示例

    JAVA基于Redis實(shí)現(xiàn)計(jì)數(shù)器限流的使用示例

    計(jì)數(shù)器法是限流算法里最簡(jiǎn)單也是最容易實(shí)現(xiàn)的一種算法,本文主要介紹了JAVA基于Redis實(shí)現(xiàn)計(jì)數(shù)器限流的使用示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Java中volatile關(guān)鍵字的作用是什么舉例詳解

    Java中volatile關(guān)鍵字的作用是什么舉例詳解

    這篇文章主要介紹了Java中volatile關(guān)鍵字的作用是什么的相關(guān)資料,volatile關(guān)鍵字在Java中用于修飾變量,提供可見(jiàn)性和禁止指令重排的特性,但不保證原子性,它通過(guò)內(nèi)存屏障實(shí)現(xiàn)這些特性,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • Spring security實(shí)現(xiàn)權(quán)限管理示例

    Spring security實(shí)現(xiàn)權(quán)限管理示例

    這篇文章主要介紹了Spring security實(shí)現(xiàn)權(quán)限管理示例,這里整理了詳細(xì)的代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • SpringSecurity拋出異常但AccessDeniedHandler不生效的解決

    SpringSecurity拋出異常但AccessDeniedHandler不生效的解決

    本文主要介紹了SpringSecurity拋出異常但AccessDeniedHandler不生效的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01

最新評(píng)論

邹平县| 通河县| 红桥区| 十堰市| 富宁县| 鄯善县| 南木林县| 宜春市| 平南县| 昌邑市| 天祝| 张北县| 温州市| 保定市| 大竹县| 邵武市| 榆中县| 潼南县| 台安县| 辽宁省| 吴堡县| 涟水县| 城口县| 公安县| 镇赉县| 澄城县| 阳原县| 长顺县| 逊克县| 高碑店市| 大关县| 西藏| 新安县| 彭州市| 赤城县| 平武县| 磐石市| 基隆市| 志丹县| 含山县| 容城县|