这是学习AJAX的第一篇文章,我把自己学习一些心得写出来,因为是从初学者的脚度出发,可能会写得比较详细,因为我就是一个初学者,也知道作为一个初学者,随随便便的拿一个例子就看看,是只知道要这样,但为什么要这样却不清楚,我这里就尽我自己的语言,让初学者和我一样,能够看了这篇文章之后,“哦,这里原来是这样的”。我个人还是喜欢从实例出发,对我自己而言,看了过后如果没有实例巩固,效果就不会那么好,也就不会减除对这个东西的神秘感,其实,从我个人的脚度出发后,因为前面写了两篇关于使用innerHTML实现动态效果的文章,再学这个就做了一个很好的铺垫了。因为这里面许多的时候都会使用innerHTML,不过,这个要注意,这个东东只支持微软的浏览器(我的FireFox不行,其它牌子支持与否我没有测试过,不过,在浏览器界中,好像只有微软的独树一家,乱来,呵呵),你可以看一下我先面的两篇文章:
利用innerHTML实现隐显效果-两种实现方法通过改变innerHTML的内容,动态增加选择项 学习使用AJAX之前,有几样的东西是必须的:
1、
HTML 2、
DHTML,就是动态HTML,这里可能会常用到document.getElementById([id])方法,或者是使用window.id.value=[value]等等,如果不熟悉,不及,看看下面的例子,如果还不能够理解,再把网上搜搜,这方面的解释多得不能够再多了。
3、
Javascript。这个就是非常的重要的,因为好多东西都需要通过这个去操作。
4、
DOM。这个不是必须的,就算我们不知道这个东西,照样可以用JAVASCRIT做很多的东西了。
5、
数据库操作及SQL知识。现在应用程序好多都是与数据库打交道,常见的用户名信息等等,都是放在数据库中的。
下面进行正题吧,这个实例非常的简单,采用JSP实现用户输入的用户是否存在于数据库中,并且给以相应的提示,所谓“麻雀虽小,五脏俱全”,其它的发挥就是在这个方向上发挥开发。
总共有三个文件,有两个JSP面,一个用于前台显示,一个用于确定用户是否存在;另外一个JAVA页面,用于做数据库连接。
注:请注意其中注释,那是非常的有助于你理解
第一个前台显示:index.jsp<html>
<head>
<title></title>
<script language="javascript" >
var httpRequest;
//下面这个函数可以返回一个适合任何浏览器的httpRequest,步子如下://1.试着创建一个XMLHttpRequest()示例,该示例可适合于除了微软以外的所有浏览器//2.增加错误判断,如果当前浏览器是微软的,那么就创建适用于微软的浏览器//3.但微软的浏览器又有两个版本之分,不过据说微软已经在7.0中增加对XMLHttpRequest()的支持//4.但这样也需要对原来的浏览器支持,否则你写出来的程序那些用老版本浏览器的用户就是看不到效果的。function createRequest()
{
try{
request=new XMLHttpRequest();
}catch(trymicrosoft)
{
try{
request=new ActiveXObject("Msxml2.XMLHTTP");
}catch(othermicrosoft)
{
try{
request=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(failed)
{
request=false;
}
}
}
if(!request)
{
alert("err Happend!");
return null;
}
return request;
}
//这个函数就是用户的动作所有触发的函数,如下面的onblur()时,就会调用该函数//经过的步骤如下://1.从HTML页面得到你需要的数据,可以采有document.getElementById("")方法。//2.建立需要的URL,该URL就和在FORM里面的method为get时并采用submit提交在地址栏里面到的一样//3.打开与服务器的连接,这里面有三个必要的参数,虽然文档规定只有两个,但是我个人觉得最好用三个,// 第一个可以是GET,POST或者是POST,但常用的就是前面的两个,并且最好都用大写,因为有些浏览器如FireFox可能会报错,// 第二个就是打报的URL,这肯定你是必须的。// 第三个就是下面的看到的true,这里可以是false。true表示同步处理,你提交后可以做其它的事情,// 这就是AJAX里面的A,即asynchronous;如是false,那就得等到服务器的返回才能够做其它的事情。//4.等到服务器完成,并且确定返回执行了正确执行的提示,我们就可以做下面我们想做的事情。这些后面的事情就必须通过// Javascript去完成了,因为XMLHttpRequest的唯一用途就是发送请求及接收服务器的响应结果。//5.上面都完成了后,就可以采用send()方法向服务器发送你需要发送的信息了,它的参数可以是任何类型,发送的数据格式必须为// 这样的格式:name=value&anothername=othervalue&so=on,如果你想传送数据,你必须更改MIME类型:// httpRequest.setRequestHeader('Content-type','application/x-www-form-urnlencoded');// 否则服务器将会丢弃发送的数据。function getBackInfo()
{
var username=document.getElementById("username").value;
var url='checkUser.jsp?username='+username;
request.open("GET",url,"true");
//下面相当于是一个隐性的循环,在函数中规定只有都接收完毕数据后才做处理 //onreadystatechange有5个值: // 0:未初始化 // 1:初始化 // 2:发送数据 // 3:接收数据中 // 4:数据接收完毕 //另外还要注意就是在注册回调函数onreadystatechange时,后面的函数不能够带参数 //如下disResult是一个函数,不能够带参。 reqeust.onreadystatechange=disResult;//隐性的循环
request.send(null);
}
function disResult()
{
//1.一定要确定readystate==4的完成状态才做下面的事,否则会在建立连接即readystate==1的时候就开始, // 然后会在readystate==2,readystate==3,readystate==4的时候都会执行,不信你可以alert("")一个 // 提示信息试试。 //2.服务器通知完成了,并且还要保证是正确完成的,得到的是我们需要的结果才能够继续,这里常用响应码有: // 200:成功执行 // 401:未授权 // 403:禁止 // 404:没有找到文件 if(request.readystate==4)
{
if(request.status==200)
{
//一切都OK了,那就该用Javascript去执行你想要的动作了。 document.getElementById("disCheckResult").value=request.responseText;
alert('done');
}
else
{
alert('Something Wrong has Happend!');
}
}
}
</script>
</head>
<body>
<form>
<table>
<tr>
<td>
<input type=text id="username" onblur="getBackInfo();">
</td>
<td>
<dd id="disCheckResult">这里用于在执行后显示结果的地方</dd>
</td>
</tr>
</table>
</form>
</body>
</html>
第二个用于验证的JSP页面:checkUser.jsp<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="project1.DBMS_Conn"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
<title>checkUser</title>
</head>
<body>
<%
String username=request.getParameter("username");
DBMS_Conn conn=new DBMS_Conn();
if(conn.checkUser(username))
out.println("用户名已经存在!");
//这个信息就是发送到前台去显示的信息,即服务器返回的信息 else
out.println("可以继续!");
%>
</body>
</html>
第三个数据库连接JAVA程序:package project1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBMS_Conn {
Connection conn;
Statement st;
public DBMS_Conn() {
conn_init();
}
void conn_init() {
setConnection();
setStatement();
}
public void setConnection() {
try {
//Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//db.mdb有一个名为user表,至少有一个名为username的字段
String strurl =
"jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:\\db.mdb";
//conn =
//DriverManager.getConnection("jdbc:mysql://localhost/palfinger?user=root&password=admin&useUnicode=true&characterEncoding=8859_1");
conn = DriverManager.getConnection(strurl);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 设置Statement
*/
public void setStatement() {
try {
st =
conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 根据用户名确定用户是否存在
*/
public boolean checkUser(String username) {
String sql="select * from user where username='"+username+"'";
ResultSet rs;
try {
rs = st.executeQuery(sql);
if(rs.next())
{
conn.close();
return true;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
}
分享到:
相关推荐
2. **JavaScript和DOM**:介绍JavaScript的基础知识,以及如何通过DOM(Document Object Model)操作网页元素,为Ajax交互提供支持。 3. **XML与JSON**:详细解析XML数据格式及其解析方法,同时引入更轻量级的JSON...
### 在JSP中运用AJAX(简单入门) 随着互联网技术的发展与用户对交互体验要求的提高,AJAX技术因其能够实现网页的异步更新而受到广泛欢迎。本篇文章将通过一个具体的示例来介绍如何在JSP页面中使用AJAX进行简单的...
在"codesc.net"这个文件中,可能包含了实现上述功能的JSP源代码和相关的Ajax脚本,供学习者参考和实践。这些实例可以帮助开发者更好地理解和掌握如何在实际项目中运用JSP和Ajax,从而提升开发技能和项目实施能力。...
提供的压缩包中可能包含《Ajax从入门到精通》的电子书,这本书通常会涵盖Ajax的基本概念、核心API、实战案例等内容,适合初学者系统学习。同时,还可能有源码示例,可以帮助读者更好地理解和实践Ajax技术。 学习...
综上所述,这个"jsp+ajax源码打包"项目是一个面向初学者的学习资源,涵盖了JSP基础、Ajax基本操作以及如何将两者结合实现实时交互的示例。通过学习和分析这个项目,初学者可以深入理解JSP和Ajax的工作原理,提升Web...
《JSP从入门到精通》是一本由谷雨、阎英和高春蓉共同编著的书籍,专注于讲解JavaServer Pages(JSP)技术。这本书是中文版,以扫描的形式提供,适合初学者和有一定基础的开发者深入学习JSP。 JSP是Java平台上的动态...
总结来说,"jsp程序设计入门"是一本全面介绍JSP和Ajax技术的教材,尤其适合Web开发初学者。通过学习,读者不仅可以理解Ajax的工作机制,还能掌握如何在实际项目中运用它来提高网页的交互性和效率。此外,压缩包中...
这个压缩包中的源码可能包含了以下几个方面的JSP示例: 1. 数据提交:展示如何使用JSP接收和处理用户表单数据。 2. JSP与Servlet交互:可能包含JSP调用Servlet进行业务逻辑处理的例子。 3. 数据库操作:JDBC(Java ...
本篇文章介绍了基于Servlet的AJAX入门实例,通过具体的代码示例详细解释了如何在前端页面通过AJAX技术与后端进行交互,从而实现动态数据的实时更新。这对于初学者来说是一个很好的学习资源,可以帮助他们快速掌握...
在这个“ajax入门实例|ajax注册实例”中,我们将学习如何构建一个简单的Ajax用户注册系统,尽管它并未与实际数据库交互,但足以帮助初学者理解Ajax的工作原理。 首先,我们需要创建一个HTML表单,用于用户输入注册...
对于初学者来说,DWR提供了一个理想的起点,使他们能够快速理解和实践Ajax技术,而不必深陷于底层细节。通过实际操作上述步骤,开发者能够深入理解DWR如何工作,并逐渐掌握Ajax的核心概念。随着对DWR的熟悉,开发者...
这份“JSP初学者必备资料”包含三个主要部分:JSP行前准备、JSP英文帮助和JSP从入门到精通,这些都是系统学习JSP的基石。 **JSP行前准备** 在开始JSP的学习之前,有一些基础知识是必须的。首先,你需要了解Java...
《JSP网络开发入门与实践》是一本专为初学者设计的教材,涵盖了从基础到实践的JSP网络开发知识。这本书的1-19章提供了丰富的示例代码,旨在帮助读者逐步掌握JSP技术的核心概念和应用。下面将详细阐述这些章节中涉及...
本示例中的“Ajax做的日程表”展示了一个利用Ajax技术构建的动态、交互式的日程管理界面。Ajax,全称Asynchronous JavaScript and XML(异步JavaScript和XML),是一种在无需刷新整个网页的情况下更新部分网页内容的...
本知识点将深入探讨JSP分页的基本原理、实现方法以及相关技术。 一、分页概念 分页是一种数据管理策略,它将大块数据分割成较小的部分,每次只显示一部分,用户可以通过导航按钮切换不同的页面。在JSP中,分页通常...
【JSP培训-李绪成】可能是某位专家或讲师李绪成的培训课程资料,可能涵盖更深入的JSP进阶内容,如MVC设计模式、Spring框架与JSP的集成、AJAX在JSP中的应用,以及最佳实践和优化技巧等。 总之,这个压缩包提供了从...
6. **学习资源**:"JSP编程基础知识"文件很可能是为了帮助初学者快速入门JSP,包含JSP生命周期、指令、动作标签、内置对象等内容的讲解。 总结,这个压缩包提供的资源适合那些想要了解或提升JSP和JavaScript结合...
- **Java Servlet和JSP教程**:《JavaServlet和JSP教程》涵盖从基础到进阶的完整内容,适合不同水平的学习者。 通过上述知识点的梳理,不仅为初学者提供了JSP开发的基本路径,也为有经验的开发者提供了进一步深化...
总之,这本书是开发者深入了解和掌握Ajax技术的理想资源,结合实际的源码示例,不仅可以帮助初学者快速入门,也为有经验的开发者提供了深入研究和实践的材料。无论你是前端工程师还是后端开发者,都能从中受益匪浅。...