当前位置: 网学 > 网页素材 > AJAX代码 > 正文

用AJAX+J2EE实现一个网上会议室系统

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: Admin 发布时间: 09/05/30
实现。界面也比较简单,直接使用EasyJWeb Tools代码生成工具引擎生成即可。会议室管理的客户端是传统的Java Web技术,因此没有什么要考虑的。

  客户端的第二个部分也即会议系统的主要部分,该部分主要有两个界面,第一个页面是会议室进入的选择页面。也即把已经启动的会议室列出来,用户选择一个会议室进入,这个页面也是使用传统的Java Web技术。第二个页面是进入会议室后的主界面,这个界面是整个会议系统的主要界面,所有参与会议的操作都在这里运行的。这个界面需要不断的与服务器端交互传输数据,传输的内容包括用户的发言、其它人给用户的发言、会议室的状态等。有的传输信息需要即时响应(如用户发言),有的信息可以设置成定时响应(如会议室状态)。

  Java Web程序中与服务器端交互数据主要有两种方式,一种是直接刷新页面,另外一种是使用Socket直接跟Web服务器端口通讯。由于Socket编程相对复杂,我们选择第一种直接刷新页面的方式,这种方式又可以分为几种,包括传统的Form提交,传统的自动刷新网页取得数据以及使用ActiveXObject对象(如xmlhttp)直接与服务器交互数据,也即AJAX方式。由于使用AJAX方式用户感觉不到页面在刷新,表现起来好于手动或自动刷新页面的方式,因此我们决定选择AJAX方式实现客户端与服务器端进行数据交互。

  用户发言的时候,直接使用xmlhttp对象Post数据到服务器。为了能不断接收到别人的发言信息,需要定时不断的从服务器端读取数据,因此,需要在客户端启动一个定时器,每隔一定的时候自动使用xmlhttp对象到服务器端下载别人的发言信息,并显示到会议室信息主界面中。另外还要定时刷新参会的人数、会议室当前发言人、会议室的公告等会议状态信息,这也可以通过从客户端启动一个定时器,通过xmlhttp对象与服务器交互得到。

  另外还有一些操作,锁定会议室、踢人、指定发言人的发言时间、给会议室加密码等功能,也通过xmlhttp的方式与服务器传输命令实现。

  五、核心代码说明

  1、服务器端核心代码

  在EasyJF开源团队的会议系统中,由于是以EasyJF官网的论坛系统、后台管理等是集成一起的。服务器ChatService与ChatRoom共同合并到了一个ChatService.java类中,实现会议室管理及会议服务功能。ChatService类的部分主要代码如下:

  package com.easyjf.chat.business;

  public class ChatService implements Runnable {

  private static final Map service=new HashMap();//会议室服务,系统中的当前会议室存放到该表集合中

  private static final int maxServices=10;//可以同时开的最大会议室数

  private static final SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");

  private final List msgs;//聊天信息Chat

  private final List users;//在线用户,ChatUser

  private final List talkers;//排队发言人数Talker

  private final List manager;//会议室管理员

  private Talker currentTalker;//当前发言人

  private String cid;//会议室id

  private String title;//会议室主题

  private String intro;//会议室简介

  private String owner;//会议室创建人

  private int maxUser;//最大在线人数

  private int interval;//最大刷新时间间隔

  private String vrtype;//访问权限

  private String vrvalue;//访问值

  private String announce;

  private String password;//房间进入密码

  private int status;//会议室状态

  private String filePath;

  //private Thread thread;

  private boolean isStop=false;

  public ChatService()

  {

  this.msgs=new ArrayList();

  this.users=new ArrayList();

  this.talkers=new ArrayList();

  this.manager=new ArrayList();

  this.maxUser=1000;//最大1000人同时

  this.interval=1000*60*5;//5分钟以前的信息

  }

  /**

  * 停止所有会议室

  *

  */

  public static void clear()

  {

  if(!service.isEmpty())

  {

  Iterator it=service.values().iterator();

  while(it.hasNext())

  {

  ChatService chat=(ChatService)it.next();

  chat.stop();

  }

  }

  service.clear();

  }

  /**

  * 创建一个会议室

  * @param name 会议室ID

  * @return

  */

  public static ChatService create(String name)

  {

  ChatService ret=null;

  if(service.containsKey(name))

  {

  ChatService s=(ChatService)service.get(name);

  s.stop();

  service.remove(name);

  }

  if(service.size()<maxServices)

  {

  ret=new ChatService();

  service.put(name,ret);

  }

  return ret;

  }

  /**

  * 停

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号