第1部分 Ajax入门 2
第1章 Ajax概述 2
1.1 什么是Ajax 2
1.1.1 Ajax概念的来历 2
1.1.2 Ajax的网站应用效果 3
1.1.3 Ajax技术的应用范围 6
1.2 Ajax:新的Web开发模式 6
1.2.1 传统的JavaScript模式 7
1.2.2 基于框架的不刷新模式 9
1.2.3 基于Ajax的Web 2.0模式 13
1.2.4 3种模式下的开发技术比较 16
1.3 Ajax中的真英雄 16
1.3.1 JavaScript客户端脚本语言 16
1.3.2 XMLHttpRequest数据交换对象 16
1.3.3 级联样式表技术(CSS) 17
1.3.4 网页中的文档对象模型(DOM) 17
1.3.5 各组成元素之间的交互 17
1.4 Ajax的实现步骤 18
1.4.1 创建异步调用的对象 18
1.4.2 加载数据所在的服务器 19
1.4.3 异步调用服务器状态的变化 20
1.4.4 发出一个HTTP请求 20
1.4.5 处理异步获取的数据 21
1.4.6 Ajax异步调用的完整示例 21
1.5 Ajax的缺点 24
第2部分 JavaScript精讲第2章 JavaScript语言基础 26
2.1 JavaScript概述 26
2.1.1 JavaScript、Jscript与ECMAScript 26
2.1.2 不同浏览器对JavaScript的支持 27
2.1.3 JavaScript在Ajax中的作用 27
2.2 JavaScript在HTML中的使用 28
2.2.1 在〈script〉〈/script〉中的使用 28
2.2.2 代码屏蔽 29
2.2.3 在单独文件中使用 30
2.2.4 作为属性值使用 31
2.3 JavaScript编辑和调试工具 31
2.3.1 编辑工具JavaScriptEditor简介 32
2.3.2 使用JavaScript Editor创建Ajax代码 32
2.3.3 使用浏览器调试JavaScript程序 34
2.4 JavaScript基本语法规则 37
2.4.1 执行顺序 37
2.4.2 大小写敏感 37
2.4.3 空白符与换行符 37
2.4.4 语句与分隔符 37
2.4.5 块 38
2.4.6 注释 38
2.5 JavaScript保留字 39
2.6 错误与调试 40
2.6.1 语法错误 40
2.6.2 逻辑错误 41
第3章 JavaScript数据类型和变量 42
3.1 简单数据类型 42
3.1.1 普通数值型 42
3.1.2 特殊数值型 42
3.1.3 字符型 43
3.1.4 Bolean布尔型 46
3.2 特殊数据类型 47
3.2.1 无定义数据类型(undefined) 47
3.2.2 空值(null) 47
3.3 变量 48
3.3.1 类型规则 48
3.3.2 声明变量 49
3.3.3 变量命名 49
3.3.4 作用范围 50
3.3.5 基本类型与合成类型 51
3.3.6 无用存储单元的收集 52
3.3.7 作为属性的变量 52
3.4 类型转换 53
3.4.1 转换规则 53
3.4.2 提升基本数据为对象 55
3.4.3 显式类型转换 55
3.5 使用值与使用引用 56
3.5.1 使用值操作数据 56
3.5.2 使用引用操作数据 56
3.5.3 原始类型与引用类型 57
3.5.4 举例 57
3.5.5 字符串的特殊性 59
第4章 运算符与表达式 60
4.1 表达式 60
4.2 算术运算符 61
4.2.1 加号(+)的特殊含义 61
4.2.2 减号(-)的特殊含义 62
4.3 赋值运算符 63
4.4 比较运算符 64
4.4.1 条件语句中使用=符号 64
4.4.2 比较运算符的自动转换 65
4.5 逻辑运算符 66
4.6 位运算符 66
4.6.1 普通位运算符 66
4.6.2 位移运算符 67
4.7 其他运算符 67
4.7.1 递增与递减运算符 67
4.7.2 算术运算符与位运算符的结合使用 68
4.7.3 ?:运算符 69
4.7.4 字符串比较 69
4.7.5 逗号(,)运算符 69
4.7.6 void运算符 70
4.7.7 typeof运算符 70
4.7.8 对象运算符 71
4.8 运算符优先级 73
第5章 流程控制语句和常用函数 75
5.1 条件判断语句:if语句 75
5.1.1 简单if语句 75
5.1.2 if...else语句 77
5.1.3 else if语句的应用 77
5.1.4 if语句的嵌套 79
5.2 条件判断语句:switch语句 80
5.3 循环控制语句 82
5.3.1 while循环 82
5.3.2 do-while循环 83
5.3.3 for循环 84
5.3.4 循环控制:continue与break 85
5.4 函数的定义与调用 86
5.4.1 定义函数 86
5.4.2 函数调用 87
5.5 全局变量与局部变量 90
5.6 参数变量可变的函数 92
5.7 创建动态函数 93
5.8 JavaScript的系统函数 93
5.8.1 URI编码处理函数 94
5.8.2 数值处理函数 94
5.8.3 字符串编码处理函数 97
5.9 Function构造函数与函数直接量 98
第6章 JavaScript对象与数组 100
6.1 JavaScript对象 100
6.1.1 对象的创建 100
6.1.2 对象的方法 102
6.1.3 原型对象和继承 103
6.1.4 面向对象的JavaScript 103
6.1.5 构造函数与this关键字 105
6.2 处理日期和时间:Date对象 106
6.2.1 创建一个日期对象 106
6.2.2 从Date对象中提取信息 107
6.2.3 设置日期对象的值 108
6.2.4 进行日期计算 109
6.2.5 其他Date对象的方法 110
6.3 进行数学运算:Math对象 111
6.3.1 将一个小数四舍五入到指定位数 112
6.3.2 使用随机函数Math.random() 112
6.4 使用数组:Array对象 113
6.4.1 创建一个数组 113
6.4.2 使用数组元素 114
6.4.3 使用多维数组 115
6.4.4 使用数组的length属性 116
6.4.5 使用数组对象的方法 117
6.5 处理文本:String对象 119
6.5.1 确定字符串的长度 119
6.5.2 搜索和提取子字符串 119
6.5.3 替换和匹配字符串 120
6.5.4 字符串对象的其他方法 121
6.6 处理图像:Image对象 121
6.6.1 使用Image存储多个图像 122
6.6.2 使用Image[]保存并读取图像 123
6.7 对象的高级应用 126
6.7.1 处理地址栏信息:location对象 126
6.7.2 控制前进和后退:使用history对象 128
6.7.3 文档操作初步:document对象 128
6.7.4 使用with()语句简化对象访问 132
6.8 浏览器检测对象 132
6.8.1 用于浏览器的navigator对象 132
6.8.2 检测初步 134
6.9 检测内容 136
6.9.1 JavaScript检测 136
6.9.2 JavaScript版本检测 137
6.9.3 JavaScript对象检测 138
6.9.4 Java检测 139
6.9.5 插件检测 139
6.9.6 语言检测 139
6.10 用于可视化检测的Screen对象 140
6.10.1 获取浏览器窗口大小 141
6.10.2 设置屏幕对象的尺寸 142
6.10.3 有选择地显示图片 144
6.11 高级检测技术:示例代码 144
6.12 浏览器控制:浏览器按键模拟 146
第7章 字符串处理和正则表达式 148
7.1 字符串对象 148
7.1.1 字符串合并 148
7.1.2 URL字符串编码和译码 149
7.2 正则表达式及其作用 149
7.3 元字符“?”与“()” 150
7.3.1 用?表示可选项 150
7.3.2 用()表示子匹配 150
7.4 RegExp对象及属性 151
7.4.1 静态属性 152
7.4.2 实例属性 152
7.5 RegExp对象的方法 153
7.5.1 test方法 153
7.5.2 exec方法 153
7.5.3 compile方法 154
7.5.4 综合举例 155
7.6 String对象中的相关方法 156
7.6.1 match方法 156
7.6.2 search方法 157
7.6.3 replace方法 158
7.6.4 split方法 158
7.7 限定符与选择匹配符 159
7.7.1 用限定符指定连续出现的次数 160
7.7.2 贪婪匹配与非贪婪匹配 160
7.7.3 用选择匹配符进行匹配选择 160
7.8 分组组合与反向引用符 161
7.8.1 分组组合 161
7.8.2 反向引用 161
7.8.3 非捕获匹配 161
7.8.4 正向“预测先行”匹配 161
7.8.5 反向“预测先行”匹配 162
7.9 特殊字符与字符匹配符 162
7.9.1 特殊字符 162
7.9.2 字符匹配符 162
7.10 定位符与原义字符 165
7.10.1 用^匹配目标字符串的开始位置 165
7.10.2 用$匹配目标字符串的结尾位置 166
7.10.3 用\b匹配一个字边界 166
7.10.4 用\B匹配非字边界 167
7.10.5 对特殊字符进行转义 167
7.11 实用举例 168
7.11.1 普通字符匹配 168
7.11.2 限制表单输入的内容 168
7.11.3 去除重复字符 169
7.11.4 从URL中提取文件名 169
7.11.5 匹配IP地址 169
第8章 JavaScript的事件处理机制 171
8.1 事件与事件处理概述 171
8.1.1 事件与事件名称 171
8.1.2 事件应用 172
8.2 基本事件模型 172
8.2.1 XHTML中的事件绑定 172
8.2.2 使用JavaScript绑定事件处理器 174
8.2.3 事件处理器的作用域 175
8.2.4 事件处理器的返回值 177
8.2.5 手动触发事件 177
8.3 IE 4+事件模型 178
8.3.1 绑定处理器至对象 178
8.3.2 Event对象 179
8.3.3 事件流 180
8.4 DOM2事件模型 181
8.4.1 绑定处理器至对象 181
8.4.2 Event对象 182
8.4.3 鼠标事件 183
8.4.4 取消默认动作 185
8.4.5 创建事件 187
8.5 接收键盘输入 189
8.5.1 使用keyPress事件 189
8.5.2 在Netscape中读取按键 189
8.5.3 在IE中读取按键 190
8.6 鼠标感应 192
8.6.1 弹出警告框 192
8.6.2 渐显图片 192
8.6.3 禁用鼠标右键 194
第9章 JavaScript的特效应用 195
9.1 日期时间设计 195
9.1.1 显示当前时间 195
9.1.2 显示当前日期和星期 197
9.1.3 同时显示日期、时间和星期 199
9.1.4 分时段问候 200
9.1.5 显示世界不同地区的当前时间 202
9.1.6 总是悬浮的时钟 207
9.2 计算器设计 209
9.2.1 简单的加减乘除运算 209
9.2.2 能进行四则混合运算的计算器 213
9.3 打字效果设计 216
9.4 随页面刷新更换页面背景 218
9.5 下拉菜单 219
9.5.1 基本应用 220
9.5.2 改进 221
9.5.3 渐显效果 224
9.6 DHTML菜单 227
9.6.1 模拟系统菜单 227
9.6.2 远程控制菜单 230
9.6.3 滑动菜单 233
9.7 常见菜单样式举例 236
9.7.1 弹出式菜单 236
9.7.2 浮动菜单 239
9.7.3 树型导航式菜单 241
第3部分 Ajax核心技术 248
第10章 Ajax的异步核心:XMLHttpRequest 248
10.1 XMLHttpRequest介绍 248
10.1.1 XMLHttpRequest概述 248
10.1.2 XMLHttpRequest实现机制 249
10.2 Ajax异步请求XMLHTTP的主要方法 249
10.2.1 加载服务器的方法Open 250
10.2.2 发送请求的方法Send 250
10.2.3 异步对象的其他方法 250
10.2.4 方法使用实例 251
10.3 Ajax中异步请求的主要属性 254
10.4 异步请求的主要事件 254
10.5 Ajax异步请求应用范例 255
10.5.1 Ajax返回字符串数据 255
10.5.2 Ajax读取XML类型数据 257
10.5.3 Ajax提交数据更新服务器内容 259
第11章 Ajax的基础架构:DOM模型 265
11.1 认识DOM 265
11.1.1 什么是DOM 265
11.1.2 DOM的由来 266
11.1.3 DOM在Ajax中的作用 266
11.2 DOM中的元素属性 267
11.2.1 DOM中数据的标准名称 267
11.2.2 用图例认识DOM中元素的属性 267
11.3 处理DOM中的节点 268
11.3.1 直接引用节点 268
11.3.2 间接引用节点 269
11.3.3 获取节点信息 270
11.3.4 处理属性节点 271
11.3.5 处理文本节点 272
11.3.6 因浏览器而异的空白节点 273
11.3.7 使用innerHTML改变节点的内容 274
11.4 改变文档的层次结构 275
11.4.1 使用document.createElement方法创建元素节点 275
11.4.2 使用document.createTextNode方法创建文本节点 275
11.4.3 使用appendChild方法添加节点 276
11.4.4 使用insertBefore方法插入子节点 276
11.4.5 使用replaceChild方法取代子节点 278
11.4.6 使用cloneNode方法复制节点 278
11.4.7 使用removeChild方法删除子节点 279
11.5 表格操作 280
11.5.1 表格操作概述 280
11.5.2 DOM1(DHTML)中表格对象的结构 281
11.5.3 创建一个表格对象 282
11.5.4 添加一行 282
11.5.5 添加单元格 282
11.5.6 引用单元格 284
11.5.7 使用单元格对象 284
11.5.8 删除行和单元格 284
11.5.9 交换两行的位置 287
11.5.10 交换两个单元格的位置 289
11.5.11 生成表格的其他方法 290
11.6 完整的Ajax调用DOM的实例 290
第12章 Ajax的外观设计:CSS样式表 293
12.1 CSS在Ajax中的作用 293
12.2 CSS样式表的结构 294
12.2.1 为页面引入CSS样式的方法 294
12.2.2 CSS的结构规则 297
12.3 深入了解CSS样式 298
12.3.1 CSS对字体的设置 298
12.3.2 CSS对背景的设置 298
12.3.3 CSS对文本的设置 298
12.3.4 CSS对布局的设置 299
12.4 CSS的设计工具TopStyle 299
12.5 JavaScript对CSS的调用 300
12.5.1 通过style对象改变节点的CSS 300
12.5.2 使用className属性指定节点样式 301
12.6 CSS的应用 303
12.6.1 使用标记选择器 303
12.6.2 使用类型选择器 304
12.6.3 使用id选择器 305
12.6.4 使用层次选择器 306
12.6.5 继承 307
12.6.6 样式应用就近原则 307
12.6.7 认识CSS中的盒模型 308
12.6.8 设计合理的CSS结构 310
12.6.9 用CSS滤镜制作发光效果的字体 310
12.6.10 用CSS滤镜演示字体的投影效果 311
12.7 Ajax调用CSS高级应用范例 312
12.7.1 使用Ajax动态改变局部元素样式 312
12.7.2 使用Ajax+CSS实现动态菜单效果 314
第13章 Ajax通信的数据载体——XML语言 319
13.1 认识XML 319
13.1.1 XML规范性 319
13.1.2 XML有效性 321
13.1.3 XML在Ajax中的作用 323
13.2 显示XML 323
13.2.1 使用XSLT将XML转换为HTML 323
13.2.2 XML与XHTML的结合 327
13.3 DOM与XML 329
13.3.1 Internet Explorer浏览器中的应用 329
13.3.2 Mozilla浏览器中的应用 333
13.4 IE XML数据岛 336
13.4.1 格式化输出 336
13.4.2 动态增删记录 337
13.5 一个RSS阅读器的例子——深入了解XML的应用 340
第14章 Ajax的服务器端编程 344
14.1 服务器端程序在Ajax中的角色 344
14.1.1 服务器端和客户端的输入/输出 344
14.1.2 Ajax技术的特点 345
14.1.3 Ajax传递参数的方法 345
14.1.4 Ajax也能设计接口 345
14.2 实现Ajax效果的级联菜单 347
14.2.1 设计数据库 347
14.2.2 服务器端处理文件 348
14.2.3 主界面和主调用程序 349
14.3 实现Ajax翻页效果 355
14.3.1 设计数据库 355
14.3.2 客户端分页显示的界面设计 356
14.3.3 分页显示需要的样式 356
14.3.4 使用Ajax实现客户端内容更新 357
14.3.5 通过ASP.NET控件直接得到HTML代码 358
14.3.6 后台分页函数的设计 358
14.3.7 关键字查询功能 359
14.3.8 Ajax实现的最终分页效果 363
第4部分 流行框架应用 366
第15章 Ajax组件使用范例 366
15.1 dojo组件的应用 366
15.1.1 dojo组件简介 366
15.1.2 在项目中添加doio组件 367
15.1.3 使用dojo组件实现卷帘效果的div隐藏 367
15.2 OpenRico框架的应用 368
15.2.1 OpenRico框架简介 369
15.2.2 将OpenRico框架加入到项目中 369
15.2.3 使用Open Rico实现可拖曳的层 369
15.2.4 使用Open Rico实现动态调色板 371
15.3 AjaxCaller框架的应用 373
15.3.1 AjaxCaller框架简介 373
15.3.2 使用AjaxCaller实现简单的定时任务 374
15.4 Microsoft提供的Ajax框架 375
第16章 ASP.NET Ajax开发 376
16.1 ASP.NET Ajax概述 376
16.1.1 ASP.NET Ajax的优势 376
16.1.2 ASP.NET Ajax的组成 376
16.1.3 一个最简单的ASP.NET Ajax实例 377
16.2 留言板概述 379
16.2.1 留言板程序所需要解决的问题 380
16.2.2 传统留言板的缺点 381
16.2.3 使用Ajax技术的好处 381
16.2.4 基本原理分析 381
16.3 数据库设计 382
16.3.1 数据库设计基本原理 382
16.3.2 数据表设计 382
16.3.3 配置存取ASP.NET服务的数据库 384
16.4 客户端程序设计 385
16.4.1 基本原理分析 385
16.4.2 用户注册页面 386
16.4.3 具备关机效果的用户登录页面 387
16.4.4 发表留言页面 387
16.4.5 留言板主页面 389
16.4.6 留言回复页面 391
16.4.7 留言板的短消息界面 394
16.4.8 用户定制界面 395
16.4.9 配置客户端启用服务 396
16.5 服务器端程序设计 396
16.5.1 回复消息时的数据库处理 396
16.5.2 短消息发送和获取的处理 399
16.5.3 数据库连接工具类 400
第17章 GWT框架开发 401
17.1 GWT概述 401
17.1.1 什么是GWT 401
17.1.2 GWT的优势 402
17.1.3 GWT技术架构 403
17.2 搭建GWT开发环境 404
17.2.1 GWT的下载 404
17.2.2 GWT的安装 405
17.3 开发GWT的程序 406
17.3.1 第一个GWT程序预览 406
17.3.2 创建GWT目录结构 407
17.3.3 创建UI界面 408
17.4 运行、测试和部署GWT程序 411
17.4.1 开发测试环境——宿主模式 411
17.4.2 发布应用——Web模式 411
17.4.3 使用Eclispe开发GWT 412
17.4.4 调试GWT程序 413
17.5 示例程序——个人所得税计算器 415
17.5.1 程序的界面效果 415
17.5.2 创建界面UI 416
17.5.3 使界面变得更漂亮 419
17.5.4 开发GWT应用的一般步骤 420
17.6 本章小结 421
第18章 GWT高级应用 422
18.1 常用的GWT组件 422
18.2 常用的布局面板 424
18.3 开发Ajax应用 425
18.3.1 创建XMLHttpRequest请求 425
18.3.2 示例程序——读取XML文件 426
18.4 解决浏览器历史记录问题 428
18.4.1 注册历史记录事件 428
18.4.2 示例程序——使用历史记录 428
18.5 GWT的RPC开发 430
18.5.1 什么是RPC 430
18.5.2 RPC技术架构图 430
18.5.3 定义服务 431
18.5.4 服务器端实现 432
18.5.5 客户端实现 432
18.5.6 调用RPC 433
18.6 本章小结 435
第5部分 典型案例 438
第19章 拖曳方式定制个性化主页 438
19.1 系统概述 438
19.1.1 系统目标:模仿Google ig 438
19.1.2 系统预览 439
19.1.3 系统构架 440
19.2 用户登录模块 441
19.2.1 原理分析 441
19.2.2 客户端代码 441
19.2.3 处理服务请求 442
19.2.4 服务器端代码 443
19.2.5 连接数据库 449
19.3 小窗口初始化模块 451
19.3.1 原理分析 451
19.3.2 数据库设计 452
19.3.3 访问数据库的实体类 452
19.3.4 父类代码的实现 454
19.3.5 创建欢迎小窗口 456
19.3.6 创建新闻RSS小窗口 456
19.3.7 创建书签小窗口 458
19.4 个性化主页模块 459
19.4.1 布局显示原理分析 459
19.4.2 数据库设计 459
19.4.3 创建访问数据库实体类 460
19.4.4 客户端代码 464
19.4.5 布局设置原理分析 466
19.4.6 关闭窗口自动保存布局 466
19.4.7 拖曳窗口自动保存布局 468
19.4.8 服务器端代码 471
19.5 拖曳原理分析 473
19.5.1 拖曳原理分析 473
19.5.2 释放原理分析 473
19.5.3 通用的拖放类 474
第20章 上传文件显示进度条 476
20.1 上传文件概述 476
20.1.1 上传文件的表单概述 476
20.1.2 上传文件后的服务器端处理 477
20.1.3 使用Apache的FlieUpload 479
20.1.4 使用Session记录上传进度 480
20.2 客户端实现 480
20.2.1 客户端原理分析 480
20.2.2 客户端代码 481
20.2.3 客户端请求处理 482
20.3 服务器端实现 483
20.3.1 服务器端原理分析 483
20.3.2 上传文件处理过程 484
20.3.3 获取上传信息 487
20.3.4 创建监听器类 489
20.3.5 注册监听器类 491
第21章 滑动显示分页 494
21.1 滑动显示分页概述 494
21.1.1 传统的分页显示 494
21.1.2 滑动分页显示 495
21.1.3 滑块基本原理 495
21.2 客户端实现 496
21.2.1 客户端基本原理 496
21.2.2 客户端页面代码 497
21.2.3 JavaScript代码分析 498
21.3 服务器端代码实现 501
21.3.1 服务器端请求处理 501
21.3.2 创建数据实体类 503
21.3.3 数据库设计 504
第22章 仿Windows关机效果 506
22.1 基本原理分析 506
22.1.1 Windows关机效果分析 506
22.1.2 网页中实现关机效果分析 507
22.2 代码实现 509
22.2.1 客户端代码 509
22.2.2 客户端脚本 510
22.2.3 封装lightbox类 512
22.3 服务器端代码 514
第23章 动态获取数据的树状菜单 516
23.1 树状菜单概述 516
23.1.1 什么是树状菜单 516
23.1.2 使用无序列表标记(ul) 517
23.1.3 使用CSS控制外观 517
23.1.4 展开和折叠涉及的关键技术 519
23.2 实现树状菜单的两种方式 519
23.2.1 完全在客户端实现 519
23.2.2 完全由服务器端实现 520
23.2.3 基于Ajax的实现 520
23.3 设计树状菜单的数据结构 521
23.3.1 设计树节点接口类 521
23.3.2 实现树结构的数据库设计 522
23.3.3 最终树结构实现类 523
23.3.4 服务端的数据处理 526
23.3.5 静态树状菜单的实现 527
23.4 动态获取数据的树状菜单 530
23.4.1 什么时候需要动态获取数据 530
23.4.2 服务器端的代码设计 530
23.4.3 创建获取数据的方法 532
23.4.4 处理取回数据的方法 533
23.4.5 服务器端的请求处理方法 534
第24章 RSS阅读器 536
24.1 RSS概述 537
24.1.1 什么是RSS 537
24.1.2 一个简单的RSS 2.0示例 538
24.1.3 〈channel〉元素说明 539
24.1.4 〈item〉元素说明 539
24.2 阅读RSS模块程序设计 540
24.2.1 客户端原理分析 540
24.2.2 客户端代码设计 540
24.2.3 创建RSSReader类 543
24.2.4 服务器端代码设计 546
24.2.5 创建LoadRSS类 547
24.3 添加RSS模块程序设计 550
24.3.1 客户端原理分析 550
24.3.2 客户端代码设计 551
24.3.3 服务器端代码设计 552
24.3.4 数据库设计 553
24.3.5 数据库访问类 556
第25章 搜索提示(Suggest) 559
25.1 搜索提示概述 559
25.1.1 Google Suggest介绍 559
25.1.2 搜索提示所带来的好处 560
25.1.3 基本原理分析 560
25.2 客户端代码 561
25.2.1 客户端原理分析 561
25.2.2 创建请求 562
25.2.3 处理返回数据 563
25.3 服务器端代码 565
25.3.1 服务器端原理分析 565
25.3.2 处理服务请求 565
25.3.3 数据库设计 566
第26章 基于Ajax的相册 568
26.1 基本原理分析 568
26.1.1 界面设计分析 568
26.1.2 CSS设计分析 569
26.1.3 图片放大原理分析 572
26.1.4 动态更换皮肤 573
26.2 Ajax程序设计 574
26.2.1 原理分析 574
26.2.2 创建XMLHttpRequest对象 575
26.2.3 发送请求 575
26.2.4 处理返回数据 576
26.3 服务器端程序设计 577
26.3.1 处理服务请求 577
26.3.2 创建实体访问类 579
26.3.3 数据库设计 580
第27章 基于Ajax的聊天室程序 583
27.1 聊天室概述 584
27.1.1 聊天室程序所需要解决的问题 584
27.1.2 传统聊天室的缺点 584
27.1.3 使用Ajax技术的好处 584
27.1.4 基本原理分析 585
27.2 数据库设计 585
27.2.1 数据库设计基本原理 585
27.2.2 数据表设计 585
27.2.3 创建表所对应的实体类 586
27.3 客户端程序设计 588
27.3.1 基本原理分析 588
27.3.2 选择聊天室页面 589
27.3.3 聊天室主页面 592
27.3.4 调用初始化方法 594
27.3.5 获得消息数据处理 595
27.3.6 发送消息数据处理 597
27.4 服务器端程序设计 598
27.4.1 刷新时获得消息请求的处理 598
27.4.2 发送消息请求的处理 600
27.4.3 数据库连接工具类 601