`

实现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, 运行效果

 

运行前:

删除后:

分享到:
评论

相关推荐

    jquery实现页面局部刷新

    总结,jQuery为实现页面局部刷新提供了强大的工具,通过AJAX请求获取数据,然后结合DOM操作方法更新页面内容。结合良好的编程习惯和优化策略,可以创建出响应迅速、用户体验优良的Web应用。在实际项目中,可以根据...

    java实现ajax局部刷新

    在IT行业中,Ajax(Asynchronous JavaScript and XML)技术被广泛应用于网页的局部刷新,从而提升用户体验,减少不必要的页面跳转。这里的"Java实现Ajax局部刷新"是一个基础的示例,旨在帮助初学者理解Ajax的工作...

    asp.net(c#)图片变换局部刷新ajax.rar

    在这个“asp.net(c#)图片变换局部刷新ajax.rar”压缩包中,我们聚焦于如何利用C#语言和ASP.NET技术实现图片变换并通过Ajax实现页面的局部刷新。 1. **图片变换**: 在网页中,图片变换通常涉及到图片的动态加载或...

    Ajax局部刷新c#源码

    Ajax局部刷新技术是一种在网页不进行整个页面刷新的情况下,通过后台与服务器异步交换数据并局部更新页面的技术。这种技术极大地提升了用户体验,因为它允许用户在交互时无需等待整个页面加载,仅更新必要的部分。C#...

    Ajax将数据发送到后台进行局部刷新操作

    5. **DOM操作**:接收到服务器响应后,Ajax会通过JavaScript操作DOM,动态更新页面中的特定部分,实现局部刷新。 下面是一个简单的Ajax请求示例: ```javascript var xhr = new XMLHttpRequest(); xhr.open('GET', ...

    ASP.NET-AJAX-web-chat-application.zip_asp.net ajax

    2. **AJAX**:AJAX的核心在于JavaScript的XMLHttpRequest对象,允许开发者在不刷新整个页面的情况下与服务器交换数据并局部更新页面。在聊天应用中,AJAX被用来发送和接收消息,实现用户输入的即时反馈。 3. **异步...

    商业编程-源码-Ajax无限级树源码.zip

    总之,"商业编程-源码-Ajax无限级树源码.zip"提供了一种高效、互动的方式来显示和管理层次结构数据,它的实现涵盖了Ajax通信、无限级树结构、前端性能优化等多个关键领域,对于Web开发者来说是一个宝贵的参考资料。...

    ajax ajax原理 ajax代码 ajax编程 ajax学习

    6. **处理返回数据**:将服务器返回的数据解析并更新DOM,实现局部刷新。 ### **Ajax 代码示例** 以下是一个简单的Ajax GET请求示例: ```javascript var xhr = new XMLHttpRequest(); xhr.onreadystatechange = ...

    Ajax实现的简单的web聊天

    它通过XMLHttpRequest对象向服务器发送异步请求,获取数据后由JavaScript处理并更新DOM树,从而实现页面的局部刷新。 ### 2. 聊天系统的组成 一个基于AJAX的Web聊天系统通常包括以下组件: - **用户界面(UI)**...

    HDI-AJAX-AddAjax-CS源码

    在Web开发中,AJAX(Asynchronous JavaScript and XML)技术被广泛使用,它允许我们在不刷新整个页面的情况下与服务器进行交互,提高了用户体验。"HDI-AJAX-AddAjax-CS"项目提供了一套使用C#编写的AJAX功能实现,...

    C#入门经典(第四版)第22章 AJAX编程

    在《C#入门经典(第四版)》的第22章中,作者深入探讨了AJAX编程这一现代Web开发中的关键技术。AJAX,全称Asynchronous JavaScript and XML(异步JavaScript和XML),是一种用于创建快速动态网页的技术。通过在后台...

    ssm-ajax.zip

    4. **Ajax**技术:Ajax(Asynchronous JavaScript and XML)允许网页在不刷新整个页面的情况下与服务器交换数据并局部更新页面。在这个项目中,Ajax用于实现CRUD操作的异步通信,提升了用户界面的响应速度和交互性。...

    源代码-Ajax(Jquery)实用例子 v1.0.zip

    【描述】描述中的信息简洁明了,"源代码-Ajax(Jquery)实用例子 v1.0.zip" 暗示这是一份教学或参考性质的资源,它可能包含了一系列通过Ajax和Jquery实现的功能示例,如动态加载数据、表单验证、页面局部更新等。...

    ajax书籍,用于WEB

    #### 四、Ajax编程基础 - **创建XMLHttpRequest对象**:负责数据的异步传输。 - **数据获取**:从Web页面中提取需处理的信息。 - **连接服务器**:建立与服务器的通信通道。 - **设置回调函数**:定义如何处理...

    ajax例子,Google Web Toolkit 1.0.21-ajax example, Google Web Toolkit 1.0.21

    它通过在后台与服务器交换少量数据并局部刷新页面来实现这一目标,从而提升了用户体验。GWT利用Ajax技术,使开发者可以创建高度交互和响应式的Web应用。 在"ajax例子,Google Web Toolkit 1.0.21-ajax example"中,...

    struts2 dwr ajax 配置 局部刷新

    Struts2、DWR(Direct Web Remoting)和Ajax是Web开发中的关键技术,它们结合使用可以实现页面的局部刷新,提高用户体验。Struts2是一个基于MVC设计模式的Java Web框架,DWR则是一个用于简化AJAX开发的库,允许前端...

    jsp-ajax_demos_JSP源码_

    6. **局部刷新**:利用Ajax实现特定区域的刷新,如表格数据的动态加载。 7. **AJAX与Servlet结合**:除了JSP,也可能包含与Servlet的交互示例,因为Servlet常作为JSP的后台处理程序。 8. **缓存控制**:展示如何...

    验证码的实现方法-局部刷新

    局部刷新的验证码实现方法是一种优化用户体验的技术,它允许用户在不重新加载整个页面的情况下更新验证码图像。对于那些不熟悉Ajax(异步JavaScript和XML)的开发者来说,这是一个相对简单的解决方案。 首先,我们...

    ASP+ajax+jQuery--顶-踩-无刷新【点赞】程式3.0 修正调试版

    Ajax(Asynchronous JavaScript and XML)技术的核心在于实现局部页面更新,即无需刷新整个页面就能与服务器进行交互。通过JavaScript发送异步请求到服务器,获取数据后在客户端更新DOM元素,从而提供流畅的用户体验...

Global site tag (gtag.js) - Google Analytics