具体描述
国内第一本基于 GWT 2.0 的经典著作,4 大专业社区联袂推荐,权威性毋庸置疑!
本书内容全面,不仅详细介绍了 GWT 的主要模块和控件、GWT 与 JavaScript 对象的交互、在 GWT 中使用 XML、开发自定义 GWT 控件、GWT-RPC 和 Ext GWT 等必备的基础知识,而且还深入讲解了 GWT 与 Flex整合、图片缓存、本地化、GWT 动画、历史管理、延时/等待/分片执行等高级知识;本书注重实战,所有知识点都配有精心设计的范例,尤为值得一提的是,还以迭代的方式重现了经典的俄罗斯方块游戏和一个完整的报销审批系统的开发全过程,既可以以它们为范例进行实战演练,又可以将它们直接应用到实际开发中去。
作者简介
徐彬 资深软件工程师、项目经理和系统架构师,从业10余年,实战经验丰富。精通C++(CSDN论坛C++版专家)以及GWT等AJAX技术,擅长C#、Java、JavaScript开发,对Oracle也有深入研究。多年来一直从事国土和规划领域的政府单位的信息化建设,曾负责过西安、南京、乌鲁木齐、杭州、义乌等城市的国土局项目,以及浙江省国土资源厅、上海房地局、重庆房地局、沈阳房地局、上海环保局、杭州规划局等单位的项目。
目录信息
第一部分 准备篇
第 1 章 准备开发环境••••••••••••••••••••••••••2
1.1 安装 JDK ••••••••••••••••••••••••••••••••••••••••••••2
1.2 安装 Eclipse••••••••••••••••••••••••••••••••••••••••2
1.3 安装 GWT 1.7 的 Eclipse 插件 ••••••••••3
1.4 安装 GWT 2.0 的 SDK 以及
Eclipse 插件••••••••••••••••••••••••••••••••••••••••4
1.5 辅助工具 ••••••••••••••••••••••••••••••••••••••••••••5
1.5.1 Internet Explorer Developer
Toolbar •••••••••••••••••••••••••••••••••••••••••5
1.5.2 Firebug•••••••••••••••••••••••••••••••••••••••••6
1.6 小结••••••••••••••••••••••••••••••••••••••••••••••••••••7
第 2 章 Hello GWT•••••••••••••••••••••••••••••••8
2.1 在 Eclipse 中创建项目•••••••••••••••••••••••8
2.2 运行调试项目 ••••••••••••••••••••••••••••••••••10
2.3 JUnit 测试•••••••••••••••••••••••••••••••••••••••••14
2.4 发布网站 ••••••••••••••••••••••••••••••••••••••••••16
2.5 ANT 发布•••••••••••••••••••••••••••••••••••••••••16
2.6 小结••••••••••••••••••••••••••••••••••••••••••••••••••17
第二部分 基础篇
第 3 章 GWT 模块 ••••••••••••••••••••••••••••••20
3.1 GWT 模块详解 ••••••••••••••••••••••••••••••••20
3.2 模块入口点•••••••••••••••••••••••••••••••••••••• 22
3.3 模块继承•••••••••••••••••••••••••••••••••••••••••• 22
3.4 附加 CSS 和 JavaScript•••••••••••••••••••• 23
3.5 路径配置•••••••••••••••••••••••••••••••••••••••••• 25
3.6 延迟绑定•••••••••••••••••••••••••••••••••••••••••• 29
3.7 发布 JAR•••••••••••••••••••••••••••••••••••••••••• 33
3.8 深入研究•••••••••••••••••••••••••••••••••••••••••• 34
3.9 小结 ••••••••••••••••••••••••••••••••••••••••••••••••• 37
第 4 章 JSNI ••••••••••••••••••••••••••••••••••••••••• 38
4.1 JSNI 和 JavaScript ••••••••••••••••••••••••••• 38
4.2 类型映射•••••••••••••••••••••••••••••••••••••••••• 39
4.3 JavaScriptObject••••••••••••••••••••••••••••••• 40
4.4 JsArray ••••••••••••••••••••••••••••••••••••••••••••• 42
4.5 JSNI 中的特殊变量••••••••••••••••••••••••• 42
4.6 在 JSNI 中访问 GWT 函数••••••••••••• 46
4.7 异常处理•••••••••••••••••••••••••••••••••••••••••• 49
4.8 外部 JavaScript 访问 GWT函数•••••••• 50
4.9 整合 jQuery•••••••••••••••••••••••••••••••••••••• 51
4.10 在 GWT 中使用正则
表达式 ••••••••••••••••••••••••••••••••••••••••••• 57
4.11 小结•••••••••••••••••••••••••••••••••••••••••••••••• 60
第 5 章 在 GWT 中使用 XML •••••••• 61
5.1 XML 简介•••••••••••••••••••••••••••••••••••••••• 61
5.2 XML 操作•••••••••••••••••••••••••••••••••••••••• 62
5.2.1 XML 文档••••••••••••••••••••••••••••••••• 62
5.2.2 XML 节点 •••••••••••••••••••••••••••••••••64
5.2.3 XML 元素节点••••••••••••••••••••••••••67
5.2.4 XML 文本节点••••••••••••••••••••••••••68
5.3 在 GWT 中使用 XPath•••••••••••••••••••••68
5.4 小结••••••••••••••••••••••••••••••••••••••••••••••••••76
第 6 章 GWT 控件详解•••••••••••••••••••••77
6.1 界面对象 ••••••••••••••••••••••••••••••••••••••••••77
6.2 Widget•••••••••••••••••••••••••••••••••••••••••••••••82
6.3 面板••••••••••••••••••••••••••••••••••••••••••••••••••83
6.4 控件生命周期 ••••••••••••••••••••••••••••••••••85
6.5 控件事件管理 ••••••••••••••••••••••••••••••••••87
6.5.1 注册控件事件处理句柄••••••••••••87
6.5.2 阻止控件默认行为••••••••••••••••••••88
6.5.3 阻止事件冒泡 •••••••••••••••••••••••••••89
6.5.4 onBrowserEvent•••••••••••••••••••••••••90
6.6 GWT 全局类 ••••••••••••••••••••••••••••••••••••91
6.6.1 DOM 类•••••••••••••••••••••••••••••••••••••91
6.6.2 GWT 类•••••••••••••••••••••••••••••••••••••92
6.6.3 Window 类•••••••••••••••••••••••••••••••••94
6.7 小结••••••••••••••••••••••••••••••••••••••••••••••••••97
第 7 章 使用 GWT 控件••••••••••••••••••••98
7.1 简单控件 ••••••••••••••••••••••••••••••••••••••••••98
7.1.1 包装已有控件 •••••••••••••••••••••••••••98
7.1.2 图片超链接 •••••••••••••••••••••••••••••••99
7.1.3 图片按钮•••••••••••••••••••••••••••••••••••99
7.1.4 复选框•••••••••••••••••••••••••••••••••••••••99
7.1.5 单选框•••••••••••••••••••••••••••••••••••••100
7.1.6 文件上传•••••••••••••••••••••••••••••••••101
7.1.7 DatePicker••••••••••••••••••••••••••••••••103
7.2 列表和菜单 ••••••••••••••••••••••••••••••••••••104
7.2.1 列表•••••••••••••••••••••••••••••••••••••••••104
7.2.2 带建议的输入框••••••••••••••••••••••105
7.2.3 树•••••••••••••••••••••••••••••••••••••••••••••105
7.2.4 菜单 •••••••••••••••••••••••••••••••••••••••• 107
7.3 面板 ••••••••••••••••••••••••••••••••••••••••••••••• 108
7.3.1 装饰面板••••••••••••••••••••••••••••••••• 108
7.3.2 流式布局面板••••••••••••••••••••••••• 108
7.3.3 水平布局面板和垂直布局
面板••••••••••••••••••••••••••••••••••••••••• 109
7.3.4 绝对布局面板••••••••••••••••••••••••• 109
7.3.5 Tab 面板•••••••••••••••••••••••••••••••••• 109
7.3.6 滚动面板••••••••••••••••••••••••••••••••• 110
7.4 表格 ••••••••••••••••••••••••••••••••••••••••••••••• 111
7.4.1 简单表格••••••••••••••••••••••••••••••••• 111
7.4.2 复杂表格••••••••••••••••••••••••••••••••• 111
7.5 使用与自定义 GWT 控件••••••••••••• 112
7.5.1 ComboInput 控件结构•••••••••••• 112
7.5.2 DataItem•••••••••••••••••••••••••••••••••• 113
7.5.3 ListBox•••••••••••••••••••••••••••••••••••• 114
7.5.4 Selected 事件 •••••••••••••••••••••••••• 117
7.5.5 TriggerInput••••••••••••••••••••••••••••• 120
7.5.6 ComboBox•••••••••••••••••••••••••••••• 122
7.6 小结 ••••••••••••••••••••••••••••••••••••••••••••••• 125
第 8 章 GWT-RPC ••••••••••••••••••••••••••• 126
8.1 GWT 中的XMLHTTPRequest••••••••• 126
8.1.1 HTTPRequestImpl••••••••••••••••••• 126
8.1.2 RequestBuilder •••••••••••••••••••••••• 127
8.1.3 请求动态数据••••••••••••••••••••••••• 129
8.1.4 XML•••••••••••••••••••••••••••••••••••••••• 132
8.2 JSON•••••••••••••••••••••••••••••••••••••••••••••• 134
8.2.1 JSONValue•••••••••••••••••••••••••••••• 134
8.2.2 JSONValue 的派生类 ••••••••••••• 135
8.2.3 完整的 JSON 例子 ••••••••••••••••• 136
8.3 GWT-RPC •••••••••••••••••••••••••••••••••••••• 138
8.3.1 RPC 远程接口 •••••••••••••••••••••••• 138
8.3.2 服务器实现••••••••••••••••••••••••••••• 139
8.3.3 异步接口文件••••••••••••••••••••••••• 140
8.3.4 在程序中使用GWT-RPC •••••••••140
8.3.5 整合 Hibernate•••••••••••••••••••••••••141
8.4 小结••••••••••••••••••••••••••••••••••••••••••••••••145
第 9 章 Ext GWT•••••••••••••••••••••••••••••••146
9.1 Ext GWT 简介及安装••••••••••••••••••••146
9.2 Window•••••••••••••••••••••••••••••••••••••••••••148
9.2.1 窗口布局•••••••••••••••••••••••••••••••••149
9.2.2 Viewport ••••••••••••••••••••••••••••••••••151
9.2.3 Dialog ••••••••••••••••••••••••••••••••••••••152
9.2.4 窗口的显示与关闭••••••••••••••••••153
9.3 数据管理 ••••••••••••••••••••••••••••••••••••••••154
9.4 Grid•••••••••••••••••••••••••••••••••••••••••••••••••157
9.5 树控件••••••••••••••••••••••••••••••••••••••••••••159
9.5.1 图标显示•••••••••••••••••••••••••••••••••160
9.5.2 节点选择事件 •••••••••••••••••••••••••160
9.6 皮肤••••••••••••••••••••••••••••••••••••••••••••••••161
9.7 小结••••••••••••••••••••••••••••••••••••••••••••••••162
第三部分 实战篇
第 10 章 俄罗斯方块游戏 ••••••••••••••164
10.1 游戏设计 ••••••••••••••••••••••••••••••••••••••164
10.1.1 游戏简介 •••••••••••••••••••••••••••••••164
10.1.2 游戏规则 •••••••••••••••••••••••••••••••165
10.1.3 设计思路 •••••••••••••••••••••••••••••••166
10.2 编码实现 ••••••••••••••••••••••••••••••••••••••167
10.2.1 游戏场地 •••••••••••••••••••••••••••••••167
10.2.2 方块•••••••••••••••••••••••••••••••••••••••170
10.2.3 游戏控制器 •••••••••••••••••••••••••••177
10.3 界面实现及操作完善•••••••••••••••••••187
10.3.1 候选面板•••••••••••••••••••••••••••••••••187
10.3.2 计分与等级 •••••••••••••••••••••••••••189
10.3.3 增加操作便利性••••••••••••••••••••191
10.3.4 界面美化 •••••••••••••••••••••••••••••••192
10.4 联机对战•••••••••••••••••••••••••••••••••••••• 193
10.4.1 原理 •••••••••••••••••••••••••••••••••••••• 193
10.4.2 等待游戏开始••••••••••••••••••••••• 194
10.4.3 交换数据••••••••••••••••••••••••••••••• 198
10.4.4 胜负判定••••••••••••••••••••••••••••••• 204
10.4.5 障碍行••••••••••••••••••••••••••••••••••• 206
10.5 小结•••••••••••••••••••••••••••••••••••••••••••••• 209
第 11 章 费用申请审批流程 ••••••••• 210
11.1 流程设计•••••••••••••••••••••••••••••••••••••• 210
11.1.1 流程简介••••••••••••••••••••••••••••••• 210
11.1.2 工作流引擎••••••••••••••••••••••••••• 210
11.1.3 表单••••••••••••••••••••••••••••••••••••••• 211
11.2 工作流引擎实现 •••••••••••••••••••••••••• 211
11.2.1 环境配置••••••••••••••••••••••••••••••• 211
11.2.2 业务规则定义••••••••••••••••••••••• 214
11.2.3 jBPM 数据库初始化••••••••••••• 218
11.3 表单实现•••••••••••••••••••••••••••••••••••••• 220
11.3.1 HTML 面板••••••••••••••••••••••••••• 220
11.3.2 表单对话框••••••••••••••••••••••••••• 225
11.3.3 权限控制••••••••••••••••••••••••••••••• 228
11.3.4 类型校验••••••••••••••••••••••••••••••• 232
11.4 审批流程的界面实现 •••••••••••••••••• 233
11.4.1 AsyncCallbackEx •••••••••••••••••• 233
11.4.2 Outlook 面板••••••••••••••••••••••••• 234
11.4.3 工作列表••••••••••••••••••••••••••••••• 236
11.4.4 整体布局••••••••••••••••••••••••••••••• 241
11.4.5 用户登录••••••••••••••••••••••••••••••• 244
11.4.6 全局事件管理••••••••••••••••••••••• 247
11.4.7 遮蔽效果••••••••••••••••••••••••••••••• 249
11.4.8 实现 BizzAction•••••••••••••••••••• 250
11.5 业务流转•••••••••••••••••••••••••••••••••••••• 254
11.5.1 申请表••••••••••••••••••••••••••••••••••• 254
11.5.2 审批表••••••••••••••••••••••••••••••••••• 257
11.6 小结•••••••••••••••••••••••••••••••••••••••••••••• 261
第四部分 高级篇
第 12 章 GWT 与 Flex 整合•••••••••••264
12.1 Flex 的优势 ••••••••••••••••••••••••••••••••••264
12.2 查看流程图的 Flex•••••••••••••••••••••••265
12.3 加入网页 ••••••••••••••••••••••••••••••••••••••275
12.4 与 Flex 交互 •••••••••••••••••••••••••••••••••278
12.5 小结••••••••••••••••••••••••••••••••••••••••••••••283
第 13 章 图片缓存 ••••••••••••••••••••••••••••284
13.1 CSS Sprite 简介••••••••••••••••••••••••••••284
13.2 GWT 的实现 ••••••••••••••••••••••••••••••••286
13.3 后端生成了什么•••••••••••••••••••••••••••288
13.4 小结••••••••••••••••••••••••••••••••••••••••••••••288
第 14 章 本地化 •••••••••••••••••••••••••••••••••290
14.1 GWT 如何识别你的语言•••••••••••••290
14.2 本地化配置 ••••••••••••••••••••••••••••••••••291
14.3 日期格式化 ••••••••••••••••••••••••••••••••••294
14.4 字符串动态本地化 •••••••••••••••••••••• 295
14.5 小结•••••••••••••••••••••••••••••••••••••••••••••• 296
第 15 章 其他高级功能••••••••••••••••••• 297
15.1 动画•••••••••••••••••••••••••••••••••••••••••••••• 297
15.2 历史管理•••••••••••••••••••••••••••••••••••••• 299
15.3 延时执行•••••••••••••••••••••••••••••••••••••• 301
15.4 等待执行和分片执行 •••••••••••••••••• 301
15.5 代码分割•••••••••••••••••••••••••••••••••••••• 302
15.5.1 SOYC•••••••••••••••••••••••••••••••••••• 304
15.5.2 初始化序列••••••••••••••••••••••••••• 305
15.5.3 编程模式••••••••••••••••••••••••••••••• 306
15.5.4 预加载••••••••••••••••••••••••••••••••••• 307
15.6 UiBinder••••••••••••••••••••••••••••••••••••••• 308
15.6.1 HTML 绑定 •••••••••••••••••••••••••• 308
15.6.2 控件绑定••••••••••••••••••••••••••••••• 310
15.6.3 CSS 绑定••••••••••••••••••••••••••••••• 311
15.6.4 事件管理••••••••••••••••••••••••••••••• 313
15.6.5 资源打包••••••••••••••••••••••••••••••• 314
15.6.6 创建控件••••••••••••••••••••••••••••••• 316
15.7 小结•••••••••••••••••••••••••••••••••••••••••••••• 316
· · · · · · (收起)
读后感
根据2011年11月微信团队宣布的官方数据,在5000万的用户中有活跃用户2000万,而25-30岁用户估计超50%;主要分布在一线大城市,最多的用户职业是白领(超过24%)。iOS / Android / Symbian 平台上用户分别占 25%、 25%、 50%,而大部分微信用户都是从腾讯旗下各种产品过渡而来的。
对国内技术类书籍的水平,一直心有余悸,毕竟以前也帮过教授翻译国外文章,并眼睁睁看着他把找过来的,我们翻好的文章,东拼西凑成书。所以每次买技术书,看到买国内作者写的,一般直接放弃。《GWT 揭秘》是难得的一本。CDR Tool里面使用了GWT,所以这段时间一直混相关的论坛,...
我在开始使用google web toolkit的时候只能参考一些例子摸索, 缺少中文资料, 其实看到本书的时候我已经开始使用GWT做项目了, 翻看本书后, 我感觉这本书不是特别好的入门读物, 定位有些模糊, 其实做过几个GWT的例子后就可以看看本书了, 如果你连JAVA项目都没做过就别看了. 如...
对国内技术类书籍的水平,一直心有余悸,毕竟以前也帮过教授翻译国外文章,并眼睁睁看着他把找过来的,我们翻好的文章,东拼西凑成书。所以每次买技术书,看到买国内作者写的,一般直接放弃。《GWT 揭秘》是难得的一本。CDR Tool里面使用了GWT,所以这段时间一直混相关的论坛,...
根据2011年11月微信团队宣布的官方数据,在5000万的用户中有活跃用户2000万,而25-30岁用户估计超50%;主要分布在一线大城市,最多的用户职业是白领(超过24%)。iOS / Android / Symbian 平台上用户分别占 25%、 25%、 50%,而大部分微信用户都是从腾讯旗下各种产品过渡而来的。
用户评价
作为一名在 IT 行业摸爬滚打多年的老兵,我见证了无数技术的兴衰更替。近年来,前端技术发展迅猛,各种框架层出不穷,让人应接不暇。我一直关注着 Google 的技术动向,对 GWT 这种能够利用 Java 生态进行 Web 开发的思路非常感兴趣。我个人认为,将后端擅长的 Java 引入前端,可以极大地提高开发效率和代码的健壮性。我特别希望《GWT揭秘》能够从一个更宏观的角度来审视 GWT,不仅仅是讲解技术细节,更能探讨 GWT 在企业级应用开发中的优势和应用场景。我想要了解 GWT 是否适合构建大型、复杂的 Web 应用,以及它在性能、安全性、可维护性等方面是否能与传统的 Java Web 框架相媲美。我尤其关注 GWT 的生态系统,比如是否有成熟的第三方库支持,以及它与 Google 其他技术栈(如 Spring、GWT-EXT 等)的集成情况。我希望这本书能够提供一些行业内的最佳实践和成功案例,让我能够更好地评估 GWT 的价值,并将其引入到我的实际工作中。
我一直是个对技术细节有着强烈好奇心的人,尤其喜欢刨根问底,弄清楚事物的运作原理。《GWT揭秘》这个名字本身就充满了吸引力,让我忍不住想要一探究竟。我之前接触过一些关于 Web 开发的书籍,但很多都只是停留在 API 的表面介绍,很少会深入讲解背后的实现机制。我对 GWT 的核心组件,比如 UiBinder、Presenter、View 等的设计理念非常感兴趣,想知道它们是如何协同工作的,以及它们在 GWT 的 MVC/MVP 架构中扮演着怎样的角色。我希望能在这本书中找到对 GWT 编译器、代码生成器、以及运行时环境的详细解释。我非常想了解 GWT 是如何处理不同浏览器之间的兼容性问题的,以及它提供了哪些机制来优化 Web 应用的加载速度和响应效率。如果书中能够提供一些反编译或代码调试的技巧,帮助我理解 GWT 生成的 JavaScript 代码,那就太棒了。总而言之,我希望这本书能让我不仅“会用” GWT,更能“理解” GWT。
这次拿到《GWT揭秘》,简直就像捡到了宝贝!我之前一直在做一些客户端 JavaScript 的开发,但随着项目越来越复杂,性能瓶颈和代码的可维护性问题开始凸显。我听说 GWT 能将 Java 代码编译成高效的 JavaScript,并且能提供一套完善的组件库和开发工具链,这让我非常心动。我之前尝试过一些其他的 JavaScript 框架,但总感觉不够“原生”,或者学习曲线过于陡峭。我最看重的是 GWT 的“Java 体验”,毕竟我对 Java 已经比较熟悉,希望能够利用已有的知识进行 Web 开发。我非常期待这本书能够详细介绍 GWT 的架构设计,包括它的 RPC 机制、UI 组件模型、模块化开发等关键部分。我特别想知道 GWT 是如何在背后将 Java 代码转换为 JavaScript 的,以及它提供了哪些工具来优化生成的 JavaScript 代码,以达到最佳的性能。此外,对于那些习惯了 IDE 自动补全和重构的 Java 开发者来说,如何在 GWT 开发中获得类似的开发体验,也是我非常关注的点。
这本书我真是期待了太久了!作为一名刚刚接触到 GWT(Google Web Toolkit)的初学者,我一直苦恼于市面上缺乏一本真正能够带我入门、又深入浅出的教材。那些官方文档虽然详尽,但对于新手来说,就像是一本厚厚的武功秘籍,看得我眼花缭乱,不知从何练起。我尝试过一些零散的博客文章和论坛讨论,但信息碎片化严重,而且很多内容都过时了,根本跟不上 GWT 的发展步伐。我渴望找到一本能够系统性地讲解 GWT 核心概念、开发流程以及最佳实践的书籍,能够帮助我快速理解 GWT 的工作原理,并独立完成一些实际的项目。我特别希望这本书能够包含一些实际的案例,让我能够边学边练,而不是纸上谈兵。当然,如果能对 GWT 在实际项目开发中可能遇到的常见问题提供解决方案,那就更完美了。总而言之,我希望这本书能够成为我 GWT 之旅的良师益友,指引我走出迷茫,让我能够自信地拥抱 GWT 的强大功能。
在一次偶然的机会下,我接触到了 GWT,并对它利用 Java 进行 Web 开发的能力留下了深刻的印象。然而,在我深入了解的过程中,却发现网上关于 GWT 的资料要么太过零散,要么过于学术化,难以找到一条清晰的学习路径。我渴望找到一本能够系统地介绍 GWT 开发流程的书籍,能够让我从零开始,一步步掌握 GWT 的精髓。我非常期待《GWT揭秘》能够涵盖 GWT 的基本概念,如模块、继承、事件处理等,并能够逐步深入到更高级的主题,如国际化、主题定制、性能优化等方面。我对 GWT 如何与后端 Java 代码进行高效通信非常感兴趣,希望能在这本书中找到详细的 RPC 实现讲解。此外,我希望这本书能够提供一些实用的代码示例,让我能够跟着书中的指导进行实践,从而加深对 GWT 的理解。我更希望的是,这本书能够帮助我避免一些常见的开发陷阱,并提供一些通用的开发技巧,让我能够在 GWT 开发的道路上少走弯路。
我是门外汉。入门不错。看了大半。后面用ext的部分没有细读。我更喜欢了解原理。
还不错的书,从简单到复杂。不过就是介绍例子的时候有点晦涩,没有一个完整的布局例子,后面一个例子采用了Ext-Gwt 我怎么就觉得有点不对。应该是使用 GWT 来做完整布局吧,要不然,光看EXT不就OK了么?但是总体来说,适合入门的人员看,书的质量还是不错的。
喵了下,感觉写的一般(亚马逊kindle版比纸质版贵...
java开发javascript ,口味太重了
不咋地···