最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java Web:自己想出的連接數(shù)據(jù)庫的AJAX重名驗(yàn)證實(shí)例源碼,PPT,學(xué)習(xí)筆記【詩書畫唱】

2020-11-08 21:26 作者:詩書畫唱  | 我要投稿

很多東西要從記錄小且簡(jiǎn)單的例子開始——詩書畫唱

下面是我自己想出的判斷數(shù)據(jù)庫中查詢用戶名,是否重名的判斷方法:



create table user(

id int primary key auto_increment,


act varchar(100) unique,


trueName varchar(100),

pwd varchar(100) ,

sex varchar(100) ,


sfid varchar(100),

phone varchar(100),


Email varchar(100) ,


tid int,

ShippingAddress varchar(100),

ZcTime timestamp default now(),

touXiangImg varchar(100)

);





insert into User(


act ,


trueName ,

pwd ,

sex,


sfid ,

phone ,


Email ,


tid,

ShippingAddress,touXiangImg) values?

?("1","真實(shí)姓名","1","男","11010519491231002X","16666666666","2531894166@qq.com",1,'北京市 北京市轄區(qū) 東城區(qū)','imgLogo/MyLogo.jpg'),

?("2","真實(shí)姓名","2","男","11010519491231002X","16666666666","2531894166@qq.com",2,'北京市 北京市轄區(qū) 東城區(qū)','imgLogo/MyLogo.jpg'),

("SSHC520","真實(shí)姓名","123456Aa","男","11010519491231002X","16666666666","2531894166@qq.com",1,'北京市 北京市轄區(qū) 東城區(qū)','imgLogo/MyLogo.jpg'),

?("SSHC666","真實(shí)姓名","123456Aa","男","11010519491231002X","16666666666","2531894166@qq.com",2,'北京市 北京市轄區(qū) 東城區(qū)','imgLogo/MyLogo.jpg');


package bean;


import java.sql.Timestamp;

import java.util.Date;


public class User {

private Integer id;

private String act;

private String pwd;

private Integer tid;

private String? trueName;?


private String sfid;

private String? phone;


private String? sex;


private String? Email;

private String ShippingAddress;

private Timestamp? ZcTime;

private String TouXiangImg;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getAct() {

return act;

}

public void setAct(String act) {

this.act = act;

}

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd;

}

public Integer getTid() {

return tid;

}

public void setTid(Integer tid) {

this.tid = tid;

}

public String getTrueName() {

return trueName;

}

public void setTrueName(String trueName) {

this.trueName = trueName;

}

public String getSfid() {

return sfid;

}

public void setSfid(String sfid) {

this.sfid = sfid;

}

public String getPhone() {

return phone;

}

public void setPhone(String phone) {

this.phone = phone;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getEmail() {

return Email;

}

public void setEmail(String email) {

Email = email;

}

public String getShippingAddress() {

return ShippingAddress;

}

public void setShippingAddress(String shippingAddress) {

ShippingAddress = shippingAddress;

}

public Timestamp getZcTime() {

return ZcTime;

}

public void setZcTime(Timestamp zcTime) {

ZcTime = zcTime;

}

public String getTouXiangImg() {

return TouXiangImg;

}

public void setTouXiangImg(String touXiangImg) {

TouXiangImg = touXiangImg;

}


}


package com.SSHC.servlet;


import java.io.IOException;

import java.util.List;


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 DAO.UserDao;

import bean.User;


/**

?* Servlet implementation class DupServlet

?*/

@WebServlet("/loginServlet")

public class loginServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

? ? ? ?

? ? /**

? ? ?* @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 {

// TODO Auto-generated method stub

this.doPost(request, response);

}


/**

* @see HttpServlet#doPost(HttpServletRequest?

* request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request,

HttpServletResponse response)?

throws ServletException, IOException {

// TODO Auto-generated method stub

//——————

//獲取賬號(hào)和密碼

String act = request.getParameter("act");

String pwd = request.getParameter("pwd");

UserDao ud = new UserDao();



?List<Object> list;


try {

list = ud.selectAll(User.class,null);

String msg = "";

?int i=1;

? for(Object o : list) {


?User u = (User)o;

System.out.println(u.getAct());

//重名驗(yàn)證

if(u.getAct().equals(act)) {

i=i*0;

} else if(act.length()==0&&!u.getAct().equals(act)){

i=i;

}


else if(act.length()>0&&!u.getAct().equals(act)){

i=i*2;

}



? }

??

? if(i==0) {

msg = "該賬號(hào)名已被使用";

} else if(i==1){

msg = "請(qǐng)輸入賬號(hào)名,賬號(hào)名不能為空";

}


else if(i%2==0){

msg = "該賬號(hào)名可以使用";

}

? //中文亂碼處理

response.setCharacterEncoding("utf-8");

//將msg返回到j(luò)sp頁面中去

//servlet中的數(shù)據(jù)只能在ajax的回調(diào)函數(shù)中才能拿到

response.getWriter().write(msg);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}






}


}

package DAO;


import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Timestamp;

import java.util.ArrayList;

import java.util.List;


import utils.DBUtils;




//萬能Dao

//T不是一個(gè)具體的java類,他是一個(gè)泛型參數(shù)


public class BaseDao<T> {


? ? public<T> List<T>selectAll(Class cls,String SQL) throws Exception{

? ? Connection conn = null;

? ? PreparedStatement pstm = null;

? ? ResultSet rs = null;

? ? List<T>list = new ArrayList<T>();

? ? //通過反射技術(shù)獲取表的名字,表的名字剛好和bean的名字一樣

? ? //獲取類的類名

? ? String tableName = cls.getSimpleName();

? ? String sql=null;

? ? if(SQL==null){

? ? sql = "select * from " + tableName;}

? ? else if(SQL!=null){

? ? ? ? sql = "select * from " + tableName

? ? ? ? +SQL;}

? ? System.out.println(sql);

? ?

? ? conn = DBUtils.getConn();

? ? pstm = conn.prepareStatement(sql);

? ? rs = pstm.executeQuery();

? ? //獲取bean中的所有屬性名

Field []fs = cls.getDeclaredFields();

? ? while(rs.next()) {

? ? //通過反射創(chuàng)建出cls對(duì)象的實(shí)例

? ? Object obj = cls.newInstance();

? ? for(int i = 0;i < fs.length;i ++) {

? ? //bean中的屬性名

? ? String fname = fs[i].getName();

? ? //獲取bean中的屬性的類型

? ? Class type = fs[i].getType();

? ? Object o = rs.getObject(fname);

? ? //System.out.println(o);?

? ? //將屬性對(duì)應(yīng)的set方法名拼接出來

? ? //取出屬性名的首字母,將它變成大寫

? ?String methodName = "set"?

? ? + fname.substring(0,1).toUpperCase()?

? ? + fname.substring(1);

? ? //System.out.println(methodName);

? ? //通過反射調(diào)用set方法

? Method m = cls.getDeclaredMethod(methodName, type);

? ? System.out.println(m);

? ? m.invoke(obj, o);? ?

? ? }

list.add((T)obj);

? ? }

? ? return list;

? ? }

? ??

? ??

? ??

? ??

? ??

public static Integer countAdd;

? ? public Integer add(T t) throws Exception{

? ? Connection conn = null;

? ? PreparedStatement pstm = null;

Integer count = -1;

? ? String tableName = t.getClass().getSimpleName();

?//System.out.println(tableName);

StringBuilder sql = new StringBuilder("insert into "

?+ tableName + " (");

?//取出t對(duì)象中的所有的屬性名

? ? Field []fs = t.getClass().getDeclaredFields();

? ? String dot = "";

? ? for(int i = 0;i < fs.length;i ++) {

? ? sql.append(dot);

? ? String fname = fs[i].getName();

? ? sql.append(fname);

? ? dot = ",";

? ? }

? ? sql.append(")values(");

? ? String dot1 = "";

? ? for(int i = 0;i < fs.length;i ++) {

? ? sql.append(dot1);

? ? sql.append("?");

? ? dot1 = ",";

? ? }

? ? sql.append(")");

? ? //System.out.println(sql);

? ?

? ? conn = DBUtils.getConn();

? ? pstm = conn.prepareStatement(sql.toString());

? ? //調(diào)用t對(duì)象中所有的get方法

? ? for(int i = 0;i < fs.length;i ++) {

? ? //取出屬性名

? ? String fname = fs[i].getName();

? ? //拼接get方法

String methodName = "get"?

? ? + fname.substring(0,1).toUpperCase()

? ? + fname.substring(1);

? ? //取出需要調(diào)用的方法

Method m = t.getClass().getDeclaredMethod(methodName);

? ? //反射調(diào)用get方法

? ? Object val = m.invoke(t);

? ? System.out.println("新增的數(shù)據(jù)是:" + val);

? ? //設(shè)置占位符

? ? pstm.setObject(i + 1, val);

? ? }

? ? count = pstm.executeUpdate();

? ? countAdd=count;

? ? System.out.println(countAdd);

? ? return count;

? ? }

? ? public static Integer countUpdate;

? ? public Integer update(T t,String SQL) throws Exception{

? ?

? ? System.out.println("這時(shí)傳過來的SQL為:"+SQL);

? ? Connection conn = null;

PreparedStatement pstm = null;

Integer count = -1;


StringBuilder sql = new StringBuilder("update ");

//獲取表名,就是獲取t對(duì)象的類名

Class cls = t.getClass();

String tableName = cls.getSimpleName();

sql.append(tableName + " set ");

//獲取t對(duì)象的所有屬性名

Field[]fs = cls.getDeclaredFields();

//每個(gè)javabean的第一個(gè)屬性必須是id

//下標(biāo)是從1開始的,也就是排除了id屬性

String dot = "";

//定義一個(gè)List存放所有的修改的值

List<Object>params = new ArrayList<Object>();

for(int i = 0;i < fs.length;i ++) {

Field f = fs[i];

//獲取屬性名

String fname = f.getName();

System.out.println("下標(biāo)為"+i+"的屬性名:"+fname);

//調(diào)用getXXX方法來獲取t中的屬性值

String methodName = "get"?

+ fname.substring(0,1).toUpperCase()

+ fname.substring(1);

System.out.println(methodName);

//通過反射獲取方法對(duì)象

Method m = cls.getDeclaredMethod(methodName);

//反射調(diào)用getXXX方法

Object obj = m.invoke(t);

? ? ? ? ? ??

//當(dāng)獲取到的值不為空時(shí),才能進(jìn)行修改

if(obj != null) {

sql.append(dot);

sql.append(fname + " = ? ");



dot = ",";

params.add(obj);

}

}

//將id也放到params容器中去

// Method m1 = cls.getDeclaredMethod("getId");

Method m1 = cls.getDeclaredMethod(

"get"?

+fs[0].getName().substring(0,1)

.toUpperCase()

+ fs[0].getName().substring(1));

Object id = m1.invoke(t);

params.add(id);

//拼接where條件

fs[0].getName();

System.out.println("這個(gè)表的第一列的列名"

+ "(一般都為編號(hào)名)為:"+fs[0].getName());

// sql.append("where id = ? ");


if(SQL==null){

sql.append("where "+fs[0].getName()+" = ? ");}

System.out.println(sql);


conn = DBUtils.getConn();

System.out.println("SQL:"+SQL);

if(SQL!=null){


sql.append(SQL);?

}

System.out.println("這時(shí)執(zhí)行的修改語句為:"+sql);

pstm = conn.prepareStatement(sql.toString());

//設(shè)置占位符的值


if(SQL==null){

for(int i = 0;i < params.size();i ++) {

pstm.setObject(i + 1, params.get(i));

}}


if(SQL!=null){



pstm.setObject(1, "已支付");




}

System.out.println("這時(shí)執(zhí)行的修改語句為:"+sql);

count = pstm.executeUpdate();

countUpdate=count;

? ? return count;

? ? }

//? ? public Integer delete(Integer id){

//? ? return 0;

//? ? }

? //萬能Dao刪除方法

? ? public static Integer countDelete;

? ? public Integer delete(Integer id,Class cls)?

? ? throws Exception{

? ? Connection conn = null;

PreparedStatement pstm = null;

Integer count = -1;

String tableName = cls.getSimpleName();

Field[]fs = cls.getDeclaredFields();

for(int i = 0;i < fs.length;i ++) {

Field f = fs[i];

//獲取屬性名:fs[i].getName();

String fname = f.getName();

System.out.println("下標(biāo)為"+i+"的屬性名:"+fname);

//調(diào)用getXXX方法來獲取t中的屬性值

String methodName = "get"?

+ fname.substring(0,1).toUpperCase()

+ fname.substring(1);

System.out.println(methodName);

//通過反射獲取方法對(duì)象

Method m = cls.getDeclaredMethod(methodName);

//反射調(diào)用getXXX方法

//當(dāng)獲取到的值不為空時(shí),才能進(jìn)行修改


}



// String sql = "delete from " + tableName

// + " where id = ?";

String sql = "delete from " + tableName

+ " where "+fs[0].getName()+" = ?";

conn = DBUtils.getConn();

pstm = conn.prepareStatement(sql);

pstm.setInt(1, id);

count = pstm.executeUpdate();

countDelete=count;

? ? return count;

? ? }

? ? public static void main(String[] args) throws Exception {

?

? ?

? ? ? ?}

? ? ?

? ? ??

? ? ?

? ?


}

package utils;


import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.Properties;


public class DBUtils {

? ? private static String driverName;

? ? private static String url;

? ? private static String userName;

? ? private static String pwd;

? ? //靜態(tài)塊,隨著類加載而運(yùn)行的

? ? static{

? ? //讀取db.properties文件中的內(nèi)容:

? ? Properties prop = new Properties();

? ? InputStream is = DBUtils.class.getClassLoader()

? ? .getResourceAsStream("db.properties");

? ? try {

prop.load(is);

driverName = prop.getProperty("dn");

url = prop.getProperty("url");

userName = prop.getProperty("un");

pwd = prop.getProperty("up");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

? ? }

? ??

? ? public static Connection getConn(){

? ? Connection conn = null;

? ? try {

Class.forName(driverName);

conn = DriverManager.getConnection(url,userName,pwd);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

? ? return conn;

? ? }

? ??

? ? public static void close(ResultSet rs,

? ? PreparedStatement pstm

? ? ,Connection conn){

? ? try {

? ? if(rs != null) {

? ? rs.close();

? ? }

? ? if(pstm != null) {

? ? pstm.close();

? ? }

? ? if(conn != null) {

? ? conn.close();

? ? }

? ? } catch(Exception e) {

? ? e.printStackTrace();

? ? }

? ? }

}

dn=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/firstjsp?useUnicode=true&characterEncoding=utf-8

un=root

up=root



<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%

? ? String path = request.getContextPath();

? ? String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

? ? <head>

? ? ? ? <base hreff="<%=basePath%>">

? ? ? ? <title></title>

? ? ? ? <meta http-equiv="pragma" content="no-cache">

? ? ? ? <meta http-equiv="cache-control" content="no-cache">

? ? ? ? <meta http-equiv="expires" content="0">

? ? ? ? <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

? ? ? ? <meta http-equiv="description" content="This is my page">

? ? ? ? <script type="text/javascript">

? ? ? ? ? ? function dup(){

? ? ? ? ? ? //獲取輸入文本框中的內(nèi)容

? ? ? ? ? ? var act = document.getElementById('act').value;

? ? ? ? ? ? //console.log(act);

? ? ? ? ? ?

? ? ? ? ? ? var xhr = null;//ajax的核心對(duì)象

? ? ? ? ? ? if(window.XMLHttpRequest) {//判斷window對(duì)象中是否有XMLHttpRequest屬性

? ? ? ? ? ? xhr = new XMLHttpRequest();

? ? ? ? ? ? } else {//如果沒有XMLHttpRequest屬性,就使用ActiveXObject創(chuàng)建

? ? ? ? ? ? xhr = new ActiveXObject("Microsoft.XMLHTTP");

? ? ? ? ? ? }

? ? ? ? ? ? //將act傳遞到servlet中,也就是說要從js代碼跳轉(zhuǎn)到j(luò)ava代碼中去

? ? ? ? ? ? if(xhr) {//判斷xhr是否為null

? ? ? ? ? ? //設(shè)置ajax請(qǐng)求方式是post和提交的url路徑

? ? ? ? ? ? xhr.open('post','loginServlet');

? ? ? ? ? ? ? ? //設(shè)置ajax請(qǐng)求頭

? ? ? ? ? ? xhr.setRequestHeader("content-type",?

? ? ? ? "application/x-www-form-urlencoded");

? ? ? ? ? ? ? ? //設(shè)置回調(diào)函數(shù)

? ? ? ? ? ? ? ? xhr.onreadystatechange = function(){

? ? ? ? ? ? ? ? if (xhr.readyState == 4 && xhr.status == 200){

? ? ? ? ? ? ? ? //獲取servlet中傳遞過來的數(shù)據(jù)msg

? ? ? ? ? ? ? ? ? ? document.getElementById('ctx').innerHTML?

? ? ? ? ? ? ? ? ? ? ? ? = xhr.responseText;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? //提交到servlet中去

? ? ? ? ? ? ? ? //將act的值傳遞到servlet中去

? ? ? ? ? ? ? ? xhr.send('act=' + act + '&pwd=123');

? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? </script>

? ? </head>

? ? <body>

? ? ? ? <form action="" method="post">

? ? ? ? ? ? <input type="text" name="act" id="act" placeholder="請(qǐng)輸入賬號(hào)"

? ? ? ? ? ? ? ? onpropertychange="dup();" oninput="dup();" />

? ? ? ? ? ? <div id="ctx"></div>

? ? ? ? ? ?

? ? ? ? ? ? <input type="submit" value="登錄" />

? ? ? ? </form>

? ? </body>

</html>



小例子:不從數(shù)據(jù)庫查就是

這些是基礎(chǔ)代碼,我寫的代碼就是在這個(gè)基礎(chǔ)上升級(jí),自己想出來的。


個(gè)人理解:AJAX可以增加運(yùn)行流暢度。

個(gè)人理解:AJAX可以在輸入用戶名,判斷是否重名等的局部刷新同時(shí),可以做別的操作,比如輸入密碼,而且辛苦寫的密碼不會(huì)因?yàn)橐驗(yàn)樗⑿露貙憽?/p>





AJAX的PPT:




AJAX簡(jiǎn)介

AJAX即Asynchronous Javascript And XML(異步的javascript和XML),由HTML、Javascript、DHTML和DOM組成。它是一種交互式的應(yīng)用程序,也是一種構(gòu)建網(wǎng)站的強(qiáng)大方法,它的出現(xiàn)使高效的WEB程序開發(fā)稱為現(xiàn)實(shí)。



應(yīng)用程序的基本選擇

●桌面應(yīng)用程序:可能使用互聯(lián)網(wǎng)下載更新,但運(yùn)行這些應(yīng)用程序的代碼在桌面計(jì)算機(jī)上。與用戶進(jìn)行交互時(shí)響應(yīng)很快。

●WEB應(yīng)用程序:Web 應(yīng)用程序運(yùn)行在某處的 Web 服務(wù)器上 ,要通過 Web 瀏覽器訪問這種應(yīng)用程序。與用戶進(jìn)行交互式時(shí)需要等待服務(wù)器響應(yīng)和屏幕刷新,速度比較慢。



AJAX幫我們做什么?

AJAX 嘗試建立桌面應(yīng)用程序的功能和交互性與不斷更新的 Web 應(yīng)用程序之間的橋梁??梢允褂孟褡烂鎽?yīng)用程序中常見的動(dòng)態(tài)用戶界面和漂亮的控件,不過是在 Web 應(yīng)用程序中。



開發(fā)AJAX應(yīng)用程序需要掌握的技術(shù)

●HTML:用于建立 Web 表單并確定應(yīng)用程序其他部分使用的字段。

●JavaScript :是運(yùn)行 Ajax 應(yīng)用程序的核心代碼,幫助改進(jìn)與服務(wù)器應(yīng)用程序的通信。

●DHTML 或 Dynamic HTML:用于動(dòng)態(tài)更新表單。我們將使用 div、span 和其他動(dòng)態(tài) HTML 元素來標(biāo)記 HTML。

●文檔對(duì)象模型 DOM :用于(通過 JavaScript 代碼)處理 HTML 結(jié)構(gòu)和(某些情況下)服務(wù)器返回的 XML。


XMLHttpRequest對(duì)象

? ? ? ?在一般的 Web 應(yīng)用程序中,用戶填寫表單字段并單擊 Submit 按鈕后就進(jìn)入了等待處理階段,此時(shí)網(wǎng)頁呈現(xiàn)出空白狀態(tài),在服務(wù)器的響應(yīng)沒有完成前,用戶不能做任何事情,這就是交互性差的原因,用戶得不到立即反饋,因此感覺不同于桌面應(yīng)用程序。

? ? ? 而AJAX使用XMLHttpRequest對(duì)象,對(duì)提交的請(qǐng)求進(jìn)行幕后的處理,即網(wǎng)頁不會(huì)出現(xiàn)閃爍、消失或者延遲,用戶甚至不知道請(qǐng)求的發(fā)出。更棒的是,由于請(qǐng)求是異步發(fā)出的,你甚至可以不用等待服務(wù)器的響應(yīng),繼續(xù)輸入數(shù)據(jù)、滾動(dòng)屏幕和使用應(yīng)用程序。

? ? ? 最后,服務(wù)器將數(shù)據(jù)返回給前臺(tái)javascript代碼,后者決定如何處理這些數(shù)據(jù)。它可以迅速更新表單數(shù)據(jù),讓人感覺應(yīng)用程序是立即完成的,表單沒有提交或刷新而用戶得到了新數(shù)據(jù)。結(jié)果就是類似于桌面應(yīng)用程序的動(dòng)態(tài)、快速響應(yīng)、高交互性的體驗(yàn),但是背后又擁有互聯(lián)網(wǎng)的全部強(qiáng)大力量。

編寫第一個(gè)AJAX程序

對(duì)于JAVA方向,AJAX的后臺(tái)響應(yīng)代碼可以寫在JSP頁面里,也可以是一個(gè)servlet或者是struts框架中的action。

編寫第一個(gè)AJAX程序(續(xù))


在用戶交互頁面的script塊中,創(chuàng)建XMLHttpRequest對(duì)象

編寫第一個(gè)AJAX程序(續(xù))

在用戶交互頁面的script塊中,進(jìn)行AJAX請(qǐng)求,注意回調(diào)函數(shù)ajaxCallback,在后面會(huì)進(jìn)行定義。

編寫第一個(gè)AJAX程序(續(xù))

在用戶交互頁面的script塊中,創(chuàng)建回調(diào)函數(shù),對(duì)服務(wù)器發(fā)送來的響應(yīng)信息進(jìn)行處理。




HTTP 就緒狀態(tài)

HTTP 就緒狀態(tài)表示請(qǐng)求的狀態(tài)或情形。它用于確定該請(qǐng)求是否已經(jīng)開始、是否得到了響應(yīng)或者請(qǐng)求/響應(yīng)模型是否已經(jīng)完成。它還可以幫助確定讀取服務(wù)器提供的響應(yīng)文本或數(shù)據(jù)是否安全。在 Ajax 應(yīng)用程序中需要了解五種就緒狀態(tài):

HTTP 狀態(tài)碼

有可能服務(wù)器履行了請(qǐng)求(即 HTTP 就緒狀態(tài)是 4)但是沒有返回客戶機(jī)預(yù)期的數(shù)據(jù)(例如找不到指定的頁面)。因此除了就緒狀態(tài)外,還需要檢查 HTTP狀態(tài)。我們期望的狀態(tài)碼是 200,它表示一切順利。下表列出了幾種常見的HTTP狀態(tài)碼

AJAX作業(yè)

設(shè)計(jì)一個(gè)注冊(cè)表單,只要求輸入賬號(hào)和密碼即可進(jìn)行注冊(cè),要求當(dāng)用戶輸入賬號(hào)名重復(fù)時(shí),馬上顯示一行“您注冊(cè)的賬號(hào)已存在,請(qǐng)重新輸入”。



Java Web:自己想出的連接數(shù)據(jù)庫的AJAX重名驗(yàn)證實(shí)例源碼,PPT,學(xué)習(xí)筆記【詩書畫唱】的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
敦煌市| 福海县| 桃江县| 高平市| 若羌县| 阳山县| 邢台市| 镇巴县| 丰镇市| 大荔县| 桦甸市| 金门县| 兴国县| 滕州市| 隆林| 皋兰县| 嘉峪关市| 广安市| 梁山县| 瓮安县| 高雄县| 宜川县| 登封市| 苏尼特左旗| 锦州市| 冕宁县| 武定县| 石林| 屏东市| 原平市| 黄平县| 高台县| 麻江县| 阿拉尔市| 苍梧县| 金华市| 彰化县| 启东市| 张家港市| 思茅市| 兰州市|