第一部分 准备工作
第1章 Ajax、RPC和现代RIA简介
1.1 Web开发的简史:传统模式
1.1.1 全新时代的来临:PC时代
1.1.2 又一次革命:Web时代
1.2 传统Web应用程序的问题
1.3 Ajax来了
1.4 为什么说Ajax是范型转变?RIA简介
1.5 Ajax的缺点
1.6 第一个Ajax程序
1.6.1 剖析
1.6.2 什么是Ajax
1.7 引入Ajax库,降低工作量
1.8 Ajax的替代品
1.9 回归DWR
1.10 小结
第2章 DWR初探
2.1 首要问题:为什么首选DWR
2.2 DWR:面向Web的RPC
2.3 DWR体系结构概述
2.4 建立DWR开发环境
2.5 从一个简单的Web应用程序开始
2.5.1 基础:目录结构
2.5.2 从源代码到可执行文件:Ant生成脚本
2.5.3 应用程序配置文件:web.xml
2.5.4 标记文件:index.jsp
2.5.5 服务器端代码:MathServlet.java
2.5.6 运算执行者:MathDelegate.java
2.5.7 运行情况
2.6 向程序中加入DWR
2.7 DWR test/debug页面
2.8 配置DWR步骤1:web.xml
2.9 配置DWR步骤2:dwr.xml
2.9.1 内置的创建器和转换器
2.9.2 元素
2.9.3 元素
2.9.4 元素
2.10 与客户端的DWR交互
2.10.1 基本的调用语法
2.10.2 调用元数据对象方法
2.10.3 注意危险的语法
2.10.4 设置远程对象的bean
2.10.5 向回调函数传入更多信息
2.11 与服务器端的DWR交互
2.12 DWR配置和其他概念:engine.js文件
2.13 快速浏览DWR工具包:util.js
2.14 小结
第3章 DWR高级主题
3.1 DWR安全机制
3.1.1 默认拒绝
3.1.2 J2EE安全性和DWR
3.2 DWR应用程序的错误处理
3.2.1 处理警告
3.2.2 处理错误
3.2.3 处理异常
3.2.4 极端情况:不正确响应
3.2.5 处理异常情况的机制
3.2.6 关于异常的其他讨论
3.3 访问其他URL
3.4 反向Ajax
3.4.1 轮询
3.4.2 Comet
3.4.3 piggybacking
3.4.4 反向Ajax的实现代码
3.5 与其他框架和库集成
3.5.1 Spring
3.5.2 JSF
3.5.3 WebWork/Struts
3.5.4 “传统”Struts
3.5.5 Beehive
3.5.6 Hibernate
3.6 新旧混杂的注解
3.7 小结
第二部分 实践项目
第4章 InstaMail:基于Ajax的Webmail客户端程序
4.1 应用程序的需求和目标
4.2 剖析InstaMail
4.2.1 配置文件
4.2.2 客户端代码
4.2.3 服务器端代码
4.3 推荐的练习
4.4 小结
第5章 共享知识:DWiki,基于DWR的Wiki
5.1 应用程序的需求和目标
5.1.1 FreeMarker
5.1.2 Apache Derby
5.1.3 Spring JDBC
5.2 剖析DWiki
5.2.1 配置文件
5.2.2 客户端代码
5.2.3 服务器端代码
5.3 推荐的练习
5.4 小结
第6章 远程管理文件:DWR文件管理器
6.1 应用程序的需求和目标
6.1.1 dhtmlx UI组件
6.1.2 Jakarta Commons IO
6.1.3 Jakarta Commons FileUpload
6.2 剖析Fileman
6.2.1 配置文件
6.2.2 客户端代码
6.2.3 服务器端代码
6.3 推荐的练习
6.4 小结
第7章 进入企业号:基于DWR的报表门户
7.1 应用程序的需求和目标
7.1.1 Spring依赖注入(IoC)
7.1.2 DataVision
7.1.3 Quartz
7.1.4 script.aculo.us
7.1.5 示例数据库
7.2 剖析RePortal
7.2.1 配置文件
7.2.2 RePortal数据库
7.2.3 客户端代码
7.2.4 服务器端代码
7.3 推荐的练习
7.4 小结
第8章 DWR用于娱乐和赢利(一个DWR游戏)
8.1 应用程序的需求和目标
8.1.1 DWR注解
8.1.2 反向Ajax的应用
8.1.3 其他准备工作
8.2 剖析InMemoria
8.2.1 配置文件
8.2.2 客户端代码
8.2.3 服务器端代码
8.3 推荐的练习
8.4 小结
第9章 Timekeeper:DWR让项目管理更有趣
9.1 应用程序的需求和目标
9.1.1 HSQLDB
9.1.2 Hibernate
9.1.3 Ext JS
9.2 剖析Timekeeper
9.2.1 配置文件
9.2.2 客户端代码
9.2.3 服务器端代码
9.3 推荐的练习
9.4 小结