| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
用AJAX+J2EE实现一个网上会议室系统
作者:佚名    文章来源:网络    点击数:    更新时间:2006-11-22
 


  3、客户端AJAX部分核心代码

  EasyJF会议系统中,服务器发送给客户端的都是格式化的xml文档数据。下面是核心的AJAX函数及发送接收会议信息的客户端代码。

function newXMLHttpRequest() {
 var xmlreq = false;
 if (window.XMLHttpRequest) {
  xmlreq = new XMLHttpRequest();
 } else if (window.ActiveXObject) {
  try {
   xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e1) {
 try {
   xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
 } catch (e2) {
 }
 }
}
return xmlreq;
}
//处理返回信息
//xmlHttp返回值,
//method:方法名 方法必须带一个参数如doRecive(xNode);
function handleAjaxResult(req,method) {
 return function () {
  if (req.readyState == 4) {
   if (req.status == 200) {
    // 将载有响应信息的XML传递到处理函数
    var objXMLDoc=new ActiveXObject("Microsoft.XMLDOM");
    objXMLDoc.loadXML(req.responseText);
    eval("if(objXMLDoc.firstChild)"+method+"(objXMLDoc.firstChild.nextSibling);");
   } else {
    //alert("HTTP error: "+req.status);
                                                }
   }
  }
 }
 //执行客户端Ajax命令
 //url 数据post地址
 //postData 发送的数据包
 //handleMethod 处理返回的方法
 function executeAjaxCommand(url,postData,handleMethod)
 {
  var req = newXMLHttpRequest();
  req.onreadystatechange =handleAjaxResult(req,handleMethod);
  req.open("PO   ST", url, true);
  req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  req.setRequestHeader("charset","utf-8");
  req.send(postData);
 }
 //用户发言
unction doSend()
{
 if(!check())return false;
 var msg=EditForm.content.value;
 var reciver=EditForm.reciver.value;
 var url="/chat.ejf?easyJWebCommand=send&cid="+roomId+"&lastReadId="+lastReadId;
 var postData="sender="+myName+"&reciver="+reciver+"&content="+msg;
 clearTimeout(reciveTime);
 executeAjaxCommand(url,postData,"recive");
 EditForm.content.value="";
}
//接收发言信息
function doRecive()
{
 var reciver=EditForm.reciver.value;
 var url="/chat.ejf?easyJWebCommand=recive&cid="+roomId+"&lastReadId="+lastReadId;
 executeAjaxCommand(url,"","recive");
}
//处理接收到的发言信息
function recive(list)
{
 var id="";
 for(var oNode=list.firstChild;oNode;oNode=oNode.nextSibling) // 依次分析每个节点
 {
  chatContent.innerHTML+=showMsg(oNode);
  id=oNode.getAttribute("cid");
 }
 if(id!="") lastReadId=id;
 chatContent.scrollTop=chatContent.scrollHeight;
 reciveTime=setTimeout("doRecive();",5000);
}  

  六、系统演示

  大家可以到EasyJF开源团队的官方网站看程序演示效果,地址是:

   http://www.easyjf.com/chatRoom.ejf?easyJWebCommand=show&ejid=2538093638804337

  结束语

  Ajax从技术上讲主要就是javascript、dhtml、css、xmldom、xmlhttp等一些我们很早就接触了的技术。而xmldom及xmlhttp也没有什么东西,写程序的时候把参考文档打开Copy就OK,dhtml及javascript涉及的东西就多了,不能只是看参考文档,需要把他真正消化,并能灵活动用,这就需要大家都练习了。笔者建议大家不要滥用Ajax。对于高手建议多研究一些业务及系统级算法设计等,对于新手嘛,把基本的技术(客户端的包括dhtml、css、javascript、xml等,J2EE服务器端的设计模式、UML建模、Servlet、JDBC或ORM系统、XML、EJB及一些框架、工具等)学好才是硬道理。

上一页  [1] [2] [3] [4] 


相关文章