1. 程式人生 > >Ajax概述和判斷用戶名是否存在的簡單代碼練習

Ajax概述和判斷用戶名是否存在的簡單代碼練習

count tint on() 顯示 enter con execute -c 動態

在本代碼中主要體現,Ajax實現了部分位置的刷新。不需要重新刷新網頁,重新請求服務器。下面用過代碼來對Ajax更深的認識

這裏需要創建,一個jsp文件(顯示登錄界面),js文件(對Ajax的主要設置),一個servlet(主要用作和數據庫連接和邏輯的控制)

1.在web中創建一個Lession7jsp頁面,jsp中主要寫了登錄頁面的用戶名和密碼和按鈕

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>AJAX學習-用戶登錄</
title> <script type="text/javascript" src="js/Lession7.js"></script>//對後面js頁面進行調用。 </head> <body> <table align="center" border="1px" cellspacing="0px" cellpadding="10px"width="500"> <tr> <td align="right" width="30%">用戶名:</td> <
td align="left" width="70%"> <input type="text" name="name" id="user"/><span id="span"></span> </td> </tr> <tr> <td align="right"width="30%">密碼:</td> <td align="left" width="70%"> <input
type="password" name="pwd" id="pwd"/></span> </td> </tr> <tr> <td align="center" colspan="2"> <input type="button" value="註冊"> </td> </tr> </table> </body> </html>

2.在web中新建一個叫js的文件夾,在js文件夾裏面新建Lession.js文件。Ajax的設置都是JS中設置的,所以這個js文件就是Ajax學習的精髓和重點了。

/window.onload的意思是,頁面加載就會顯示這個方法
window.onload = function() {
//獲取jsp頁面中的用戶名<input name="user">標簽的name
var nameObj = document.getElementById("user")
//nameObj.onblur:進行綁定,當失去焦點時,就會調用下面的函數
nameObj.onblur = function () {
//獲得標簽的name屬性的值,以此來獲取瀏覽器輸入的內容
var name = this.value;
/*alert(name);*/
//第一步:初始化XMLHttpRequest,創建異步對象,因為其他瀏覽器和老版本的IE瀏覽器創建對象的過程不一樣,所有這裏需要判斷
//(第一步對AJAX初始化,在網上搜索有好多,不用可以把這一步的代碼背下來,理解即可)
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//第二步:指定回調函數,並對服務器的交互狀態進行判斷
//onreadystatechange是AJAX對象的一個屬性,因為Ajax是異步處理的,所以需要一個這樣的回調
xmlhttp.onreadystatechange=function(){
//readyState對服務器的狀態,status是HTTP的狀態
if(xmlhttp.readyState==4&&xmlhttp.status==200){
//這裏用到了JSON知識點,主要實現了把serlvt頁面的數據傳給js
//所以,這裏的數據是servlt裏傳過來的。
var obj = eval("("+xmlhttp.responseText+")");// eval()獲取返回值
if (obj.flag==0){
document.getElementById("span").innerText="用戶名可用";
}else if (obj.flag==1) {
document.getElementById("span").innerText="用戶名已經存在!";
}
}
}
//第三步:用open("1","2","3")連接服務器 ,
// 1裏面放post或者get,2裏面放的是servlet在web.xml中定義的。3:true代表異步處理
xmlhttp.open("post","/ServletXml?name="+name,true);
//第四步:向服務器發送請求,
xmlhttp.send(null);
}
}

3.在src中新建servlet,我這個項目連接了mysql數據庫,如果沒有數據庫,可以直接把裏面的數據寫死了。這兩個可以選擇一個測試。

例如:1.

@Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String uname = request.getParameter("uname");
        //利用JDBC檢索uname是否在用戶表中存在
        PrintWriter out = response.getWriter();
        //向客戶端輸出響應結果
        out.print("{‘flag‘:1}");
    }

例如2.我的是動態連接數據庫的。

package com.wgh;

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;
import java.io.PrintWriter;
import java.sql.*;

@WebServlet(name = "ServletXml")
public class ServletXml extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String name = request.getParameter("name");
            System.out.println(name);
            PrintWriter pw = response.getWriter();
            String[] str = new String[10];
            //進行數據庫鏈接,查詢數據庫中用戶名是否存在的操作
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/z_shop";
            String username = "root";
            String pwd = "root";
            Connection conn = DriverManager.getConnection(url,username,pwd);
            String sql = "select count(*) FROM  td_name where Username=? ";
            PreparedStatement ps =conn.prepareStatement(sql);
            ps.setString(1,name);
            ResultSet rs = ps.executeQuery();
            rs.next();
            System.out.println(rs.getInt(1));
            if (rs.getInt(1)==0) {
                pw.print("{‘flag‘:0}");
            } else{
                pw.print("{‘flag‘:1}");
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        System.out.println(name);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request,response);
    }
}

最後記得在web.xml文件中進行註冊哦!

 <servlet>
        <servlet-name>ServletXml</servlet-name>
        <servlet-class>com.wgh.ServletXml</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>ServletXml</servlet-name>
        <url-pattern>/ServletXml</url-pattern>
    </servlet-mapping>

註意:

1.本項目中用的JSON知識點,是需要導JSON的jar包的哦,

2.在src中Servle一定要放在包中,默認包可能不識別。

如果有錯的地方請多多包含。代碼我運行過,可以起來的。

技術分享圖片

  

Ajax概述和判斷用戶名是否存在的簡單代碼練習