第1部分 Eclipse及开源框架的应用第1章 Eclipse安装及使用 3
1.1 Eclipse基本概念 3
1.1.1 简介 3
1.1.2 体系结构 4
1.1.3 插件结构 4
1.2 Eclipse开发环境 5
1.2.1 工作空间 5
1.2.2 工作台 6
1.2.3 调试与运行 7
1.2.4 版本管理 7
1.3 工作台 8
1.3.1 资源 8
1.3.2 资源层次结构 8
1.3.3 构建 9
1.4 插件安装 9
1.4.1 注意事项 9
1.4.2 拷贝安装 10
1.4.3 links安装 10
1.4.4 update安装 11
1.4.5 查看插件 13
1.5 开发Java程序 14
1.5.1 Java项目 14
1.5.2 创建Java程序 15
1.5.3 运行程序与调试 16
1.5.4 类的构建路径 18
1.5.5 项目构建 18
1.6 常用快捷键 19
1.6.1 编辑相关快捷键 19
1.6.2 查看和定位快捷键 19
1.6.3 调试快捷键 20
1.6.4 常用编辑器快捷键 20
1.6.5 其他快捷键 20
1.7 Eclipse与开源 21
1.8 小结 22
第2章 单元测试与重构 23
2.1 单元测试 23
2.1.1 为什么需要单元测试 23
2.1.2 自信编码 23
2.1.3 JUnit 24
2.2 JUnit断言 24
2.2.1 assertEquals断言 24
2.2.2 assertTrue与assertFalse断言 25
2.2.3 assertNull与assertNotNull断言 25
2.2.4 assertSame与assertNotSame断言 25
2.2.5 fail断言 25
2.3 JUnit测试 26
2.3.1 TestCase测试类 26
2.3.2 TestSuite测试组 27
2.3.3 Setup与Tear-down 30
2.3.4 实现自定义的断言 32
2.4 使用Eclipse进行单元测试 33
2.4.1 创建测试用例 33
2.4.2 运行、调试测试用例 35
2.4.3 创建测试组 36
2.5 重构 37
2.6 使用Eclipse进行代码重构 38
2.6.1 结构性重构 39
2.6.2 类级别重构 43
2.6.3 类内部重构 46
2.6.4 Undo and Redo 50
2.7 小结 50
第3章 Web应用 51
3.1 Servlet与JSP 51
3.1.1 Servlet和JSP 51
3.1.2 Servlet和JSP的实现 53
3.2 Web组件的关联关系 55
3.2.1 请求转发 55
3.2.2 URL重定向 56
3.2.3 包含 56
3.3 Web.xml介绍 56
3.4 使用Tomcat插件开发Web应用 57
3.4.1 安装配置Tomcat插件 57
3.4.2 创建Tomcat项目 59
3.4.3 在Tomcat中运行调试Web应用 59
3.5 JSP标签 61
3.5.1 标签的处理过程 61
3.5.2 标签的处理类 62
3.5.3 标签的描述文件 63
3.5.4 JSP标签的实现 65
3.6 XML应用 66
3.6.1 XML的优势 66
3.6.2 简单XML文件 68
3.6.3 XML的语法 68
3.6.4 使用JDOM读写XML文档 70
3.7 AJAX应用 73
3.7.1 什么是AJAX 73
3.7.2 AJAX功能 74
3.7.3 XMLHttpRequest对象 74
3.7.4 AJAX实例 76
3.8 小结 80
第4章 Web应用框架Struts 81
4.1 Struts框架 81
4.1.1 Struts的起源 81
4.1.2 Struts简介 81
4.2 MVC模式 82
4.2.1 Mode11和Mode12简介 82
4.2.2 MVC在Struts中的应用 83
4.3 Struts应用的开发步骤 85
4.3.1 开发流程 85
4.3.2 配置Struts应用 86
4.4 Struts框架的应用:用户登录 88
4.4.1 需求 89
4.4.2 构建视图 89
4.4.3 构建模型 91
4.4.4 构建控制器 93
4.4.5 创建配置文件 94
4.4.6 Struts应用运行结果 97
4.5 通过StrutsIDE插件开发Struts应用 98
4.5.1 前提条件 98
4.5.2 开发Struts应用 98
4.6 小结 100
第5章 Struts开发实例:购物车 101
5.1 购物车的结构 101
5.1.1 实现的功能 101
5.1.2 数据处理流程 101
5.2 购物车的入口 102
5.2.1 Web.xml文件 102
5.2.2 Struts-config.xml文件 103
5.3 创建Action 108
5.3.1 基类及实现 108
5.3.2 购物车Action的实现 111
5.4 创建服务类 113
5.4.1 初始化工厂类 114
5.4.2 服务类 116
5.5 业务对象 119
5.6 购物车实现 121
5.7 部署及运行 124
5.8 小结 126
第6章 数据库应用 127
6.1 SQL语言 127
6.1.1 数据定义语句 127
6.1.2 数据查询语句 129
6.1.3 数据操纵语句 132
6.2 JDBC应用 133
6.2.1 概述 133
6.2.2 Connection对象 133
6.2.3 DriverManager对象 134
6.2.4 Statement对象 135
6.2.5 ResultSet对象 135
6.2.6 PreparedStatement对象 136
6.2.7 CallableStatement对象 137
6.3 JDBC实例 138
6.4 SQL Explorer插件 140
6.5 小结 143
第7章 对象持久化框架Hibernate 145
7.1 Hibernate概述 145
7.1.1 持久层解决方案 145
7.1.2 Hibernate处理方式 146
7.1.3 第三方库 147
7.2 对象/关系映射 147
7.2.1 持久化类 147
7.2.2 对象/关系映射描述文件 149
7.3 数据持久化 152
7.3.1 Hibernate处理流程 153
7.3.2 SessionFactory的配置 153
7.3.3 操作持久化数据 155
7.4 Hibernate查询语言 157
7.4.1 查询语句 157
7.4.2 where子句 159
7.4.3 分组与排序 159
7.4.4 统计函数 160
7.5 Hibernate实例 160
7.5.1 持久化类 161
7.5.2 Hibernate映射文件 163
7.5.3 Hibernate处理类 164
7.6 Hibernate Synchronizer插件 169
7.7 小结 171
第8章 Hibernate开发 173
8.1 Hibernate初始化 173
8.1.1 Hibernate配置文件 173
8.1.2 程序初始化 174
8.1.3 映射文件和持久化类 175
8.2 数据查询 177
8.2.1 选择与条件查询 177
8.2.2 分组与排序查询 178
8.2.3 使用SQL语句查询 179
8.2.4 Criteria查询 180
8.3 对象新增与更新 181
8.3.1 新增记录 181
8.3.2 更新加载记录 183
8.3.3 新增或更新记录 184
8.4 删除数据 184
8.4.1 指定ID删除记录 185
8.4.2 删除符合条件的记录 185
8.5 级联操作 186
8.5.1 映射文件和持久化类 186
8.5.2 实现 189
8.6 小结 192
第9章 应用整合框架Spring 193
9.1 概述 193
9.1.1 Spring框架 193
9.1.2 控制反转 194
9.1.3 面向方面的编程 195
9.2 控制反转IoC 196
9.2.1 容器 196
9.2.2 依赖注入 198
9.3 资源 200
9.3.1 Resource接口 201
9.3.2 内置Resource实现 202
9.4 IoC实例 203
9.4.1 描述文件 203
9.4.2 定义Bean的实现类 204
9.4.3 创建容器 205
9.5 面向方面AOP 206
9.5.1 AOP概念 206
9.5.2 Spring AOP的功能和目标 208
9.6 Spring AOP的实现 208
9.6.1 Spring中的切入点 208
9.6.2 Spring中的通知类型 210
9.6.3 ProxyFactoryBean创建AOP代理 213
9.7 AOP实例 215
9.7.1 描述文件 215
9.7.2 被代理对象及通知 217
9.7.3 主控类 219
9.8 小结 220
第10章 Spring整合Web应用 221
10.1 程序设计 221
10.1.1 功能需求 221
10.1.2 用户界面 221
10.1.3 程序结构 222
10.2 配置文件入口 222
10.3 服务层 225
10.3.1 Spring配置文件 225
10.3.2 实现类 227
10.4 Web层 228
10.4.1 Form实现 228
10.4.2 Action实现 230
10.5 数据访问层 233
10.5.1 持久化对象 233
10.5.2 数据访问对象 236
10.6 发送通知邮件 240
10.7 运行效果 243
10.8 小结 244
第11章 代码生成框架Velocity 245
11.1 Velocity简介 245
11.2 Helloworld实例 246
11.2.1 模板文件 246
11.2.2 Java程序 247
11.2.3 处理流程 248
11.3 基本语法 249
11.3.1 注释 249
11.3.2 引用 250
11.3.3 运算符 251
11.4 指令 253
11.4.1 赋值指令 253
11.4.2 条件指令 254
11.4.3 循环 254
11.4.4 包含 255
11.4.5 解析 255
11.4.6 停止 256
11.4.7 宏 256
11.5 模板嵌套 256
11.6 模板的编码格式 258
11.7 宏及方法调用 259
11.8 模板引擎和上下文 261
11.9 模板事件 262
11.10 生成动态页面 265
11.11 小结 268
第12章 ANT构建AppFuse应用 269
12.1 ANT简介 269
12.2 构建文件 270
12.2.1 构建文件描述 271
12.2.2 ANT常用任务 272
12.2.3 ANT命令行 276
12.3 ANT实例 277
12.4 AppFuse简介 279
12.5 使用AppFuse的理由 280
12.5.1 测试 280
12.5.2 集成 281
12.5.3 自动化 282
12.5.4 安全特性和可扩展性 282
12.5.5 使用AppGen生成代码 283
12.5.6 文档 283
12.5.7 社区 283
12.6 ANT构建AppFuse应用 283
12.6.1 开发环境 283
12.6.2 构建步骤 285
12.7 小结 292
第2部分 Eclipse的相关技术第13章 SWT组件 295
13.1 SWT简介 295
13.1.1 概述 295
13.1.2 基本特性 296
13.2 SWT程序 297
13.2.1 加入SWT依赖的包 297
13.2.2 “Hello world”程序 299
13.2.3 运行SWT应用 300
13.3 使用Swing组件 301
13.3.1 添加Swing的组件 301
13.3.2 程序运行效果 302
13.4 基类Control 303
13.4.1 继承关系 303
13.4.2 Control类的常用方法 304
13.5 常用组件 305
13.5.1 按钮 305
13.5.2 标签 306
13.5.3 文本框 307
13.5.4 下拉框 308
13.5.5 列表 310
13.6 容器组件 311
13.6.1 面板容器Composite 311
13.6.2 分组容器Group 313
13.6.3 分页签容器TabFolder和TabItem 314
13.6.4 分隔框容器SashForm 316
13.7 其他组件 318
13.7.1 菜单组件 318
13.7.2 工具栏组件ToolBar和ToolItem 320
13.7.3 工具栏组件CoolBar和CoolItem 323
13.7.4 滚动组件Slider 324
13.7.5 刻度组件Scale 326
13.7.6 进度条组件ProgressBar 328
13.8 小结 329
第14章 SWT事件与布局 331
14.1 事件介绍 331
14.2 鼠标事件 332
14.2.1 MouseListener接口 332
14.2.2 MouseMoveListener接口 332
14.2.3 MouseTrackListener接口 333
14.2.4 鼠标事件实例 333
14.3 键盘事件 335
14.3.1 KeyListener接口 336
14.3.2 键盘事件实例 336
14.4 焦点事件 337
14.4.1 FocusListener接口 337
14.4.2 焦点事件实例 338
14.5 窗口控制事件 339
14.5.1 ControlListener接口 339
14.5.2 窗口控制事件实例 340
14.6 选择事件 341
14.6.1 SelectionListener接口 341
14.6.2 选择组件事件实例 341
14.7 其他常用事件 342
14.7.1 HelpListener、VerifyListener和ModifyListener监听器的功能 342
14.7.2 HelpListener、VerifyListener和ModifyListener监听器实例 343
14.8 布局介绍 345
14.9 FillLayout布局 346
14.9.1 FillLayout的风格 346
14.9.2 FillLayout布局实例 347
14.10 RowLayout布局 348
14.10.1 RowLayout的风格 348
14.10.2 RowLayout布局实例 349
14.11 GridLayout布局 350
14.11.1 GridLayout的风格 351
14.11.2 GridData的相关属性 351
14.11.3 GridLayout布局实例 353
14.12 自定义布局 357
14.12.1 Layout类 357
14.12.2 创建自己的布局类 357
14.13 小结 360
第15章 Viewer组件与对话框 361
15.1 JFace程序 361
15.1.1 “Hello world”程序 361
15.1.2 运行“Hello world”程序 362
15.2 TreeViewer组件 362
15.2.1 TreeViewer构建步骤 362
15.2.2 内容提供器(ItreeContent-Provider) 363
15.2.3 标签提供器(ILabelProvider) 364
15.2.4 TreeViewer实例 364
15.3 TableViewer组件 368
15.3.1 TableViewer构建步骤 369
15.3.2 内容提供器(Istructured-ContentProvider) 369
15.3.3 标签提供器(ItableLabel-Provider) 369
15.3.4 TableViewer实例 370
15.4 消息对话框 379
15.4.1 消息对话框的功能 379
15.4.2 消息对话框实例 380
15.5 输入对话框 383
15.5.1 输入对话框的功能 383
15.5.2 输入对话框实例 383
15.6 进度监视对话框 385
15.6.1 进度监视对话框的功能 385
15.6.2 进度监视对话框实例 386
15.7 自定义对话框 388
15.7.1 带标题区域对话框 388
15.7.2 自定义对话框实例 389
15.8 常用系统对话框 392
15.8.1 打印对话框(PrintDialog) 392
15.8.2 颜色对话框(ColorDialog) 392
15.8.3 字体对话框(FontDialog) 393
15.8.4 文件对话框(FileDialog) 394
15.8.5 录对话框(DirectoryDialog) 395
15.9 小结 395
第16章 Eclipse插件开发 397
16.1 插件结构 397
16.1.1 简介 397
16.1.2 描述文件 397
16.2 插件调试 401
16.3 扩展视图 402
16.3.1 视图分类 402
16.3.2 常用视图可实现的功能 403
16.3.3 创建“Tree viewer”视图 403
16.3.4 “Tree viewer”插件扩展点 404
16.3.5 视图扩展点的实现类 405
16.3.6 运行“Tree viewer”视图 410
16.4 扩展编辑器 411
16.4.1 编辑器分类 411
16.4.2 常用编辑器可实现的功能 411
16.4.3 编辑器和视图的区别 412
16.4.4 自定义文本编辑器 412
16.4.5 实现类“FileEditor” 413
16.4.6 运行文本编辑器 415
16.5 扩展透视图 415
16.5.1 简介 416
16.5.2 扩展透视图 416
16.5.3 实现透视图 418
16.6 实现菜单工具栏 420
16.6.1 “actionSets”扩展点信息 420
16.6.2 实现类“SampleAction” 422
16.7 实现项目特性 422
16.7.1 项目扩展点 423
16.7.2 项目特性扩展点及实现类 423
16.7.3 构建器扩展点及实现类 425
16.7.4 工程向导扩展点及实现类 428
16.7.5 首选项页扩展点及实现类 430
16.8 实现联机帮助 432
16.8.1 联机帮助扩展点的实现 432
16.8.2 联机帮助文档的结构 433
16.8.3 在联机帮助中在线调用Java类 435
16.9 小结 436
第17章 图形编辑框架 437
17.1 GEF概述 437
17.1.1 GEF简介 437
17.1.2 GEF工作原理 437
17.2 模型 438
17.2.1 模型的功能 438
17.2.2 模型的实现 438
17.3 视图 442
17.3.1 视图的功能 442
17.3.2 视图的实现 443
17.4 控制器 444
17.4.1 控制器的功能 444
17.4.2 控制器的实现 444
17.5 请求和编辑策略 447
17.5.1 请求和编辑策略 447
17.5.2 编辑策略的实现 448
17.6 命令 449
17.6.1 命令的功能 449
17.6.2 命令的实现 449
17.7 模型同步 450
17.7.1 模型同步的功能 451
17.7.2 模型同步的实现 451
17.8 选项板 452
17.8.1 选项板(PaletteRoot)的功能 452
17.8.2 选项板的实现 452
17.9 小结 454
第3部分 基于Eclipse的开发工具第18章 开发工具的实现 457
18.1 开发工具的基本概念 457
18.1.1 业务平台与开发工具的关系 457
18.1.2 国内外开发工具的现状 458
18.1.3 开发工具的未来趋势 458
18.2 开发环境及工具运行前提 459
18.3 功能定义 460
18.3.1 模型驱动 460
18.3.2 模型编辑器 460
18.3.3 代码生成 461
18.3.4 插件结构及依赖关系 462
18.3.5 支持开发过程 463
18.4 开发工具工程创建向导 463
18.4.1 定义扩展点 463
18.4.2 实现向导 464
18.4.3 添加向导页 467
18.5 构建路径的实现 475
18.5.1 类路径扩展 475
18.5.2 初始化 475
18.5.3 构建类路径 476
18.6 启动初始化的实现 479
18.6.1 startup扩展点 479
18.6.2 startup扩展点实现 479
18.7 透视图的实现 481
18.7.1 透视图扩展点 481
18.7.2 透视图实现 481
18.8 首选项的实现 483
18.8.1 首选项扩展点 484
18.8.2 首选项实现 484
18.9 属性页的实现 486
18.9.1 属性页扩展点 486
18.9.2 属性页实现 487
18.10 小结 492
第19章 UML编辑器的实现 493
19.1 程序的软件结构 493
19.1.1 实现功能 493
19.1.2 程序的界面要求 494
19.1.3 模型的元数据 494
19.2 编辑器的实现 497
19.2.1 编辑器的功能 497
19.2.2 编辑器的实现 497
19.3 模型的实现 504
19.3.1 PropertyAwareObject类 505
19.3.2 Table类 506
19.3.3 Column类 510
19.3.4 Schema类 512
19.3.5 Relationship类 514
19.4 视图的实现 515
19.4.1 TableFigure类 515
19.4.2 SchemaFigure类 517
19.4.3 ColumnsFigure类 517
19.5 控制器的实现 518
19.5.1 TablePart的实现 518
19.5.2 RelationshipPart的实现 528
19.6 EditPartFactory和Palette的实现 530
19.6.1 SchemaEditPartFactory 530
19.6.2 PaletteRoot 531
19.7 EditPolicy的实现 533
19.7.1 TableNodeEditPolicy(模型连线的编辑策略) 533
19.7.2 TableLayoutEditPolicy(子模型布局的编辑策略) 535
19.7.3 TableContainerEditPolicy(处理模型创建请求的编辑策略) 536
19.7.4 TableEditPolicy(模型编辑的编辑策略) 537
19.7.5 TableDirectEditPolicy(处理直接编辑的编辑策略) 538
19.8 Command的实现 539
19.8.1 模型连线命令 539
19.8.2 模型拖动命令 542
19.8.3 模型创建命令 543
19.8.4 模型删除命令 544
19.8.5 模型直接编辑命令 546
19.9 大纲的实现 548
19.10 小结 549
第20章 代码生成插件 551
20.1 模型驱动 551
20.1.1 代码生成引擎 551
20.1.2 业务对象(BO)模型代码生成 551
20.1.3 流程定义模型代码生成 552
20.2 业务对象代码生成 555
20.2.1 业务对象生成Action 556
20.2.2 解析Ecore模型 558
20.2.3 持久化类模板 559
20.2.4 HBM文件模板 560
20.3 流程代码生成 562
20.3.1 流程代码生成Action 562
20.3.2 流程解析 564
20.3.3 流程模板 568
20.3.4 JET完成代码合并 570
20.4 代码生成模块的实现 573
20.4.1 代码生成公用类 573
20.4.2 流程代码生成基类 575
20.4.3 流程代码生成实现类 580
20.5 小结 582
第21章 开发工具的其他功能 583
21.1 生成数据表结构 583
21.1.1 生成数据表结构Action 583
21.1.2 生成数据表 584
21.2 发布部署 585
21.2.1 使用Tomcat插件 585
21.2.2 发布工程Action 586
21.2.3 处理发布进度 587
21.3 数据库导入 588
21.4 帮助插件 589
21.5 公用类 590
21.5.1 当前工程管理 590
21.5.2 异常管理 591
21.5.3 文件管理 592
21.6 有待添加的功能 598
21.7 小结 598
第22章 深入Eclipse开发 599
22.1 扩展属性视图 599
22.1.1 属性视图接口IPropertySource 600
22.1.2 属性视图的实现 601
22.2 扩展大纲视图 603
22.2.1 大纲视图接口IContentOutlinePage 603
22.2.2 大纲视图的实现 605
22.3 构造编辑器输入数据EditorInput 606
22.3.1 编辑器输入接口IEditorInput 606
22.3.2 IEditorInput的实现 607
22.4 操纵编辑器 609
22.4.1 查找编辑器 609
22.4.2 打开和关闭编辑器 610
22.5 选择与监听 610
22.5.1 选择事件提供者(Selection Provider) 611
22.5.2 选择服务(Selection Service) 612
22.5.3 选择事件监听器(Selection Listener) 614
22.5.4 实例 614
22.6 命令堆栈 617
22.6.1 命令堆栈(CommandStack) 617
22.6.2 监听器 619
22.7 适配器 619
22.7.1 适配器接口(IAdaptable) 620
22.7.2 适配器的实现 621
22.8 UI持久化 622
22.8.1 持久化机制 622
22.8.2 UI持久化与恢复的实现 623
22.9 深入Workbench 627
22.9.1 Workbench中实现类的关系 627
22.9.2 Part的生命周期 628
22.10 资源监听与访问 630
22.10.1 资源监听器 630
22.10.2 资源访问器 631
22.10.3 资源监听的实现 632
22.11 小结 634
附录A Tomcat安装及使用 635
A.1 Tomcat安装 635
A.2 Tomcat配置使用 635
附录B MySQL安装及使用 639
B.1 MySQL介绍 639
B.1.1 简介 639
B.1.2 准备条件 639
B.1.3 安装组件 640
B.1.4 使用配置向导 640
B.2 安装及使用 640
B.2.1 安装MySQL 640
B.2.2 MySQL使用 641
附录C CVS管理 643
C.1 术语 643
C.2 模块的输入与输出 644
C.2.1 连接CVS服务器 644
C.2.2 导入Eclipse项目 644
C.2.3 导出Eclipse项目 645
C.3 日常操作 645
C.3.1 提交(Commit) 646
C.3.2 更新(Update) 647
C.3.3 比较、替换 647