`
datoplay
  • 浏览: 1615646 次
文章分类
社区版块
存档分类
最新评论

ajax 实现的一个简单的自动的更新系统

 
阅读更多

自动 的更新目前应用是很广泛的,

ajax 在这方面的应用是

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MyHtml.html</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">


<script type="text/javascript">
var xmlHttp;

function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}

function doStart() {
createXMLHttpRequest();
var url = "DynamicUpdateServlet?task=reset";
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = startCallback;
xmlHttp.send(null);
}
function startCallback() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
setTimeout("pollServer()", 5000);
refreshTime();
}
}
}
function pollServer() {
createXMLHttpRequest();
var url = "DynamicUpdateServlet?task=foo";
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = pollCallback;
xmlHttp.send(null);
}

function refreshTime() {
var time_span = document.getElementById("time");
var time_val = time_span.innerHTML;

var int_val = parseInt(time_val);
var new_int_val = int_val - 1;

if (new_int_val > -1) {
setTimeout("refreshTime()", 1000);
time_span.innerHTML = new_int_val;
} else {
time_span.innerHTML = 5;
}
}

function pollCallback() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var message = xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;

if (message != "done") {
var new_row = createRow(message);
var table = document.getElementById("dynamicUpdateArea");
var table_body = table.getElementsByTagName("tbody").item(0);
var first_row = table_body.getElementsByTagName("tr").item(1);
table_body.insertBefore(new_row, first_row);
setTimeout("pollServer()", 5000);
refreshTime();
}
}
}
}

function createRow(message) {
var row = document.createElement("tr");
var cell = document.createElement("td");
var cell_data = document.createTextNode(message);
cell.appendChild(cell_data);
row.appendChild(cell);
return row;
}
</script>
</head>

<body>
<h1>
ajax Dynamic Update Example
</h1>
This page will automatically update itself:
<input type="button" value="Launch" id="go" onclick="doStart();" />
<p>
Page will refresh in
<span id="time">5</span> seconds.
<p>
<table id="dynamicUpdateArea" align="left">
<tbody>
<tr id="row0">
<td></td>
</tr>
</tbody>
</table>
</body>
</html>

在java 中的代码是如下:

package cn.hnpi;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

/**
*
* @author nate
* @version
*/
public class DynamicUpdateServlet extends HttpServlet {
private int counter = 1;

/** Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String res = "";
String task = request.getParameter("task");
String message = "";

if (task.equals("reset")) {
counter = 1;
} else {
switch (counter) {
case 1: message = "Steve walks on stage"; break;
case 2: message = "iPods rock"; break;
case 3: message = "Steve says Macs rule"; break;
case 4: message = "Change is coming"; break;
case 5: message = "Yes, OS X runs on Intel - has for years"; break;
case 6: message = "Macs will soon have Intel chips"; break;
case 7: message = "done"; break;
}
counter++;
}

res = "<message>" + message + "</message>";

PrintWriter out = response.getWriter();
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
out.println("<response>");
out.println(res);
out.println("</response>");
out.close();
}

/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
}


在xml 中的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>DynamicUpdateServlet</servlet-name>
<servlet-class>cn.hnpi.DynamicUpdateServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>DynamicUpdateServlet</servlet-name>
<url-pattern>/DynamicUpdateServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

分享到:
评论

相关推荐

    基于Ajax的简单OA自动化系统

    使用Ajax技术,实现无纸化的在线OA办公系统。

    基于ajax技术的聊天室实现

    无需等待,自动刷新,简单的聊天系统,功能实现有:用户注册,用户登录,多人聊天,使用ajax与servlet技术实现,简单明了,非常适合于学习

    Ajax 四级导航菜单ASP+Access动态版

    Asp+Ajax无限级联动下拉框菜单Access版 ASP仿Google输入框提示_自动完成功能 AJAX+ASP多级无限制级联菜单(地市版) ASP下结合AJAX实现输入框提示(自动完成) ASP 树形菜单TreeView 多样式版 jQuery实例_飞飞ajax带...

    healthSystem:医疗管理系统的简单实现,实现了ajax注册,用户登录,上传数据,通过数据自动识别病况,生成健康报告,实现医生和病人的沟通

    SpringMVC+Mybatis写的医疗管理系统,改下数据库配置文件就可以用`

    PHP+Ajax网站开发典型实例

    实例67 AjaX实现数据记录排序 实例68 局部动态更新数据 实例69 AjaX+PHP数据分页显示 实例70 指定CSS样式显示数据 实例71 JSON格式处理信息 第9章 Ajax时尚技术 实例72 根据邮编自动完成地址信息 实例73 AiaX...

    PHP+Ajax网站开发典型实例-源代码

    实例3 中文时间显示实例 实例4 删除字符串中的空白 实例5 字符串反转 实例6 字符串加密 实例7 检查日期的有效性 实例8 简单猜数游戏 实例9 验证信用卡号 实例10 计算两个数组并、交和差 ...第10章 Ajax实现综合实例

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

    程序描述:本章模仿Google ig,使用Ajax技术实现一个个性化主页系统。通过拖拽方式设置主页,当完成拖拽窗口时,自动保存布局,使用户可以随时根据喜好来设置布局。 /login.jsp 登录页面 /homepage.jsp ...

    基于Web的办公室自动化系统

    本项目是一套基于JavaWeb实现的办公室自动化系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。 包含:项目源码、项目文档、数据库脚本、软件工具等,该项目附带全部源码可作为毕设使用...

    【卷一/共两卷】AJAX实战pdf高清版90M

    6.3 为Ajax设计通知系统 6.3.1 对通知建模 6.3.2 定义用户界面需求 6.4 实现通知框架 6.4.1 显示状态栏图标 6.4.2 显示详细的通知信息 6.4.3 集成 6.5 用通知框架处理网络请求 6.6 表示数据的时效性 6.6.1 定义简单...

    JSP课程设计:一个新闻发布的适时监测系统.rar

    JSP课程设计:一个新闻发布的适时监测系统,煤矿安全实时监控系统(简单新闻发布系统),一个毕业设计含源码,主要功能是信息发布,留言本,信息分类。整个程序是struts1.2的版本构架,数据库是mysql,用户名root,...

    JAVA上百实例源码以及开源项目

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    酷睿股票私募网站管理系统 V2010 SP2

    酷睿股票私募网站管理系统,是国内首家采用WAP手机及电脑WEB同步访问的股票私募系统,该系统基于ASP+DIV+CSS+AJAX+XML+MSSQL技术专门为股票私募网站开发的一款CMS网站管理系统,是一个经过完善设计并适用于各种...

    酷睿股票私募网站管理系统 V2011

    酷睿股票私募网站管理系统,是国内首家采用WAP手机及电脑WEB同步访问的股票私募系统,该系统基于ASP+DIV+CSS+AJAX+XML+MSSQL技术专门为股票私募网站开发的一款CMS网站管理系统,是一个经过完善设计并适用于各种...

    酷睿股票私募网站管理系统V2010 SP3

    酷睿股票私募网站管理系统,是国内首家采用WAP手机及电脑WEB同步访问的股票私募系统,该系统基于ASP+DIV+CSS+AJAX+XML+MSSQL技术专门为股票私募网站开发的一款CMS网站管理系统,是一个经过完善设计并适用于各种...

    人事工资管理系统源码

    工资管理系统是一个综合性的人机交互系统,他专门针对农村工程承包的特殊流程和业务要求进行数据组织处理和信息调控,代替业务人员进行烦琐和重复性的工作。使各级用户能够根据本系统顺利完成员工工资管理的有关工作...

    jsp+mysql小型酒吧在线管理系统

    小型酒吧在线管理系统MinibarCMS是使用Java MVC模式 + Mysql数据库开发的一个简单的文章管理系统,代码简单,数据库也非常mini,特别适合初学者研究与学习! V2版本中对前端进行了重构,一个全新的平面化设计的前端...

    健身俱乐部Web网站-JSP+Servlet+Hibernate+jQuery+Ajax

    这是我做的第一个Web网站,前台页面主要利用JSP、jQuery(数据验证),部分页面用到Ajax。控制转发层采用Servlet,数据访问层采用Hibernate(bean和dao是由Hibernate逆向工程自动生成)。 系统采用分层架构,由上...

    5vShop商城系统.rar

    5vShop是一套企业级开源电商系统,采用全新架构开发, 使用多种前沿创新技术,完美打通各渠道,实现全终端数据同步,集合PC+微信+手机版无缝整合于一体,打造一个真正的生态化电商平台。 5vShop商城系统功能丰富,...

    jsp+mysql小型酒吧在线管理系统.zip

    小型酒吧在线管理系统MinibarCMS是使用Java MVC模式 + Mysql数据库开发的一个简单的文章管理系统,代码简单,数据库也非常mini,特别适合初学者研究与学习! V2版本中对前端进行了重构,一个全新的平面化设计的前端...

Global site tag (gtag.js) - Google Analytics