《疯狂Ajax讲义》是2013年电子工业出版社出版的图书,作者是李刚。
基本介绍
- 作者:李刚
- ISBN:9787121193941
- 页数:624
- 定价:79.00元
- 出版社:电子工业出版社
- 出版时间:2013-2
- 原作名:李刚
内容介绍
李刚编着的《疯狂Ajax讲义》为《疯狂AjaX讲义》的第3版,其中jQuery升级到1.8版本;Prototype升级到1.7.1版本;DwR升级到3.0版本。第3版最大更新是详细、全面地介绍了Ext Js 4.1的知识。由于Ext Js 4.1本身内容比较多,因此本书花了几百页来介绍Ext Js的功能和用法,这部分内容独立出来即可作为Ext Js 4.1的学习手册。
本书详细介绍了iQuery 1.8、Ext Js 4.1、Prototype 1.7.1、DWR这4个最常用的AjaX框架的用法,并针对每个框架提供了一个实用案例,让读者理论联繫实际。这部分内容是“疯狂软体教育中心”的标準讲义,它既包含了实际AjaX开发的重点和难点,也融人了大量学习者的学习经验和感悟。再由笔者以丰富的授课经验为基础,深入浅出地介绍它们,希望读者真正掌握Ajax开发的精髓。本书最后提供了2个综合性案例:Blog系统和电子拍卖系统,让读者将前面所学真正套用到实际项目中。电子拍卖系统是一个包含5个表、表之间具有複杂关联映射的系统,该案例採用目前最流行、最规範的轻量级.Java EE架构,将整个套用分为领域对象层、DAO层、业务逻辑层,然后用DWR作为AjaX引擎调用业务逻辑方法回响异步请求,系统许可权检查推迟到业务逻辑层完成,并使用HTTP Session跟蹤用户操作状态,从而避免用户刷新浏览器导致的浏览状态丢失。该案例对实际项目具有极好的指导价值和借鉴意义。该案例既提供了IDE无关的、基于Ant管理的项目源码,也提供了基于Eclipse IDE的项目源码,最大限度地满足读者的需求。
本书并非针对零基础的读者,书中不再包含HTML、CSS、JavaScript相关知识,这些知识是阅读本书的基础。本书适合有初步HTML、CSS、JavaScript基础的读者,或对企业套用前端开发不太熟悉的开发人员。如果你已经掌握本书上篇:《疯狂HTML 5/CSS 3/JavaScript讲义》内容,将非常适合阅读此书。
作者介绍
李刚,从事10多年的Java EE套用开发,现任疯狂软体教育中心教学总监。
疯狂Java实训营创始人,疯狂Java体系图书作者。曾任LITEON公司J2EE技术主管,负责该公司的企业信息化平台的架构设计。
51CTO专家门诊特邀嘉宾。
曾任广州电信、广东龙泉科技等公司的技术培训导师,广东技术师範学院计算机科学系的兼职副教授。
培训的学生已在华为、IBM、阿里软体、网易、电信盈科等名企就职。
国内着名高端IT技术作家,已出版《疯狂Java讲义》、《疯狂Android讲义》、《轻量级Java EE企业套用实战》、《疯狂Ajax讲义》、《疯狂XML讲义》、《经典Java EE企业套用实战》、《疯狂HTML 5/CSS 3/JavaScript讲义》、《Struts 2.x权威指南》等着作。其中疯狂Java体系图书均已得到广泛的市场认同,多次重印成为超级畅销书,并被多所“985”“211”院校选作教材。部分图书已被翻译成繁体中文版、授权到台湾地区。
作品目录
第1章 Ajax概述与Ajax初体验 1
1.1 重新思考Web套用 2
1.1.1 套用系统的发展史 2
1.1.2 传统Web套用的优势和缺点 5
1.2 重新设计Web套用 5
1.2.1 富Internet套用 6
1.2.2 使用Ajax 7
1.3 Ajax技术介绍 7
1.3.1 Ajax的工作方式 8
1.3.2 Ajax技术核心:XMLHttpRequest 8
1.3.3 Ajax的编程脚本:JavaScript语言 8
1.3.4 HTML页面的DOM模型 9
1.3.5 动态载入和显示数据 9
1.3.6 Ajax的特徵 10
1.3.7 Ajax带来的典型优势 11
1.4 开发传统的B/S聊天室 13
1.4.1 实现业务逻辑组件 14
1.4.2 实现控制器 16
1.4.3 实现视图 18
1.4.4 传统B/S聊天室的问题 19
1.5 Ajax聊天室 20
1.5.1 异步传送请求 20
1.5.2 解决多余刷新的问题 22
1.5.3 解析伺服器回响 24
1.5.4 何时传送请求 25
1.5.5 Ajax聊天室的特点 29
1.6 Ajax编程的技术难点 29
1.7 传统Web套用与Ajax套用的对比 31
1.8 本章小结 32
第2章 XMLHttpRequest对象详解 33
2.1 XMLHttpRequest对象概述 34
2.2 XMLHttpRequest的方法和属性 34
2.2.1 XMLHttpRequest的方法 35
2.2.2 XMLHttpRequest的属性 38
2.3 传送请求 41
2.3.1 传送简单请求 41
2.3.2 传送GET请求 43
2.3.3 传送POST请求 46
2.3.4 传送请求时的编码问题 47
2.3.5 传送XML请求 51
2.4 处理伺服器回响 54
2.4.1 处理的时机 54
2.4.2 使用文本回响 54
2.4.3 使用JSON回响 54
2.5 XMLHttpRequest对象的运行周期 57
2.6 Ajax必须解决的问题 58
2.6.1 跨浏览器问题 58
2.6.2 安全性问题 59
2.6.3 性能问题 61
2.7 本章小结 65
第3章 jQuery库详解 66
3.1 jQuery入门 67
3.1.1 理解jQuery的设计 67
3.1.2 下载和安装jQuery 68
3.1.3 让jQuery与其他JavaScript库共存 69
3.2 获取jQuery对象 69
3.2.1 jQuery核心函式 70
3.2.2 jQuery与jQuery.holdReady 71
3.2.3 以CSS选择器访问DOM元素 72
3.2.4 选择器的附加限定词 74
3.2.5 表单相关的选择器 77
3.3 jQuery操作类数组的工具方法 80
3.3.1 过滤相关方法 81
3.3.2 仿DOM导航查找的相关方法 83
3.3.3 连结方法 85
3.4 jQuery支持的方法 86
3.4.1 jQuery命名空间的方法 86
3.4.2 数据存储的相关方法 90
3.4.3 操作属性的相关方法 91
3.4.4 操作CSS属性的相关方法 93
3.4.5 操作元素内容的相关方法 96
3.4.6 操作DOM节点的相关方法 98
3.5 jQuery事件相关方法 103
3.5.1 绑定事件处理函式 103
3.5.2 特定事件相关的方法 105
3.5.3 事件对象 106
3.6 动画效果相关的方法 108
3.6.1 简单动画和複杂动画 108
3.6.2 操作动画伫列 111
3.7 jQuery的回调支持 112
3.7.1 回调支持的基本用法 112
3.7.2 创建Callbacks支持的选项 114
3.8 Ajax相关方法 116
3.8.1 三个工具方法 116
3.8.2 使用load方法 117
3.8.3 jQuery.ajax(options)与jQuery.ajaxSetup(options) 119
3.8.4 使用get/post方法 120
3.9 jQuery的Deferred对象 123
3.9.1 jQuery的异步调用 123
3.9.2 为多个耗时操作指定回调函式 127
3.9.3 为普通对象增加Defered接口 127
3.9.4 jQuery对象的promise方法 128
3.10 扩展jQuery和jQuery外挂程式 129
3.11 本章小结 130
第4章 基于jQuery的套用:电子相册系统 131
4.1 实现持久层 132
4.1.1 实现持久化类 132
4.1.2 配置SessionFactory 134
4.2 实现DAO组件 135
4.2.1 开发通用DAO组件 136
4.2.2 DAO接口定义 139
4.2.3 完成DAO组件的实现类 139
4.3 实现业务逻辑层 141
4.3.1 实现业务逻辑组件 141
4.3.2 配置业务逻辑组件 143
4.4 实现客户端调用 144
4.4.1 访问业务逻辑组件 144
4.4.2 处理用户登录 145
4.4.3 获得用户相片列表 148
4.4.4 处理翻页 149
4.4.5 通过隐藏iframe实现档案上传 150
4.4.6 页面载入时的处理 154
4.5 本章小结 155
第5章 Ext JS核心技术详解 157
5.1 Ext JS入门 158
5.1.1 下载和安装Ext JS 158
5.1.2 Ext 入门示例 159
5.1.3 使用Ext JS文档 160
5.2 核心工具方法 162
5.2.1 Ext的属性和获取浏览器特性 162
5.2.2 onReady方法 163
5.2.3 Ext.defer方法 163
5.2.4 Ext.apply和Ext.applyIf方法 164
5.2.5 Ext.define、Ext.create和Ext.extend方法 166
5.2.6 Ext.isXxx方法 169
5.2.7 Ext.each和Ext.iterate方法 169
5.2.8 Ext.namespace方法 170
5.3 Ext JS扩展的工具方法 171
5.3.1 为Array扩展的工具方法 171
5.3.2 为Date扩展的工具方法 173
5.3.3 为Function扩展的工具方法 173
5.3.4 为Number扩展的工具方法 174
5.3.5 为Object扩展的工具方法 175
5.3.6 为String扩展的工具方法 175
5.3.7 JSON支持 176
5.4 简化的DOM操作 177
5.4.1 Ext.get、Ext.getXxx和Ext.fly方法 177
5.4.2 Ext.query、Ext.select方法与Ext.dom.Query工具类 178
5.4.3 DOM元素的常用操作 182
5.4.4 使用Ext.DomHelper、Ext.Template动态生成HTML 188
5.5 动画处理 192
5.5.1 使用Ext.fx.Anim实现简单动画 192
5.5.2 使用Ext.fx.Animator实现多关键帧动画 194
5.5.3 为元素增加动画 195
5.6 Ext JS的事件处理 197
5.6.1 使用Ext.EventManager管理事件处理函式与Ext.EventObject事件对象 197
5.6.2 事件处理函式的执行範围和附加选项 200
5.6.3 使用Ext.util.Observable实现内部事件 201
5.7 实用工具集 203
5.7.1 Ext.util.HashMap与Ext.util.MixedCollection 203
5.7.2 使用Ext.util.Cookies操作Cookie 204
5.7.3 使用Ext.util.DelayedTask 处理延时任务 205
5.7.4 包装单击事件:Ext.util.ClickRepeater 205
5.7.5 使用Ext.util.TaskRunner与Ext.TaskManager 206
5.7.6 使用Ext.util.KeyMap与Ext.util.KeyNav为元素处理按键事件 207
5.8 拖放 209
5.8.1 使用Ext.dd.DD和Ext.dd.DDProxy创建可拖放元素 209
5.8.2 用Ext.dd.DragSource创建拖动源与用Ext.dd.DropTarget创建放目标 210
5.8.3 用Ext.dd.DragZone创建拖动源与用Ext.dd.DropZone创建放目标 212
5.9 Ajax支持 214
5.10 本章小结 217
第6章 Ext JS界面组件详解 218
6.1 容器、面板和视窗 219
6.1.1 使用Ext.Component 220
6.1.2 使用Ext.container.Container创建容器 222
6.1.3 使用Ext.panel.Panel创建面板 223
6.1.4 使用Ext.toolbar.ToolBar添加工具条 226
6.1.5 使用Ext.tab.Panel创建Tab面板 229
6.1.6 使用Ext.container.Viewport整体布局 231
6.1.7 使用Ext.window.Window创建视窗 234
6.1.8 使用Ext.window.MessageBox创建对话框 235
6.2 布局 238
6.2.1 容器与布局的关係 238
6.2.2 垂直布局与水平布局 238
6.2.3 使用Ext.resizer.Resizer为组件增加大小调整功能 239
6.2.4 使用Ext.resizer.Splitter为盒布局增加大小调整的功能 241
6.2.5 使用Ext.layout.container.Accordion实现摺叠布局 242
6.2.6 使用Ext.layout.container.Border实现框线布局 244
6.2.7 使用Ext.layout.container.Table实现表格布局 245
6.2.8 使用Ext.layout.container.Column实现列布局 246
6.2.9 使用Ext.layout.container.Auto实现自动布局 248
6.2.10 使用Ext.layout.container.Fit实现自适应布局 249
6.2.11 使用Ext.layout.container.Card实现卡片布局 250
6.2.12 使用Ext.layout.container.Anchor实现锚布局 252
6.2.13 使用Ext.layout.container.Absolute实现绝对布局 253
6.3 选单及选单项 254
6.3.1 使用选单 254
6.3.2 使用Ext.menu.CheckItem实现可勾选选单项 256
6.3.3 使用Ext.menu.ColorPicker创建颜色选择器选单 257
6.3.4 使用Ext.menu.DatePicker创建日期选择选单 258
6.4 按钮 259
6.4.1 使用按钮 259
6.4.2 带选单的按钮 261
6.4.3 带分割线的按钮:Ext.button.Split 263
6.4.4 多状态按钮:Ext.button.Cycle 264
6.4.5 使用Ext.container.ButtonGroup创建按钮组 266
6.4.6 使用Ext.Action 267
6.5 其他组件及实用功能 270
6.5.1 使用Ext. ProgressBar创建进度条 270
6.5.2 使用Ext.slider.Single创建滑动条 274
6.5.3 使用Ext.slider.Multi创建多滑块滑动条 276
6.5.4 使用Ext.Img创建图片 277
6.5.5 使用Ext.Editor创建编辑器 278
6.5.6 使用Ext.tip.ToolTip创建提示 279
6.5.7 使用Ext.tip.QuickTipManager和Ext.tip.QuickTip创建提示 283
6.5.8 使用Ext.ux.GMapPanel实现Google地图 284
6.6 表单 286
6.6.1 使用Ext.form.Panel与Ext.form.Basic创建表单 288
6.6.2 配置输入校验选项 292
6.6.3 使用vtype选项配置输入校验 294
6.6.4 使用Ext.form.action.Submit提交表单 297
6.6.5 使用Ext.form.action.Load为表单装载数据 300
6.6.6 使用Ext.form.action.StandardSubmit提交表单 303
6.6.7 单行文本框、密码框 303
6.6.8 使用Ext.form.field.Number 创建数值框 305
6.6.9 使用Ext.form.field.Date创建日期选择框 306
6.6.10 使用Ext.form.field.Spinner创建微调选择框 308
6.6.11 使用Ext.form.field.TextArea创建文本域 309
6.6.12 使用Ext.form.field.HtmlEditor创建富文本编辑器 310
6.6.13 使用Ext.form.field.File上传档案 311
6.6.14 使用Ext.form.field.Checkbox创建複选框 314
6.6.15 使用Ext.form.field.Radio创建单选按钮 317
6.6.16 使用Ext.form.field.ComboBox创建複合框 319
6.6.17 使用远程数据、queryMode为local的複合框 321
6.6.18 queryMode为remote的複合框 323
6.6.19 为Ext.form.field.ComboBox增加分页功能 325
6.6.20 实现Ext.form.field.ComboBox二级联动 327
6.6.21 使用Ext.form.FieldSet组合表单控制项 330
6.7 Ext JS的数据中心 332
6.7.1 Ext.data.Model与Ext.data.Field 332
6.7.2 使用Ext.data.proxy.Proxy和Ext.data.reader.Reader读取数据 335
6.7.3 Ext.data.Store及其子类 336
6.8 使用Ext.grid.Panel生成表格 337
6.8.1 使用Ext.grid.Panel生成表格 337
6.8.2 使用Ext.grid.column.Column定义列 339
6.8.3 使用Ext.grid.Panel显示远程数据 342
6.8.4 对Ext.grid.Panel表格进行分页 343
6.8.5 对本地数据进行分页 344
6.8.6 表格数据排序和过滤 346
6.8.7 通过表格特性对表格数据进行分组 347
6.8.8 开发动态编辑的表格 349
6.8.9 允许拖动数据的表格 352
6.8.10 使用Ext.grid.column.Action 操作表格数据 356
6.9 使用Ext.tree.Panel生成树 360
6.9.1 树有关的类及简单树 360
6.9.2 添加、删除、修改树节点 362
6.9.3 带複选框的树节点 365
6.9.4 表格树 366
6.9.5 异步载入树节点 368
6.9.6 树节点的拖放与通过拖放更新底层数据 372
6.10 本章小结 376
第7章 Prototype库详解 377
7.1 Prototype的下载和安装 378
7.1.1 什幺是Prototype库 378
7.1.2 下载和安装Prototype库 379
7.1.3 使用Prototype对象 379
7.2 Prototype的工具函式 380
7.2.1 使用$()函式 380
7.2.2 使用$$()函式 382
7.2.3 使用$A()函式 384
7.2.4 使用$F()函式 385
7.2.5 使用$w()函式 386
7.2.6 使用$H()函式 386
7.2.7 使用$R()函式 387
7.2.8 使用Try.these()函式 388
7.3 Prototype的JSON支持 389
7.4 Prototype的自定义对象和类 390
7.4.1 使用Element对象 390
7.4.2 使用Element.Methods 394
7.4.3 使用Enumerable 394
7.4.4 使用ObjectRange 398
7.4.5 使用Form.Element操作表单控制项 399
7.4.6 使用Form操作表单 400
7.4.7 使用Hash对象 402
7.4.8 使用Event 404
7.4.9 使用Template 405
7.4.10 使用Class 406
7.4.11 两个常用的监听器 407
7.5 Prototype常用的扩展 409
7.5.1 扩展Array 409
7.5.2 扩展document 410
7.5.3 扩展String 411
7.5.4 扩展Function 414
7.5.5 扩展Number 415
7.6 Prototype的Ajax支持 416
7.6.1 使用Ajax.Request类 416
7.6.2 利用Form.request方法 420
7.6.3 使用Ajax.Responders对象 421
7.6.4 使用Ajax对象 422
7.6.5 使用Ajax.Updater类 423
7.6.6 使用Ajax.PeriodicalUpdater类 426
7.7 本章小结 428
第8章 基于Prototype库的套用:自动完成 429
8.1 套用的基本分析和持久层设计 430
8.1.1 数据要求 430
8.1.2 实现持久化类 430
8.1.3 实现DAO组件 432
8.1.4 部署DAO组件 434
8.2 实现Service组件 435
8.3 使用Servlet提供伺服器回响 437
8.3.1 根据前缀查询品牌 438
8.3.2 根据品牌查询型号 439
8.3.3 根据型号查询详细信息 439
8.4 客户端HTML页面实现 440
8.5 增加HTML页面的事件回响能力 442
8.5.1 实现品牌输入框的事件处理器 442
8.5.2 实现键盘事件的处理器 444
8.5.3 根据品牌提示型号 446
8.5.4 根据型号显示描述 447
8.5.5 注册Ajax事件监听器 448
8.6 本章小结 449
第9章 DWR框架详解 451
9.1 DWR的下载和安装 452
9.1.1 什幺是DWR 452
9.1.2 下载和安装DWR 453
9.2 使用DWR 457
9.2.1 编写处理类 458
9.2.2 配置DWR 460
9.3 使用DWR的转换器 461
9.3.1 基本转换器 461
9.3.2 对象转换器 462
9.3.3 数组转换器 464
9.3.4 集合类型转换器 464
9.4 方法声明定义 465
9.5 使用DWR的创建器 466
9.5.1 创建器的配置 466
9.5.2 使用new创建器 468
9.5.3 使用none创建器 469
9.5.4 使用script创建器 469
9.6 调用伺服器端的方法 470
9.6.1 调用伺服器端方法的通用配置 471
9.6.2 使用简单回调 472
9.6.3 使用JSON格式的回调 476
9.6.4 将客户端参数传递到回调函式 479
9.7 使用engine.js 480
9.7.1 设定调用顺序 480
9.7.2 设定全局逾时时长 481
9.7.3 设定全局Hook函式 481
9.7.4 设定全局处理函式 481
9.7.5 设定常用的全局选项 482
9.7.6 批处理 482
9.8 使用util.js 483
9.8.1 使用$() 483
9.8.2 处理列表 483
9.8.3 处理表格 488
9.8.4 访问HTML元素值 492
9.8.5 几个工具函式 494
9.9 整合第三方Java EE框架 496
9.9.1 访问Servlet API 496
9.9.2 整合Spring 500
9.10 使用DWR注释 502
9.10.1 初始配置 502
9.10.2 标注创建器和转换器 503
9.11 异常处理 504
9.12 反向Ajax 506
9.12.1 配置反向Ajax 506
9.12.2 在Java方法中操作Web页 507
9.12.3 在客户端调用反向Ajax方法 509
9.13 DWR 3简化的档案上传 510
9.13.1 档案上传的处理类 510
9.13.2 调用JavaScript完成档案上传 512
9.14 本章小结 514
第10章 基于DWR的套用:即时讯息系统 515
10.1 实现Hibernate持久层 516
10.1.1 实现持久化类 516
10.1.2 将POJO映射成持久化对象 518
10.2 实现DAO组件 519
10.2.1 实现DAO组件 519
10.2.2 部署DAO组件 520
10.3 实现业务逻辑组件 521
10.3.1 业务逻辑组件的接口 521
10.3.2 业务逻辑组件的实现类 522
10.3.3 部署业务逻辑组件 525
10.4 开发DWR前端处理类 526
10.4.1 实现DWR前端处理组件 526
10.4.2 为前端处理器增加许可权控制 528
10.5 处理异步请求 529
10.5.1 将Spring容器中的Bean创建成JavaScript对象 529
10.5.2 处理用户登录 531
10.5.3 处理用户注册 532
10.5.4 处理讯息发布 534
10.5.5 获取讯息列表 535
10.5.6 处理分页 536
10.5.7 查看讯息内容 537
10.5.8 页面载入时的处理 538
10.6 本章小结 539
第11章 基于Ext JS 4.1的套用:简易Blog系统 540
11.1 实现Hibernate持久层 541
11.1.1 设计Hibernate的持久化类 541
11.1.2 完成映射档案 543
11.2 实现DAO组件 545
11.2.1 DAO接口定义 546
11.2.2 实现DAO组件 546
11.2.3 配置DAO组件 547
11.3 实现业务逻辑组件 548
11.3.1 业务逻辑组件的接口 548
11.3.2 业务逻辑组件的实现类 549
11.3.3 配置业务逻辑组件 552
11.4 使用Ext JS开发前端 553
11.4.1 初始化界面 553
11.4.2 显示指定Blog文章 557
11.4.3 显示回複列表 559
11.4.4 添加回复 561
11.4.5 发表新Blog文章
11.5 本章小结 569
第12章 Ajax实例:电子拍卖系统 570
12.1 总体说明和概要设计 571
12.1.1 系统的总体架构设计 571
12.1.2 资料库设计 572
12.2 实现Hibernate持久化类 573
12.2.1 设计Domain Object 574
12.2.2 实现Domain Object 575
12.3 DAO层实现 579
12.3.1 DAO的基础配置 579
12.3.2 实现DAO组件 580
12.3.3 部署DAO组件 583
12.4 业务逻辑层实现 584
12.4.1 设计业务逻辑组件 584
12.4.2 依赖注入DAO组件 586
12.4.3 业务逻辑组件的异常处理 587
12.4.4 处理用户竞价 588
12.4.5 判断拍卖物品状态 590
12.4.6 事务管理 592
12.4.7 配置业务层组件 592
12.5 暴露前端处理方法 595
12.5.1 定义DWR前端处理类 595
12.5.2 初始化Spring容器 597
12.5.3 配置DWR的核心Servlet 597
12.5.4 暴露前端处理方法 598
12.5.5 对前端处理方法增加许可权检查 600
12.6 调用前端处理方法回响用户请求 601
12.6.1 页面载入时的函式 601
12.6.2 处理返回首页的请求 602
12.6.3 浏览所有流拍物品 602
12.6.4 处理用户登录 605
12.6.5 管理物品 609
12.6.6 管理物品种类 612
12.6.7 查看竞得物品 616
12.6.8 查看自己的竞价记录 617
12.6.9 浏览拍卖物品 619
12.6.10 参与竞价 621
12.7 本章小结 624
1.1 重新思考Web套用 2
1.1.1 套用系统的发展史 2
1.1.2 传统Web套用的优势和缺点 5
1.2 重新设计Web套用 5
1.2.1 富Internet套用 6
1.2.2 使用Ajax 7
1.3 Ajax技术介绍 7
1.3.1 Ajax的工作方式 8
1.3.2 Ajax技术核心:XMLHttpRequest 8
1.3.3 Ajax的编程脚本:JavaScript语言 8
1.3.4 HTML页面的DOM模型 9
1.3.5 动态载入和显示数据 9
1.3.6 Ajax的特徵 10
1.3.7 Ajax带来的典型优势 11
1.4 开发传统的B/S聊天室 13
1.4.1 实现业务逻辑组件 14
1.4.2 实现控制器 16
1.4.3 实现视图 18
1.4.4 传统B/S聊天室的问题 19
1.5 Ajax聊天室 20
1.5.1 异步传送请求 20
1.5.2 解决多余刷新的问题 22
1.5.3 解析伺服器回响 24
1.5.4 何时传送请求 25
1.5.5 Ajax聊天室的特点 29
1.6 Ajax编程的技术难点 29
1.7 传统Web套用与Ajax套用的对比 31
1.8 本章小结 32
第2章 XMLHttpRequest对象详解 33
2.1 XMLHttpRequest对象概述 34
2.2 XMLHttpRequest的方法和属性 34
2.2.1 XMLHttpRequest的方法 35
2.2.2 XMLHttpRequest的属性 38
2.3 传送请求 41
2.3.1 传送简单请求 41
2.3.2 传送GET请求 43
2.3.3 传送POST请求 46
2.3.4 传送请求时的编码问题 47
2.3.5 传送XML请求 51
2.4 处理伺服器回响 54
2.4.1 处理的时机 54
2.4.2 使用文本回响 54
2.4.3 使用JSON回响 54
2.5 XMLHttpRequest对象的运行周期 57
2.6 Ajax必须解决的问题 58
2.6.1 跨浏览器问题 58
2.6.2 安全性问题 59
2.6.3 性能问题 61
2.7 本章小结 65
第3章 jQuery库详解 66
3.1 jQuery入门 67
3.1.1 理解jQuery的设计 67
3.1.2 下载和安装jQuery 68
3.1.3 让jQuery与其他JavaScript库共存 69
3.2 获取jQuery对象 69
3.2.1 jQuery核心函式 70
3.2.2 jQuery与jQuery.holdReady 71
3.2.3 以CSS选择器访问DOM元素 72
3.2.4 选择器的附加限定词 74
3.2.5 表单相关的选择器 77
3.3 jQuery操作类数组的工具方法 80
3.3.1 过滤相关方法 81
3.3.2 仿DOM导航查找的相关方法 83
3.3.3 连结方法 85
3.4 jQuery支持的方法 86
3.4.1 jQuery命名空间的方法 86
3.4.2 数据存储的相关方法 90
3.4.3 操作属性的相关方法 91
3.4.4 操作CSS属性的相关方法 93
3.4.5 操作元素内容的相关方法 96
3.4.6 操作DOM节点的相关方法 98
3.5 jQuery事件相关方法 103
3.5.1 绑定事件处理函式 103
3.5.2 特定事件相关的方法 105
3.5.3 事件对象 106
3.6 动画效果相关的方法 108
3.6.1 简单动画和複杂动画 108
3.6.2 操作动画伫列 111
3.7 jQuery的回调支持 112
3.7.1 回调支持的基本用法 112
3.7.2 创建Callbacks支持的选项 114
3.8 Ajax相关方法 116
3.8.1 三个工具方法 116
3.8.2 使用load方法 117
3.8.3 jQuery.ajax(options)与jQuery.ajaxSetup(options) 119
3.8.4 使用get/post方法 120
3.9 jQuery的Deferred对象 123
3.9.1 jQuery的异步调用 123
3.9.2 为多个耗时操作指定回调函式 127
3.9.3 为普通对象增加Defered接口 127
3.9.4 jQuery对象的promise方法 128
3.10 扩展jQuery和jQuery外挂程式 129
3.11 本章小结 130
第4章 基于jQuery的套用:电子相册系统 131
4.1 实现持久层 132
4.1.1 实现持久化类 132
4.1.2 配置SessionFactory 134
4.2 实现DAO组件 135
4.2.1 开发通用DAO组件 136
4.2.2 DAO接口定义 139
4.2.3 完成DAO组件的实现类 139
4.3 实现业务逻辑层 141
4.3.1 实现业务逻辑组件 141
4.3.2 配置业务逻辑组件 143
4.4 实现客户端调用 144
4.4.1 访问业务逻辑组件 144
4.4.2 处理用户登录 145
4.4.3 获得用户相片列表 148
4.4.4 处理翻页 149
4.4.5 通过隐藏iframe实现档案上传 150
4.4.6 页面载入时的处理 154
4.5 本章小结 155
第5章 Ext JS核心技术详解 157
5.1 Ext JS入门 158
5.1.1 下载和安装Ext JS 158
5.1.2 Ext 入门示例 159
5.1.3 使用Ext JS文档 160
5.2 核心工具方法 162
5.2.1 Ext的属性和获取浏览器特性 162
5.2.2 onReady方法 163
5.2.3 Ext.defer方法 163
5.2.4 Ext.apply和Ext.applyIf方法 164
5.2.5 Ext.define、Ext.create和Ext.extend方法 166
5.2.6 Ext.isXxx方法 169
5.2.7 Ext.each和Ext.iterate方法 169
5.2.8 Ext.namespace方法 170
5.3 Ext JS扩展的工具方法 171
5.3.1 为Array扩展的工具方法 171
5.3.2 为Date扩展的工具方法 173
5.3.3 为Function扩展的工具方法 173
5.3.4 为Number扩展的工具方法 174
5.3.5 为Object扩展的工具方法 175
5.3.6 为String扩展的工具方法 175
5.3.7 JSON支持 176
5.4 简化的DOM操作 177
5.4.1 Ext.get、Ext.getXxx和Ext.fly方法 177
5.4.2 Ext.query、Ext.select方法与Ext.dom.Query工具类 178
5.4.3 DOM元素的常用操作 182
5.4.4 使用Ext.DomHelper、Ext.Template动态生成HTML 188
5.5 动画处理 192
5.5.1 使用Ext.fx.Anim实现简单动画 192
5.5.2 使用Ext.fx.Animator实现多关键帧动画 194
5.5.3 为元素增加动画 195
5.6 Ext JS的事件处理 197
5.6.1 使用Ext.EventManager管理事件处理函式与Ext.EventObject事件对象 197
5.6.2 事件处理函式的执行範围和附加选项 200
5.6.3 使用Ext.util.Observable实现内部事件 201
5.7 实用工具集 203
5.7.1 Ext.util.HashMap与Ext.util.MixedCollection 203
5.7.2 使用Ext.util.Cookies操作Cookie 204
5.7.3 使用Ext.util.DelayedTask 处理延时任务 205
5.7.4 包装单击事件:Ext.util.ClickRepeater 205
5.7.5 使用Ext.util.TaskRunner与Ext.TaskManager 206
5.7.6 使用Ext.util.KeyMap与Ext.util.KeyNav为元素处理按键事件 207
5.8 拖放 209
5.8.1 使用Ext.dd.DD和Ext.dd.DDProxy创建可拖放元素 209
5.8.2 用Ext.dd.DragSource创建拖动源与用Ext.dd.DropTarget创建放目标 210
5.8.3 用Ext.dd.DragZone创建拖动源与用Ext.dd.DropZone创建放目标 212
5.9 Ajax支持 214
5.10 本章小结 217
第6章 Ext JS界面组件详解 218
6.1 容器、面板和视窗 219
6.1.1 使用Ext.Component 220
6.1.2 使用Ext.container.Container创建容器 222
6.1.3 使用Ext.panel.Panel创建面板 223
6.1.4 使用Ext.toolbar.ToolBar添加工具条 226
6.1.5 使用Ext.tab.Panel创建Tab面板 229
6.1.6 使用Ext.container.Viewport整体布局 231
6.1.7 使用Ext.window.Window创建视窗 234
6.1.8 使用Ext.window.MessageBox创建对话框 235
6.2 布局 238
6.2.1 容器与布局的关係 238
6.2.2 垂直布局与水平布局 238
6.2.3 使用Ext.resizer.Resizer为组件增加大小调整功能 239
6.2.4 使用Ext.resizer.Splitter为盒布局增加大小调整的功能 241
6.2.5 使用Ext.layout.container.Accordion实现摺叠布局 242
6.2.6 使用Ext.layout.container.Border实现框线布局 244
6.2.7 使用Ext.layout.container.Table实现表格布局 245
6.2.8 使用Ext.layout.container.Column实现列布局 246
6.2.9 使用Ext.layout.container.Auto实现自动布局 248
6.2.10 使用Ext.layout.container.Fit实现自适应布局 249
6.2.11 使用Ext.layout.container.Card实现卡片布局 250
6.2.12 使用Ext.layout.container.Anchor实现锚布局 252
6.2.13 使用Ext.layout.container.Absolute实现绝对布局 253
6.3 选单及选单项 254
6.3.1 使用选单 254
6.3.2 使用Ext.menu.CheckItem实现可勾选选单项 256
6.3.3 使用Ext.menu.ColorPicker创建颜色选择器选单 257
6.3.4 使用Ext.menu.DatePicker创建日期选择选单 258
6.4 按钮 259
6.4.1 使用按钮 259
6.4.2 带选单的按钮 261
6.4.3 带分割线的按钮:Ext.button.Split 263
6.4.4 多状态按钮:Ext.button.Cycle 264
6.4.5 使用Ext.container.ButtonGroup创建按钮组 266
6.4.6 使用Ext.Action 267
6.5 其他组件及实用功能 270
6.5.1 使用Ext. ProgressBar创建进度条 270
6.5.2 使用Ext.slider.Single创建滑动条 274
6.5.3 使用Ext.slider.Multi创建多滑块滑动条 276
6.5.4 使用Ext.Img创建图片 277
6.5.5 使用Ext.Editor创建编辑器 278
6.5.6 使用Ext.tip.ToolTip创建提示 279
6.5.7 使用Ext.tip.QuickTipManager和Ext.tip.QuickTip创建提示 283
6.5.8 使用Ext.ux.GMapPanel实现Google地图 284
6.6 表单 286
6.6.1 使用Ext.form.Panel与Ext.form.Basic创建表单 288
6.6.2 配置输入校验选项 292
6.6.3 使用vtype选项配置输入校验 294
6.6.4 使用Ext.form.action.Submit提交表单 297
6.6.5 使用Ext.form.action.Load为表单装载数据 300
6.6.6 使用Ext.form.action.StandardSubmit提交表单 303
6.6.7 单行文本框、密码框 303
6.6.8 使用Ext.form.field.Number 创建数值框 305
6.6.9 使用Ext.form.field.Date创建日期选择框 306
6.6.10 使用Ext.form.field.Spinner创建微调选择框 308
6.6.11 使用Ext.form.field.TextArea创建文本域 309
6.6.12 使用Ext.form.field.HtmlEditor创建富文本编辑器 310
6.6.13 使用Ext.form.field.File上传档案 311
6.6.14 使用Ext.form.field.Checkbox创建複选框 314
6.6.15 使用Ext.form.field.Radio创建单选按钮 317
6.6.16 使用Ext.form.field.ComboBox创建複合框 319
6.6.17 使用远程数据、queryMode为local的複合框 321
6.6.18 queryMode为remote的複合框 323
6.6.19 为Ext.form.field.ComboBox增加分页功能 325
6.6.20 实现Ext.form.field.ComboBox二级联动 327
6.6.21 使用Ext.form.FieldSet组合表单控制项 330
6.7 Ext JS的数据中心 332
6.7.1 Ext.data.Model与Ext.data.Field 332
6.7.2 使用Ext.data.proxy.Proxy和Ext.data.reader.Reader读取数据 335
6.7.3 Ext.data.Store及其子类 336
6.8 使用Ext.grid.Panel生成表格 337
6.8.1 使用Ext.grid.Panel生成表格 337
6.8.2 使用Ext.grid.column.Column定义列 339
6.8.3 使用Ext.grid.Panel显示远程数据 342
6.8.4 对Ext.grid.Panel表格进行分页 343
6.8.5 对本地数据进行分页 344
6.8.6 表格数据排序和过滤 346
6.8.7 通过表格特性对表格数据进行分组 347
6.8.8 开发动态编辑的表格 349
6.8.9 允许拖动数据的表格 352
6.8.10 使用Ext.grid.column.Action 操作表格数据 356
6.9 使用Ext.tree.Panel生成树 360
6.9.1 树有关的类及简单树 360
6.9.2 添加、删除、修改树节点 362
6.9.3 带複选框的树节点 365
6.9.4 表格树 366
6.9.5 异步载入树节点 368
6.9.6 树节点的拖放与通过拖放更新底层数据 372
6.10 本章小结 376
第7章 Prototype库详解 377
7.1 Prototype的下载和安装 378
7.1.1 什幺是Prototype库 378
7.1.2 下载和安装Prototype库 379
7.1.3 使用Prototype对象 379
7.2 Prototype的工具函式 380
7.2.1 使用$()函式 380
7.2.2 使用$$()函式 382
7.2.3 使用$A()函式 384
7.2.4 使用$F()函式 385
7.2.5 使用$w()函式 386
7.2.6 使用$H()函式 386
7.2.7 使用$R()函式 387
7.2.8 使用Try.these()函式 388
7.3 Prototype的JSON支持 389
7.4 Prototype的自定义对象和类 390
7.4.1 使用Element对象 390
7.4.2 使用Element.Methods 394
7.4.3 使用Enumerable 394
7.4.4 使用ObjectRange 398
7.4.5 使用Form.Element操作表单控制项 399
7.4.6 使用Form操作表单 400
7.4.7 使用Hash对象 402
7.4.8 使用Event 404
7.4.9 使用Template 405
7.4.10 使用Class 406
7.4.11 两个常用的监听器 407
7.5 Prototype常用的扩展 409
7.5.1 扩展Array 409
7.5.2 扩展document 410
7.5.3 扩展String 411
7.5.4 扩展Function 414
7.5.5 扩展Number 415
7.6 Prototype的Ajax支持 416
7.6.1 使用Ajax.Request类 416
7.6.2 利用Form.request方法 420
7.6.3 使用Ajax.Responders对象 421
7.6.4 使用Ajax对象 422
7.6.5 使用Ajax.Updater类 423
7.6.6 使用Ajax.PeriodicalUpdater类 426
7.7 本章小结 428
第8章 基于Prototype库的套用:自动完成 429
8.1 套用的基本分析和持久层设计 430
8.1.1 数据要求 430
8.1.2 实现持久化类 430
8.1.3 实现DAO组件 432
8.1.4 部署DAO组件 434
8.2 实现Service组件 435
8.3 使用Servlet提供伺服器回响 437
8.3.1 根据前缀查询品牌 438
8.3.2 根据品牌查询型号 439
8.3.3 根据型号查询详细信息 439
8.4 客户端HTML页面实现 440
8.5 增加HTML页面的事件回响能力 442
8.5.1 实现品牌输入框的事件处理器 442
8.5.2 实现键盘事件的处理器 444
8.5.3 根据品牌提示型号 446
8.5.4 根据型号显示描述 447
8.5.5 注册Ajax事件监听器 448
8.6 本章小结 449
第9章 DWR框架详解 451
9.1 DWR的下载和安装 452
9.1.1 什幺是DWR 452
9.1.2 下载和安装DWR 453
9.2 使用DWR 457
9.2.1 编写处理类 458
9.2.2 配置DWR 460
9.3 使用DWR的转换器 461
9.3.1 基本转换器 461
9.3.2 对象转换器 462
9.3.3 数组转换器 464
9.3.4 集合类型转换器 464
9.4 方法声明定义 465
9.5 使用DWR的创建器 466
9.5.1 创建器的配置 466
9.5.2 使用new创建器 468
9.5.3 使用none创建器 469
9.5.4 使用script创建器 469
9.6 调用伺服器端的方法 470
9.6.1 调用伺服器端方法的通用配置 471
9.6.2 使用简单回调 472
9.6.3 使用JSON格式的回调 476
9.6.4 将客户端参数传递到回调函式 479
9.7 使用engine.js 480
9.7.1 设定调用顺序 480
9.7.2 设定全局逾时时长 481
9.7.3 设定全局Hook函式 481
9.7.4 设定全局处理函式 481
9.7.5 设定常用的全局选项 482
9.7.6 批处理 482
9.8 使用util.js 483
9.8.1 使用$() 483
9.8.2 处理列表 483
9.8.3 处理表格 488
9.8.4 访问HTML元素值 492
9.8.5 几个工具函式 494
9.9 整合第三方Java EE框架 496
9.9.1 访问Servlet API 496
9.9.2 整合Spring 500
9.10 使用DWR注释 502
9.10.1 初始配置 502
9.10.2 标注创建器和转换器 503
9.11 异常处理 504
9.12 反向Ajax 506
9.12.1 配置反向Ajax 506
9.12.2 在Java方法中操作Web页 507
9.12.3 在客户端调用反向Ajax方法 509
9.13 DWR 3简化的档案上传 510
9.13.1 档案上传的处理类 510
9.13.2 调用JavaScript完成档案上传 512
9.14 本章小结 514
第10章 基于DWR的套用:即时讯息系统 515
10.1 实现Hibernate持久层 516
10.1.1 实现持久化类 516
10.1.2 将POJO映射成持久化对象 518
10.2 实现DAO组件 519
10.2.1 实现DAO组件 519
10.2.2 部署DAO组件 520
10.3 实现业务逻辑组件 521
10.3.1 业务逻辑组件的接口 521
10.3.2 业务逻辑组件的实现类 522
10.3.3 部署业务逻辑组件 525
10.4 开发DWR前端处理类 526
10.4.1 实现DWR前端处理组件 526
10.4.2 为前端处理器增加许可权控制 528
10.5 处理异步请求 529
10.5.1 将Spring容器中的Bean创建成JavaScript对象 529
10.5.2 处理用户登录 531
10.5.3 处理用户注册 532
10.5.4 处理讯息发布 534
10.5.5 获取讯息列表 535
10.5.6 处理分页 536
10.5.7 查看讯息内容 537
10.5.8 页面载入时的处理 538
10.6 本章小结 539
第11章 基于Ext JS 4.1的套用:简易Blog系统 540
11.1 实现Hibernate持久层 541
11.1.1 设计Hibernate的持久化类 541
11.1.2 完成映射档案 543
11.2 实现DAO组件 545
11.2.1 DAO接口定义 546
11.2.2 实现DAO组件 546
11.2.3 配置DAO组件 547
11.3 实现业务逻辑组件 548
11.3.1 业务逻辑组件的接口 548
11.3.2 业务逻辑组件的实现类 549
11.3.3 配置业务逻辑组件 552
11.4 使用Ext JS开发前端 553
11.4.1 初始化界面 553
11.4.2 显示指定Blog文章 557
11.4.3 显示回複列表 559
11.4.4 添加回复 561
11.4.5 发表新Blog文章
11.5 本章小结 569
第12章 Ajax实例:电子拍卖系统 570
12.1 总体说明和概要设计 571
12.1.1 系统的总体架构设计 571
12.1.2 资料库设计 572
12.2 实现Hibernate持久化类 573
12.2.1 设计Domain Object 574
12.2.2 实现Domain Object 575
12.3 DAO层实现 579
12.3.1 DAO的基础配置 579
12.3.2 实现DAO组件 580
12.3.3 部署DAO组件 583
12.4 业务逻辑层实现 584
12.4.1 设计业务逻辑组件 584
12.4.2 依赖注入DAO组件 586
12.4.3 业务逻辑组件的异常处理 587
12.4.4 处理用户竞价 588
12.4.5 判断拍卖物品状态 590
12.4.6 事务管理 592
12.4.7 配置业务层组件 592
12.5 暴露前端处理方法 595
12.5.1 定义DWR前端处理类 595
12.5.2 初始化Spring容器 597
12.5.3 配置DWR的核心Servlet 597
12.5.4 暴露前端处理方法 598
12.5.5 对前端处理方法增加许可权检查 600
12.6 调用前端处理方法回响用户请求 601
12.6.1 页面载入时的函式 601
12.6.2 处理返回首页的请求 602
12.6.3 浏览所有流拍物品 602
12.6.4 处理用户登录 605
12.6.5 管理物品 609
12.6.6 管理物品种类 612
12.6.7 查看竞得物品 616
12.6.8 查看自己的竞价记录 617
12.6.9 浏览拍卖物品 619
12.6.10 参与竞价 621
12.7 本章小结 624