2006年05月18日
www.easyjf.com全站源码
  EasyJF开源团队官网是使用超轻量的Java Web组合EasyJWeb+EasyDBO开发的。
  系统特点及主要功能:
  1、动态内容自动或手动生成静态htm文件;  
  2、菜单自动管理;
  3、在线模板管理;
  4、AJAX动态菜单;
  5、强大的网站信息发布功能;
  6、与官网其它系统的良好集成;
  7、后台全Java,模板页面便于修改及维护。
  功能说明及运行演示:
?????? http://www.easyjf.com/html/bbs/20060512/2025162165345295.htm?ejid=8666340670359399  
  
  全站源码已经给正式成员开放打包下载了,当然 非成员可以通过“源码/下载”下载栏目下载其中的几个部分。  



大峡 2006-05-16 01:30


http://kb.csdn.net/java/Articles/200605/8c36dffe-35b8-4d09-917e-055ae55ec45d.html

用AJAX+J2EE实现一个网上会议室系统
  今年大家都在炒作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;//聊天信息Chat
private final List users;//在线用户,ChatUser
private final List talkers;//排队发言人数Talker
private 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的方式与服务器传输命令实现。

http://www.dearbook.com.cn/Book/107080#addReview

《Ajax开发精要——概念、案例与框架》图书目录:
概念篇
第1章  Ajax介绍 2
1.1  Ajax的由来 2
1.2  Ajax的定义 3
1.3  Web应用程序的解决方案 5
1.4  Ajax的工作方式 7
1.5  小结 8
第2章  B/S请求响应机制与Web开发模式 9
2.1  HTTP请求响应模型 9
2.2  B/S架构的请求响应机制 12
2.3  Web开发模式 13
2.4  开发环境的设置与配置 19
2.4.1  下载Java开发工具包(JDK) 19
2.4.2  下载安装Tomcat 20
2.4.3  下载安装Eclipse 3.1.1 20
2.4.4  创建开发目录 22
2.5  小结 24
2.6  参考资料 25
第3章  Ajax概览 26
3.1  为什么使用Ajax 26
3.2  谁在使用Ajax 30
3.3  Ajax的应用方向 32
3.4  基于各种Web解决方案的Ajax技术选择路线 35
3.5  Ajax的缺陷 41
3.6  一个简单的Ajax例子 42
3.7  小结 47
第4章  Ajax用到的技术 48
4.1  HTML 48
4.1.1  HTML与Ajax 49
4.1.2  HTML常用标记 49
4.2  XML 62
4.2.1  XML与Ajax 63
4.2.2  XML基础 63
4.2.3  文档类型定义及声明 68
4.2.4  XML名域 71
4.2.5  操纵和解析XML 73
4.2.6  选择合适的XML生成方式 78
4.3  XHTML与CSS 83
4.3.1  XHTML、CSS与Ajax 84
4.3.2  XHTML与CSS基础 84
4.3.3  XHTML语法约束 85
4.4  Javascript 87
4.4.1  Javascript与Ajax 88
4.4.2  Javascript基本数据结构 89
4.4.3  Javascript表达式和运算符 91
4.4.4  Javascript的流程控制和函数 91
4.4.5  Javascript的对象 94
4.4.6  窗口及输入输出 98
4.5  DOM 98
4.5.1  DOM与Ajax 99
4.5.2  DOM眼中的HTML文档——树 99
4.5.3  HTML文档的节点 100
4.5.4  使用DOM操作HTML文档 102
4.5.5  使用DOM操作XML文档 113
4.6  XMLHttpRequest对象 116
4.6.1  XMLHttpRequest对象与Ajax 116
4.6.2  XMLHttpRequest对象的属性和方法 116
4.7  小结 122
4.8  参考资料 123
开发篇
第5章  简单的Ajax开发框架 126
5.1  如何使用Ajax 126
5.2  初始化对象 128
5.3  指定响应处理函数 129
5.4  发出http请求 129
5.5  处理服务器返回的信息 130
5.6  一个初步的Ajax开发框架 131
5.7  异常处理机制 136
5.8  中文乱码问题及其解决方案 137
5.9  小结 140
第6章  使用responseText处理返回的普通文本信息 141
6.1  案例1——数据校验 141
6.1.1  需求说明 142
6.1.2  案例解析 143
6.1.3  应用范围 152
6.2  案例2——级联菜单 152
6.2.1  需求说明 153
6.2.2  案例解析 154
6.2.3  应用范围 170
6.3  案例3——条目内容 170
6.3.1  需求说明 172
6.3.2  案例解析 172
6.3.3  应用范围 183
6.4  案例4——级联的下拉列表 184
6.4.1  需求说明 187
6.4.2  案例解析 188
6.4.3  应用范围 201
6.5  小结 202
第7章  使用responseXML处理返回的XML信息 204
7.1  案例5——获取元对象数据 205
7.1.1  需求说明 206
7.1.2  范例解析 206
7.1.3  应用范围 224
7.2  案例6——处理列表数据 224
7.2.1  需求说明 226
7.2.2  案例解析 227
7.2.3  应用范围 239
7.3  案例7——处理级联的数据 240
7.3.1  需求说明 240
7.3.2  案例解析 242
7.3.3  应用范围 251
7.4  案例8——更新保存数据 251
7.4.1  需求说明 252
7.4.2  案例解析 252
7.4.3  应用范围 280
7.5  小结 281
第8章  在普通文本和XML文档之间权衡 282
8.1  何时返回普通文本 282
8.2  何时返回XML文档 283
8.3  innerHTML的应用 284
8.4  小结 285
案例篇 
第9章  模拟MSN Space 288
9.1  MSN Space中的Ajax 288
9.2  持久化机制 294
9.3  实体类和服务类 298
9.4  初始化共享空间首页 326
9.5  固定链接 330
9.6  操作评论 332
9.6.1  添加评论 332
9.6.2  阅读评论 338
9.7  引用通告 338
9.8  管理列表项 341
9.8.1  初始化自定义列表首页 341
9.8.2  添加列表项目 348
9.8.3  编辑列表项目 351
9.8.4  删除列表项目 354
9.9  小结 356
第10章  Ajax封装 358
10.1  封装客户端Ajax操作 358
10.2  自定义标签扩展现有的HTML控件 359
10.3  规范服务器的返回数据 360
10.4  客户端脚本与服务器端对象的交互 361
10.5  小结 361
第11章  开源Ajax框架 363
11.1  DWR 363
11.1.1  DWR简介 363
11.1.2  DWR使用入门 365
11.1.3  试用DWR 373
11.1.4  DWR的适用范围 379
11.2  Ajax Tags 379
11.2.1  Ajax Tags简介 380
11.2.2  Ajax Tags标签及其使用方法 383
11.2.3  Ajax Tags的适用范围 399
11.3  AjaxAnywhere 400
11.3.1  AjaxAnywhere简介 400
11.3.2  Ajax Anywhere安装 401
11.3.3  AjaxAnywhere的类库及其用法 402
11.3.4  试用AjaxAnywhere 417
11.3.5  Ajax Anywhere的适用范围 421
11.4  SWATO 422
11.4.1  SWATO简介 422
11.4.2  SWATO快速安装 423
11.4.3  第一个服务类 424
11.4.4  注册服务 426
11.4.5  使用服务 427
11.4.6  SWATO的适用范围 429
11.5  小结 430
第12章  商业Ajax框架 431
12.1  Google Ajaxstl 431
12.2  锐道Dorado 431
12.3  小结 434
参考文献 435

http://www.blogjava.net/eamoi/archive/2005/11/07/18566.aspx

Element

Node.ELEMENT_NODE

1

元素节点

Text

Node.TEXT_NODE

3

文本节点

Document

Node.DOCUMENT_NODE

9

document

Comment

Node.COMMENT_NODE

8

注释的文本

DocumentFragment

Node.DOCUMENT_FRAGMENT_NODE

11

document片断

Attr

2006年05月08日

       明天就要去新公司报到了,有很多的末知,既然选择了就不乱想了。

       结束了这份一年多的工作,心态成熟了很多,不再像刚出校园一般茫目和浮躁。学会了多方面思考。继续沉淀吧。功夫总是不负有心人!

       感觉自己的年龄和技术都正在进入一个沉淀的阶段。学会冷静的分析思考,定能事倍功倍。在新的环境我要虚心向同事学习,尽力做好自己的工作。保持高涨的热情。希望每一天都有所收获。

      高效处理工作,尽力做好每一件事。相信自己的实力!尽快跟上大家的步伐,不要落后呀,哈哈 ^-^