Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16493179
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:47:04

下载本文示例代码
  今年大家都在炒作Web2.0,其中的一门技术Ajax也是跟着火了起来,因此前面我写了一篇名为《忽悠一下AJAX》的文章,简单地分析了一下Ajax的技术的实质。虽然笔者不太喜欢跟风,但Ajax有一些地方还是比较有用的。前段时间做了EasyJF开源团队的网上会议系统,就用到了Ajax技术,下面把设计思路发出来跟大家分享一下。  一、系统实现的功能  本会议室系统主要用于EasyJF开源团队的成员网上会议使用,会议系统模拟传统的会议形式,可以同时开设多个不同主题的会议室,每个会议室需要提供访问权限控制功能,会议中能够指定会议发言模式(分为排队发言、自由发言两种),系统能自动记录每个会议室的发言信息,可以供参会人员长期查阅。  会议系统的用户支持游客帐号参加会议,同时也提供跟其它用户系统的接口,比如EasyJF官网中的开源论坛系统。  会议系统暂时使用文字聊天的方式,并提供语音及视频的接口。  二、技术体系  服务器端使用Java语言,MVC使用EasyJWeb框架;  客户端使用AJAX技术与服务器端交互数据;  会议历史信息储存格式使用文本格式,方便系统安装运行,也便于管理。  三、会议室服务器端设计   会议室服务器端是整个会议系统的核心部分,服务器端程序设计的好坏影响到整个系统的质量。   首先,根据会议室要实现的功能进行抽象分析。一个会议室对象,应该包括会议主题、会议简介、参会人数限制、公告、会议室类型、访问权限设定、房间密码、当前参会的人员、当前发言的人员、排队等待发言的人员等参数信息。我们把他封装一个Java对象当中。如下面的ChatRoom代码所示: public class ChatRoom{private String cid;//主键private String title;//聊天室主题private String intro;//聊天室简介private String announce;//聊天室公告private String owner;//聊天室创建人private Integer maxUser;//最大在线人数private Integer intervals;//最大刷新时间间隔private String vrtype;//访问权限private String vrvalue;//访问值private Integer status;//聊天室状态private Date inputTime;}  需要一个管理会议室的类,与会议有关的操作(如启动会议、关闭会议)等都直接找他。该类还应该即有自动定时检测用户在线情况(防止用户意外退出)、把内存中的会议历史发言信息保存到文本文件中等功能。这里可以考虑使用一个ChatService类提供这些功能: 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;//聊天信息Chatprivate final List users;//在线用户,ChatUserprivate final List talkers;//排队发言人数Talkerprivate final List manager;//会议室管理员private Talker currentTalker;//当前发言人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分钟以前的信息}}  会议发言信息也需要封装成一个类,表示发言人、接收人、内容、发言时间、类型等,大致如下面的Chat类: public class Chat {private String cid;private String sender;private String reciver;private String content;private Date vdate;private Integer types;private Integer status;}  还有表示参加会议的人的信息,包括参会人名称、IP地址、状态等,如下面的ChatUser类所示: public class ChatUser {private String ip;private String port;private String userName;private Date lastAccessTime;private Integer status;}  另外还需要一个表示当前发言人的Talker类,表示当前的发言人,发言开始时间,发言预计结束时间等。  在服务器端的设计中,会议室信息服务器应该能以多线程的方式运行,即启动一个会议就新开一个线程,每个会议线程维护自己的会议状态,如参会人、发言人,保存会议历史发言信息以及清空内存中的数据等操作。  四、客户端设计  会议室客户端包括两个部分,一个部分是会议室的管理界面,主要包会议室的“添删改查”及“启动”或“关闭”会议服务的操作。这部分我们直接使用EasyJWeb Tools中的添删改查业务引擎AbstractCrudAction可以快速实现。界面也比较简单,直接使用EasyJWeb Tools代码生成工具引擎生成即可。会议室管理的客户端是传统的Java Web技术,因此没有什么要考虑的。  客户端的第二个部分也即会议系统的主要部分,该部分主要有两个界面,第一个页面是会议室进入的选择页面。也即把已经启动的会议室列出来,用户选择一个会议室进入,这个页面也是使用传统的Java Web技术。第二个页面是进入会议室后的主界面,这个界面是整个会议系统的主要界面,所有参与会议的操作都在这里运行的。这个界面需要不断的与服务器端交互传输数据,传输的内容包括用户的发言、其它人给用户的发言、会议室的状态等。有的传输信息需要即时响应(如用户发言),有的信息可以设置成定时响应(如会议室状态)。  Java Web程序中与服务器端交互数据主要有两种方式,一种是直接刷新页面,另外一种是使用Socket直接跟Web服务器端口通讯。由于Socket编程相对复杂,我们选择第一种直接刷新页面的方式,这种方式又可以分为几种,包括传统的Form提交,传统的自动刷新网页取得数据以及使用ActiveXObject对象(如xmlhttp)直接与服务器交互数据,也即AJAX方式。由于使用AJAX方式用户感觉不到页面在刷新,表现起来好于手动或自动刷新页面的方式,因此我们决定选择AJAX方式实现客户端与服务器端进行数据交互。  用户发言的时候,直接使用xmlhttp对象Post数据到服务器。为了能不断接收到别人的发言信息,需要定时不断的从服务器端读取数据,因此,需要在客户端启动一个定时器,每隔一定的时候自动使用xmlhttp对象到服务器端下载别人的发言信息,并显示到会议室信息主界面中。另外还要定时刷新参会的人数、会议室当前发言人、会议室的公告等会议状态信息,这也可以通过从客户端启动一个定时器,通过xmlhttp对象与服务器交互得到。  另外还有一些操作,锁定会议室、踢人、指定发言人的发言时间、给会议室加密码等功能,也通过xmlhttp的方式与服务器传输命令实现。共2页。 1 2 :   今年大家都在炒作Web2.0,其中的一门技术Ajax也是跟着火了起来,因此前面我写了一篇名为《忽悠一下AJAX》的文章,简单地分析了一下Ajax的技术的实质。虽然笔者不太喜欢跟风,但Ajax有一些地方还是比较有用的。前段时间做了EasyJF开源团队的网上会议系统,就用到了Ajax技术,下面把设计思路发出来跟大家分享一下。  一、系统实现的功能  本会议室系统主要用于EasyJF开源团队的成员网上会议使用,会议系统模拟传统的会议形式,可以同时开设多个不同主题的会议室,每个会议室需要提供访问权限控制功能,会议中能够指定会议发言模式(分为排队发言、自由发言两种),系统能自动记录每个会议室的发言信息,可以供参会人员长期查阅。  会议系统的用户支持游客帐号参加会议,同时也提供跟其它用户系统的接口,比如EasyJF官网中的开源论坛系统。  会议系统暂时使用文字聊天的方式,并提供语音及视频的接口。  二、技术体系  服务器端使用Java语言,MVC使用EasyJWeb框架;  客户端使用AJAX技术与服务器端交互数据;  会议历史信息储存格式使用文本格式,方便系统安装运行,也便于管理。  三、会议室服务器端设计   会议室服务器端是整个会议系统的核心部分,服务器端程序设计的好坏影响到整个系统的质量。   首先,根据会议室要实现的功能进行抽象分析。一个会议室对象,应该包括会议主题、会议简介、参会人数限制、公告、会议室类型、访问权限设定、房间密码、当前参会的人员、当前发言的人员、排队等待发言的人员等参数信息。我们把他封装一个Java对象当中。如下面的ChatRoom代码所示: public class ChatRoom{private String cid;//主键private String title;//聊天室主题private String intro;//聊天室简介private String announce;//聊天室公告private String owner;//聊天室创建人private Integer maxUser;//最大在线人数private Integer intervals;//最大刷新时间间隔private String vrtype;//访问权限private String vrvalue;//访问值private Integer status;//聊天室状态private Date inputTime;}  需要一个管理会议室的类,与会议有关的操作(如启动会议、关闭会议)等都直接找他。该类还应该即有自动定时检测用户在线情况(防止用户意外退出)、把内存中的会议历史发言信息保存到文本文件中等功能。这里可以考虑使用一个ChatService类提供这些功能: 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;//聊天信息Chatprivate final List users;//在线用户,ChatUserprivate final List talkers;//排队发言人数Talkerprivate final List manager;//会议室管理员private Talker currentTalker;//当前发言人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分钟以前的信息}}  会议发言信息也需要封装成一个类,表示发言人、接收人、内容、发言时间、类型等,大致如下面的Chat类: public class Chat {private String cid;private String sender;private String reciver;private String content;private Date vdate;private Integer types;private Integer status;}  还有表示参加会议的人的信息,包括参会人名称、IP地址、状态等,如下面的ChatUser类所示: public class ChatUser {private String ip;private String port;private String userName;private Date lastAccessTime;private Integer status;}  另外还需要一个表示当前发言人的Talker类,表示当前的发言人,发言开始时间,发言预计结束时间等。  在服务器端的设计中,会议室信息服务器应该能以多线程的方式运行,即启动一个会议就新开一个线程,每个会议线程维护自己的会议状态,如参会人、发言人,保存会议历史发言信息以及清空内存中的数据等操作。  四、客户端设计  会议室客户端包括两个部分,一个部分是会议室的管理界面,主要包会议室的“添删改查”及“启动”或“关闭”会议服务的操作。这部分我们直接使用EasyJWeb Tools中的添删改查业务引擎AbstractCrudAction可以快速实现。界面也比较简单,直接使用EasyJWeb Tools代码生成工具引擎生成即可。会议室管理的客户端是传统的Java Web技术,因此没有什么要考虑的。  客户端的第二个部分也即会议系统的主要部分,该部分主要有两个界面,第一个页面是会议室进入的选择页面。也即把已经启动的会议室列出来,用户选择一个会议室进入,这个页面也是使用传统的Java Web技术。第二个页面是进入会议室后的主界面,这个界面是整个会议系统的主要界面,所有参与会议的操作都在这里运行的。这个界面需要不断的与服务器端交互传输数据,传输的内容包括用户的发言、其它人给用户的发言、会议室的状态等。有的传输信息需要即时响应(如用户发言),有的信息可以设置成定时响应(如会议室状态)。  Java Web程序中与服务器端交互数据主要有两种方式,一种是直接刷新页面,另外一种是使用Socket直接跟Web服务器端口通讯。由于Socket编程相对复杂,我们选择第一种直接刷新页面的方式,这种方式又可以分为几种,包括传统的Form提交,传统的自动刷新网页取得数据以及使用ActiveXObject对象(如xmlhttp)直接与服务器交互数据,也即AJAX方式。由于使用AJAX方式用户感觉不到页面在刷新,表现起来好于手动或自动刷新页面的方式,因此我们决定选择AJAX方式实现客户端与服务器端进行数据交互。  用户发言的时候,直接使用xmlhttp对象Post数据到服务器。为了能不断接收到别人的发言信息,需要定时不断的从服务器端读取数据,因此,需要在客户端启动一个定时器,每隔一定的时候自动使用xmlhttp对象到服务器端下载别人的发言信息,并显示到会议室信息主界面中。另外还要定时刷新参会的人数、会议室当前发言人、会议室的公告等会议状态信息,这也可以通过从客户端启动一个定时器,通过xmlhttp对象与服务器交互得到。  另外还有一些操作,锁定会议室、踢人、指定发言人的发言时间、给会议室加密码等功能,也通过xmlhttp的方式与服务器传输命令实现。共2页。 1 2 : 下载本文示例代码


用AJAX J2EE实现一个网上会议室系统用AJAX J2EE实现一个网上会议室系统用AJAX J2EE实现一个网上会议室系统用AJAX J2EE实现一个网上会议室系统用AJAX J2EE实现一个网上会议室系统用AJAX J2EE实现一个网上会议室系统用AJAX J2EE实现一个网上会议室系统用AJAX J2EE实现一个网上会议室系统用AJAX J2EE实现一个网上会议室系统用AJAX J2EE实现一个网上会议室系统用AJAX J2EE实现一个网上会议室系统用AJAX J2EE实现一个网上会议室系统用AJAX J2EE实现一个网上会议室系统用AJAX J2EE实现一个网上会议室系统用AJAX J2EE实现一个网上会议室系统
阅读(144) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~