第Ⅰ部分 RIA简介 3
第1章 RIA的特征 3
1.1 RIA就是“塑料信用卡” 3
1.1.1一个可塑性(动态的)Web页面的示例 4
1.1.2用样式表创建更好的页面 6
1.2 RIA:Web具有颠覆性(最终) 7
1.3 RIA是无形性的 9
1.3.1 Google的无形性 9
1.3.2关注RIA 10
1.4 RIA冲破“围墙花园” 11
1.5 RIA创建新花园 12
1.5.1无围墙花园中的约束 12
1.5.2“反宣言” 14
1.6 RIA总是最新的 16
1.7 RIA是操作系统终结者 17
1.7.1 Web 2.0分层 17
1.7.2层叠样式表 18
1.7.3超越桌面时代 18
1.7.4 Java是成功者还是失败者 18
1.8 RIA是以浏览器为中心的 19
1.9 RIA是以网络为中心的 20
1.10 RIA是一种思想的转变 21
1.10.1开发人员的思想转变 21
1.10.2我们的思想转变 22
1.11 RIA是服务软件 22
1.12 RIA应用程序以用户为中心 23
1.13 RIA本质上是一种协作 23
1.14 RIA:小而敏捷的开发 24
1.15 RIA跳跃式变化 24
1.16如何改变开发应用程序的方式 25
1.17 RIA的盈利方式 26
1.18 RIA是诱人的 27
第2章 RIA基础知识 33
2.1 XML: Internet的通用语 34
2.1.1 XML基础 34
2.1.2使用属性 35
2.1.3 DOM树 36
2.2 XHTML:一种文档语言 39
2.2.1文档结构 40
2.2.2文本结构 41
2.2.3描述文本类型 42
2.2.4文本内对象 43
2.2.5文档配置 44
2.3 CSS:一种样式语言 45
2.3.1向Web页面上添加CSS 46
2.3.2用数字绘画 47
2.3.3 CSS级联摆动 49
2.3.4在RIA中充分利用CSS的优点 50
2.4 JavaScript:一种动态语言 51
2.4.1将JavaScript附加到Web页面中 51
2.4.2将JavaScript绑定到用户行为上 53
2.4.3从DOM树移除和添加 55
2.4.4检查并设置元素的内容 56
2.5结束示例——Angela’s Ristorante 57
2.6小结 62
第3章 可编程Web:混搭生态系统 63
3.1准备工作 64
3.2概述 65
3.2.1 xm1HttpRequest对象 65
3.2.2一个简单的最初混搭 67
3.2.3使用XML输出 67
3.2.4使用JSON输出 78
3.3代理服务器及其用途 85
3.3.1使用代理服务器 86
3.3.2不使用代理服务器 88
3.3.3 XML或者JSON 89
3.4 Yahoo和Google交通混搭 89
3.4.1获得一个地理代码 89
3.4.2获取交通报告 93
3.4.3向head中动态地注入script标记 95
3.4.4将终极混搭集中在一起 98
3.4.5综合应用程序混搭 102
3.5小结 107
第4章 创建RIA 109
4.1两种场景:假如餐馆和Web应用程序一样运作 109
4.1.1不寻常的餐厅 109
4.1.2另一种体验 110
4.1.3与Web应用程序的关系 111
4.2 AJAX与传统方法的比较 112
4.2.1传统Web应用程序 112
4.2.2传统Web应用程序的限制 114
4.2.3使用AJAX的Web应用程序 114
4.2.4和传统方法相比使用AJAX的优点 116
4.2.5 AJAX组件 116
4.3开发环境配置 116
4.4第一个RIA:Hello World 117
4.4.1创建Hello Worldvl.html 117
4.4.2添加一个JavaScript事件处理器 118
4.4.3定义JavaScript主体部分 118
4.4.4创建异步请求 119
4.4.5定义事件处理器函数 119
4.4.6定义回调函数 120
4.4.7处理服务器的响应 121
4.4.8完整的He11oWorldv3.html文件 123
4.4.9创建helloFiles目录 123
4.5添加服务器端 125
4.5.1编写服务器端PHP 125
4.5.2编写Java Servlet 128
4.5.3改进客户机应用程序 132
4.6小结 135
第Ⅱ部分 探索RIA 139
第5章 调试客户端 139
5.1调试工具 139
5.1.1 Firefox 140
5.1.2 Mozilla DOM Inspector 141
5.1.3 JavaScript控制台 142
5.1.4 Venkman 142
5.1.5 FireBug 143
5.1.6标记验证 145
5.1.7更多工具 145
5.2日志系统 145
5.2.1警告函数 147
5.2.2一种非常简单的记录器 147
5.2.3家庭作业 149
5.3小结 150
第6章 模型-视图-控制器(MVC)模式 151
6.1模式-视图-控制器 151
6.1.1起源:事物-模型-视图-编辑器 152
6.1.2模式-视图-控制器的细节 153
6.2在Java中使用MVC 157
6.2.1模型2体系结构 158
6.2.2 Java中健康病史的设计 160
6.2.3 Java的MVC架构 161
6.3 Web应用程序架构 163
6.3.1 Ruby on Rails:一种基于Ruby的MVC架构 165
6.3.2 TurboGears:一种基于Python的Rails选择 167
6.3.3 MVC实现方式的快速参考 170
6.4小结 171
第7章 JavaScript库概述 173
7.1 JavaScript库基础知识 174
7.1.1使用JavaScript库的原因 174
7.1.2各种库 176
7.1.3库属性 176
7.1.4库通常具有的功能 177
7.2 JavaScript库的细节 178
7.2.1 Dojo 178
7.2.2 MochiKit 181
7.2.3 Script.aculo.us 185
7.2.4 Yahoo!UI库 187
7.3 JavaScript库的快速参考 190
7.4小结 190
第8章 编译为JavaScript 191
8.1第一代竞争者 192
8.2 Google Web工具箱(GWT) 192
8.2.1 GWT的优点 193
8.2.2 GWT的缺点 194
8.2.3用GWT开发 194
8.2.4开发工具 197
8.2.5 GWT外观 198
8.2.6自动串行化 200
8.3 Ruby JavaScript(RJS) 201
8.3.1 RJS的优点 202
8.3.2 RJS的缺点 202
8.3.3 RJS开发 203
8.3.4 RJS外观 204
8.4小结 206
第9章 初识ideaStax 207
9.1 ideaStax操作概念 208
9.1.1创建新Stack、新Card、新Concept 209
9.1.2创建Card 211
9.2开始使用ideaStax:基本元素 214
9.2.1 ideaStax 214
9.2.2 MySQL 216
9.2.3 Ruby on Rails设置 216
9.3 ideaStax:实现细节 218
9.3.1解构Concept、 Card和Stack 218
9.3.2检验Concept、 Card和Stack 220
9.4实现视图 221
9.5实现控制器 223
9.5.1创建HTTP POST或GET测试 224
9.5.2将Ruby JavaScript结构作为一个局部呈现使用 224
9.6 Rails控制流程 227
9.7小结 228
第Ⅲ部分 RIA开发进级 233
第10章 表单有效性验证 233
10.1在系统中合并表单有效性验证 233
10.1.1服务器端完整表单的有效性验证 234
10.1.2客户端使用JavaScript进行有效性验证 234
10.1.3服务器端单个表单元素的异步有效性验证 235
10.2捕获用户信息 235
10.3禁用的用户表单 236
10.4有效性验证实践:使用Dojo进行客户端验证 241
10.4.1安装Dojo工具箱 242
10.4.2开始使用Dojo 242
10.4.3使用客户端验证函数 243
10.4.4使用Dojo验证小部件 243
10.5有效性验证实践:完整表单的服务器端验证 254
10.5.1实现服务器端有效性验证 255
10.5.2定义模型 255
10.5.3定义控制器 257
10.5.4定义Helper类 259
10.5.5编译运行Servlet 263
10.5.6通过扩充视图实现客户端验证 264
10.5.7通过添加其他表单字段的验证扩充Helper类 266
10.6有效性验证实践:用户名的服务器端验证 269
10.6.1扩充视图 270
10.6.2扩充控制器 272
10.7小结 273
第11章 表单的可用性 275
11.1概述 276
11.2可用表单 276
11.2.1表单中同步JavaScript的局限性 276
11.2.2 AJAX和JavaScript效果在表单中的优势 277
11.3表单可用性的实践:用服务器数据填充字段 278
11.3.1服务器端的实现 279
11.3.2通过增强视图实现客户端 285
11.4表单可用性的实践:使用服务器支持的组合框 288
11.4.1自动完成组合框的示例:汽车品牌 288
11.4.2由服务器填充的组合框示例:汽车型号 288
11.4.3服务器端的实现 290
11.4.4通过增强视图来实现客户端 293
11.5小结 299
第12章 拖放 303
12.1 Prototype和Script.aculo.us简介 303
12.1.1 Prototype和Script.aculo.us的性能 304
12.1.2获得Prototype和Script.aculo.us 304
12.2物理世界中的DOM元素 304
12.2.1 Draggable 305
12.2.2 Droppable 307
12.2.3排序列表 309
12.3上下文中的拖放:ideaStax编辑器 309
12.3.1基本设计 310
12.3.2设计拖放 312
12.3.3实现方案 312
12.4客户专用的ideaStax编辑器 313
12.4.1使用Script.aculo.us的Builder动态创建幻灯片 313
12.4.2用可拖动的幻灯片填充库 315
12.4.3创建可释放的编辑器窗格 318
12.4.4实现排序时间线 320
12.4.5客户专用实现方式小结 322
12.5服务器支持的ideaStax编辑器 323
12.5.1 Rails 324
12.5.2创建模型 325
12.5.3创建视图 330
12.5.4创建控制器 335
12.5.5端对端ideaStax编辑器 338
12.6小结 339
第13章 用户交互作用、效果和动画 341
13.1效果简介:隐藏和查找 342
13.2 script.aculo.us效果类 343
13.2.1使用效果 343
13.2.2示例:基于效果的通知 345
13.2.3将效果绑定到其他Script.aculo.us动作 347
13.2.4组合效果 349
13.3模式窗口和ideaStax预览器 349
13.3.1定位预览窗口 351
13.3.2抽取预览窗口 353
13.3.3切进切出预览窗口 354
13.3.4生成预览模式 355
13.3.5完成的模式预览 357
13.4小结 359
第14章 标记和分级(Ⅰ):创建基础组织 361
14.1标记问题 362
14.2标记应用程序 363
14.3数据挖掘 371
14.3.1下载照片元数据 371
14.3.2访问照片元数据 372
14.4建立数据模型 373
14.5建立数据表 374
14.5.1填充图片数据库 378
14.5.2建立Flickr照片接口 381
14.6评分标记 384
14.6.1使用样式来实现标记云 384
14.6.2来自Tagger的JSON数据 386
14.6.3数据库查找 387
14.6.4获得标记照片的服务器端CGI 389
14.6.5动态生成的RIAPage 390
14.7小结 391
第15章 标记和分级(Ⅱ):使用社会性能 393
15.1 Stax的现状 393
15.1.1 Stax设计中心 394
15.1.2检索概念和卡 396
15.1.3开始:基本要素 396
15.1.4实现控制器和视图 405
15.2小结 414
第Ⅳ部分 高级主题 419
第16章 提供API 419
16.1选择如何提供服务 419
16.1.1自产的解决方案 420
16.1.2 Web服务解决方案 420
16.1.3从正式中选择非正式 420
16.1.4通过HTTP提供服务 421
16.2计量访问 421
16.3定义接口 424
16.4 Stax的示例API 424
16.4.1写文档 424
16.4.2文档样本 424
16.4.3构造API 426
16.5小结 430
第17章 RIA小部件 431
17.1概述 432
17.2开始:基本要素 432
17.2.1使用Widget Converter(小部件转换器)打开小部件 433
17.2.2文件结构和包装 434
17.2.3小部件规范文件概述 435
17.3定义自己的第一个小部件:Hello World练习 435
17.3.1基本的Hello World小部件 435
17.3.2使用Widget Converter包装小部件 438
17.3.3扩充Hello World 438
17.4更有用的示例:合并Stax API 444
17.4.1建立示例 445
17.4.2创建基本小部件 445
17.4.3添加文件拖放 447
17.4.4将概念上传到Stax服务器 449
17.5小结 456
第18章 富沉浸式环境 457
18.1富沉浸式环境回顾:Magic Cap时代 458
18.2之后:Snow Crash时代 459
18.3现在:Second Life时代 460
18.4 Second Life:编程人员的观点 461
18.4.1 LSL数据类型 462
18.4.2状态 464
18.4.3 LSL语句和流程控制 467
18.5开始:Second Life的基本元素 468
18.6将Second Life连接到现实生活 469
18.7 Second Life的Web 2.0演示 472
18.7.1客户端(Second Life)查询生成器 472
18.7.2日查询处理程序的服务器端引用 474
18.8小结 475
第Ⅴ部分 附录 483
附录A Dojo确认函数和标记 483