`

实现web页面局部动态刷新 - Ajax编程(1)

阅读更多

在浏览网页时,有时往往因为查看局部信息,而导致整个网页都需要从服务器端重新加载一次。在传统的web实现方式中,实现类似的效果必须进行整个页面的刷新。但是借助Ajax技术,可以实现对页面中局部区域的动态刷新,使得用户能够以更好的方式获得最新的数据信息。只更新需要查看的信息,页面中的其他信息保持不变。局部动态更新时Ajax技术的只要功能表现之一。

     现在创建一个实例,以演示使用Ajax技术局部动态更新数据。该实例主要是删除Access数据库记录。在删除过程中,只删除指定记录,而不影响显示的其他待删除记录。

 

1, accessConnection.java

     此类用于数据库操作,执行删除语句,返回查询结果集,打开记事本,输入下列代码:

[html]
  1. package com.njue.DBManager;  
  2.   
  3.   
  4. import java.io.File;  
  5. import java.sql.*;  
  6.   
  7.   
  8. public class accessConnection {  
  9. ResultSet   r;  
  10.     public accessConnection(String delSql,String sql) throws ClassNotFoundException, SQLException {  
  11.         String   dbUr1="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:"+File.separator+"dataAnalysis"+File.separator+"test.mdb";     
  12.           String   user="";     
  13.           String   password="";     
  14.           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");     
  15.           Connection   c=DriverManager.getConnection(dbUr1,user,password);     
  16.           Statement s=c.createStatement();   
  17.           if(delSql!=null){  
  18.               s.executeUpdate(delSql);  
  19.           }  
  20.           r=s.executeQuery("SELECT   NAME   "+"FROM   test");    
  21.           
  22.         //  s.close();     
  23.   
  24.     }  
  25. public ResultSet getResult(){  
  26.   
  27.     return r;  
  28. }  
  29. }  
  30.   
  31. /*  
  32.  其实最重要的一条语句就是:  
  33.   
  34.      String   dbUr1="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:"+File.separator+"dataAnalysis"+File.separator+"test.mdb";  
  35.   
  36. 这个路径的要求是极为严格的,只允许Microsoft Access Driver这三个单词中间各有一个空格,其他地方绝不允许出现空格,还望各位道友仔细检查。  
  37.   
  38. 还有一点就是File.separator,由于不同的操作系统的分隔符可能不一样,况且我们这里直接用E:\dataAnalysis\test.mdb的话,你可能要再加一个反斜杠去进行转义,为了避免麻烦,所以我们直接用File.separator自动获取系统默认的分隔符。  
  39.   
  40.      好了,就如此简单,希望对大家有用!  
  41.  */  
package com.njue.DBManager;


import java.io.File;
import java.sql.*;


public class accessConnection {
ResultSet   r;
	public accessConnection(String delSql,String sql) throws ClassNotFoundException, SQLException {
		String   dbUr1="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:"+File.separator+"dataAnalysis"+File.separator+"test.mdb";   
		  String   user="";   
		  String   password="";   
		  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");   
		  Connection   c=DriverManager.getConnection(dbUr1,user,password);   
		  Statement s=c.createStatement(); 
		  if(delSql!=null){
			  s.executeUpdate(delSql);
		  }
		  r=s.executeQuery("SELECT   NAME   "+"FROM   test");  
		
		//  s.close();   

	}
public ResultSet getResult(){

	return r;
}
}

/*
 其实最重要的一条语句就是:

	 String   dbUr1="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:"+File.separator+"dataAnalysis"+File.separator+"test.mdb";

这个路径的要求是极为严格的,只允许Microsoft Access Driver这三个单词中间各有一个空格,其他地方绝不允许出现空格,还望各位道友仔细检查。

还有一点就是File.separator,由于不同的操作系统的分隔符可能不一样,况且我们这里直接用E:\dataAnalysis\test.mdb的话,你可能要再加一个反斜杠去进行转义,为了避免麻烦,所以我们直接用File.separator自动获取系统默认的分隔符。

     好了,就如此简单,希望对大家有用!
 */

 

2,  服务器端代码

声明accessConnection.java类,调用getResult()方法得到结果集,然后使用while循环将获取数据库的数据保存到字符串content中,最后将content字符串以XML文件的形式输出客户端。代码如下:

[html]
  1. <%@ page contentType="text/html; charset=utf-8" import="java.sql.*,com.njue.DBManager.*" errorPage="" %>  
  2. <%  
  3.   String id=request.getParameter("name");  
  4.    
  5.   String delSql=null;  
  6.     StringBuffer content=new StringBuffer("");   
  7.   response.setContentType("text/xml");   
  8.   response.setHeader("Cache-Control","no-cache");  
  9.   content.append("<?xml version=\"1.0\"   encoding=\"UTF-8\" ?>");  
  10.   content.append("<contents>");  
  11.   if(id!=null){  
  12.   id=new   String(id.getBytes("ISO-8859-1"), "GBK");   
  13.   delSql="delete from test where NAME='"+id+"'";  
  14.   }  
  15.   try{  
  16.   ResultSet rs=new accessConnection(delSql,null).getResult();  
  17.   
  18.   while(rs.next()){  
  19.      String name=rs.getString(1);  
  20.      content.append("<content>");  
  21.      content.append("<name>"+ name +"</name>");  
  22.      content.append("</content>");  
  23.      }  
  24.     
  25.   }  
  26.  catch(Exception e){  
  27.       e.printStackTrace();  
  28.    }  
  29.     content.append("</contents>");  
  30.    out.print(content);  
  31. %>  
<%@ page contentType="text/html; charset=utf-8" import="java.sql.*,com.njue.DBManager.*" errorPage="" %>
<%
  String id=request.getParameter("name");
 
  String delSql=null;
    StringBuffer content=new StringBuffer(""); 
  response.setContentType("text/xml"); 
  response.setHeader("Cache-Control","no-cache");
  content.append("<?xml version=\"1.0\"   encoding=\"UTF-8\" ?>");
  content.append("<contents>");
  if(id!=null){
  id=new   String(id.getBytes("ISO-8859-1"), "GBK"); 
  delSql="delete from test where NAME='"+id+"'";
  }
  try{
  ResultSet rs=new accessConnection(delSql,null).getResult();

  while(rs.next()){
     String name=rs.getString(1);
     content.append("<content>");
     content.append("<name>"+ name +"</name>");
     content.append("</content>");
     }
  
  }
 catch(Exception e){
      e.printStackTrace();
   }
    content.append("</contents>");
   out.print(content);
%>


 

将上述代码保存,我这里保存的名称为index.jsp

 

3, 客户端代码

客户端代码主要实现异步传送数据的显示样式。打开记事本,输入下列代码:

[html]
  1. <%@ page contentType="text/html; charset=GBK" import="java.sql.*" errorPage="" %>  
  2. <html>  
  3. <head>  
  4.     <script type="text/javascript">  
  5.     var xmlHttp;  
  6.     var id;  
  7.     function createXMLHttpRequest(){  
  8.       if(window.ActiveXObject) {  
  9.      xmlHttpnew ActiveXObject("Microsoft.XMLHTTP");//创建XMLHttpRequet对象  
  10.    }  
  11.   else if (window.XMLHttpRequest) {  
  12.      xmlHttp=new XMLHttpRequest();//创建XMLHttpRequet对象  
  13.      }  
  14.     }  
  15.     function startRequest(ele) {  
  16.     id=ele.id;  
  17.  createXMLHttpRequest();   
  18.  xmlHttp.onreadystatechange=handleStateChange;  
  19.  xmlHttp.open("POST", "index.jsp?name="+id, true);  
  20.   xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  
  21.  xmlHttp.send(null);  
  22.  alert(str);  
  23.  }  
  24. function handleStateChange() {  
  25.   if(xmlHttp.readyState==4) {  
  26.  if(xmlHttp.status==200) {  
  27.           show();  
  28.      }  
  29.   }  
  30. }  
  31. function validate(){  
  32.  createXMLHttpRequest();   
  33.  xmlHttp.onreadystatechange=handleStateChange;  
  34.  xmlHttp.open("GET", "index.jsp", true);  
  35.   xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  
  36.  xmlHttp.send(null);  
  37. }  
  38. function show(){  
  39.    var xmlDoc=xmlHttp.responseXML;  
  40.    var yan=xmlDoc.getElementsByTagName("content");  
  41.    var ta="<table border=1 width=45% align=center id=ta><tr><td>用户名称</td><td>操作</td></tr>";  
  42.       for(var i=0;i<yan.length;i++){  
  43.       var y=yan[i];  
  44.       var name=y.childNodes[0].firstChild.data;  
  45.           ta+="<tr id='aa'><td width=30%>"+name+"</td>";  
  46.       ta+="<td><p id="+name+"  style='color:green;' onclick='startRequest(this)'><u>删除</u></p></td></tr>";  
  47.      }  
  48.    ta+="</table>";  
  49.    document.getElementById("res").innerHTML=ta;  
  50.    //alert(yan.length);  
  51. }  
  52.     </script>  
  53.   </head>  
  54.     
  55.   <body onLoad="validate()">  
  56.     <div id="res"></div>  
  57.   </body>  
<%@ page contentType="text/html; charset=GBK" import="java.sql.*" errorPage="" %>
<html>
<head>
	<script type="text/javascript">
	var xmlHttp;
	var id;
	function createXMLHttpRequest(){
	  if(window.ActiveXObject) {
     xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");//创建XMLHttpRequet对象
   }
  else if (window.XMLHttpRequest) {
     xmlHttp=new XMLHttpRequest();//创建XMLHttpRequet对象
     }
	}
	function startRequest(ele) {
	id=ele.id;
 createXMLHttpRequest(); 
 xmlHttp.onreadystatechange=handleStateChange;
 xmlHttp.open("POST", "index.jsp?name="+id, true);
  xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 xmlHttp.send(null);
 alert(str);
 }
function handleStateChange() {
  if(xmlHttp.readyState==4) {
 if(xmlHttp.status==200) {
          show();
     }
  }
}
function validate(){
 createXMLHttpRequest(); 
 xmlHttp.onreadystatechange=handleStateChange;
 xmlHttp.open("GET", "index.jsp", true);
  xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 xmlHttp.send(null);
}
function show(){
   var xmlDoc=xmlHttp.responseXML;
   var yan=xmlDoc.getElementsByTagName("content");
   var ta="<table border=1 width=45% align=center id=ta><tr><td>用户名称</td><td>操作</td></tr>";
      for(var i=0;i<yan.length;i++){
      var y=yan[i];
      var name=y.childNodes[0].firstChild.data;
          ta+="<tr id='aa'><td width=30%>"+name+"</td>";
	  ta+="<td><p id="+name+"  style='color:green;' onclick='startRequest(this)'><u>删除</u></p></td></tr>";
	 }
   ta+="</table>";
   document.getElementById("res").innerHTML=ta;
   //alert(yan.length);
}
	</script>
  </head>
  
  <body onLoad="validate()">
    <div id="res"></div>
  </body>


 

将上述代码保存,名称为Del.jsp。在该文件中,createXMLRequest()函数主要是用于创建XMLHttpRequest异步对象,validate()函数项服务器发送异步请求,该请求主要完成数据库记录的显示功能。Callback()函数主要用于处理服务器端的返回数据,即调用show()函数用于设置数据的显示样式。Show()函数主要是解析服务器端返回的XML文件,并解析XML文件中的数据,最后以指定样式显示在当前页。StartRequest()函数也是用于向服务器发送异步请求,但该请求主要完成删除指定数据库记录。在当前网页被加载时,就会执行validate()函数。

 

4, 运行效果

 

运行前:

删除后:

分享到:
评论

相关推荐

    ajax实现局部刷新

    AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML)。 AJAX 是一种在 2005 年由 ...通过 AJAX,你可以创建更好、更快以及更友好的 WEB 应用程序。 AJAX 基于 JavaScript 和 HTTP 请求(HTTP requests)

    AJAX局部刷新技术

    AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术.

    ajax实战_WEB编程必不可少的一件法宝!!!

    本书主要系统地介绍ajax技术在网页编程中的实际应用,是众多J2EE编程人员在实际工作中的必不可少的一门技术,希望能对大家有所帮助,主要作用是用于页面局部刷新!!!

    ASP.NET AJAX

    导读:本文主要通过一个简单示例,让Web页面在一定的时间间隔内局部刷新,来学习一下ASP.NET AJAX中的服务端Timer控件的简单使用。 ASP.NET AJAX入门系列(11):在多个UpdatePanle中使用Timer控件 导读:本文将...

    C# ASP.NET不妥控件编程实例续2之Ajax实现

    C# ASP.NET不妥控件编程实例2之Ajax实现,结合xml数据,json数据,实现ajax效果。本代码是我给学生上课用的现场编程。案例精彩:局部省市级联, 股票定时刷新,web聊天等

    PHP培训教程之AJAX技术.docx

    3、AJAX的特 Ajax可以实现动态不刷新(局部刷新) 就能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上那些没有改变过的信息。 4、XMLhttprequest对象。 Ajax的核心...

    AJAX基础概念、核心技术与典型案例(内涵动态实例)

    JsWeb 传统的JavaScript模式实现刷新 IframeWeb 基于框架的不刷新模式 AjaxWeb 基于Ajax的Web 2.0模式的刷新模式 AsyncAjaxSample Ajax异步调用的完整示例 第2章(/C02/) 2.1.htm 3...

    ASP.NET4高级程序设计(第4版) 3/3

    此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软的ASP.NETAJAX平台。另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  ...

    javaScript 内核解析

    工作之后,由于我们产品本身就是基于WEB展现的,而这个时候Ajax已经复兴数年了,但是于我,则只有“Ajax可以实现页面的局部刷新”这样一个概念。在实际的应用中,我才有机会面对真正的JavaScript,早期关于函数式...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软的ASP.NETAJAX平台。另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  ...

    达内Java培训项目(当当网/通用电子商务系统)

    深刻体会到Ajax的优势,异步发送请求处理与页面局部刷新,提高了系统的用户体验度。 通过使用工厂模式和面向接口设计模式降低了程序的耦合度,提高程序灵活性。 通过大量编写代码,养成了更加规范的代码习惯。

    亮剑.NET深入体验与实战精要2

    外部控件引发局部刷新 338 8.2.6 Ajax错误处理 341 8.2.7 告诉用户你正在做什么—— UpdateProgress控件 342 8.2.8 ASP.NET AjaxControToolKit简介 345 8.3 使用第三方组件 Ajax.dll 开发 347 8.4 使用第三方组件...

    亮剑.NET深入体验与实战精要3

    外部控件引发局部刷新 338 8.2.6 Ajax错误处理 341 8.2.7 告诉用户你正在做什么—— UpdateProgress控件 342 8.2.8 ASP.NET AjaxControToolKit简介 345 8.3 使用第三方组件 Ajax.dll 开发 347 8.4 使用第三方组件...

    Visual C#2008开发经验与技巧宝典 源码

    WCF多层数据架构通信、泛型应用、XML文件处理、多线程管理、程序异常拦截、文件压缩及解压缩、文件加密和解密、文件...Web Parts、Grid View和List View个性化定制、AJAX局部页面刷新方案以及大量的异步调用编程技巧等...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    2、 Ajax我们主要应用就是xmlhttprequest,回调函数实现局部刷新达道数据更新! 4.2需求分析 Blog网站主要是实现注册用户登录、管理相关信息、博文及相关评论、查看留言、友情链接、及图片的上传和图像的播放而为...

    基于J2EE框架的个人博客系统项目毕业设计论...

    2、 Ajax我们主要应用就是xmlhttprequest,回调函数实现局部刷新达道数据更新! 4.2需求分析 Blog网站主要是实现注册用户登录、管理相关信息、博文及相关评论、查看留言、友情链接、及图片的上传和图像的播放而为...

    千方百计笔试题大全

    167、Prototype如何实现页面局部定时刷新? 40 168、Prototype如何为一个Ajax添加一个参数? 40 169、Ajax请求总共有多少种Callback? 41 170、Javascript如何发送一个Ajax请求? 41 171、AJAX都有哪些有点和缺点? ...

    java面试宝典

    167、Prototype如何实现页面局部定时刷新? 40 168、Prototype如何为一个Ajax添加一个参数? 40 169、Ajax请求总共有多少种Callback? 41 170、Javascript如何发送一个Ajax请求? 41 171、AJAX都有哪些有点和缺点? ...

    epai.rar_Java编程_Java_

    是一个基于SSH开发的一个web项目。主要功能包括注册,登录,发布商品,对商品出价,竞拍商品等等,运用了AJAX技术实现局部刷新。。。奉献给那些想运用SSH框架开发一个web项目的朋友。

Global site tag (gtag.js) - Google Analytics