第一部分 Enterprise JavaBeans 2
第1章 应用程序体系结构概念 2
1.1 应用程序的三层结构 2
1.2 单层应用程序 5
1.3 双层应用程序 5
1.4 三层应用程序 6
1.5 选择因素 7
1.6 各种“性能” 8
1.7 混合体系结构 10
1.8 案例分析:联机订单系统 11
2.1 关系型数据库简介 12
第2章 SQL简介 12
2.2 关系 13
2.3 结构化查询语言 16
2.4 自动产生关键字 23
2.5 故障诊断 23
第3章 Java数据库连接 25
3.1 JDBC简介 25
3.2 JDBC的核心组件 28
3.3 简单的数据库查询程序 33
3.4 插入、更新与删除数据 34
3.5 更新结果集中的数据 36
3.6 JDBC可选包 38
3.7 故障诊断 39
第4章 远程方法调用 41
4.1 RMI简介 41
4.2 生成RMI服务器对象 43
4.3 生成RMI客户机 46
4.4 远程方法参数 47
4.5 使用RMI注册表 48
4.6 实现远程对象工厂 48
4.7 进行回调 51
4.8 远程激活 55
4.9 故障诊断 59
5.1 EJB的作用 61
第5章Enterprise JavaBeans概述 61
5.2 容器、组件与接头 63
5.3 Enterprise JavaBeans简介 64
5.4 会话Bean 67
5.5 实体Bean 67
5.6 事务 67
5.7 核心技术 68
5.8 案例分析 69
第6章 生成会话Bean 70
6.1 会话Bean的作用 70
6.2 “Hello World”会话Bean 70
6.3 生成无状态会话Bean 79
6.4 再谈会话Bean 82
6.5 生成实用的会话Bean 87
6.6 故障论断 96
第7章 生成实体Bean 97
7.1 实体Bean简介 97
7.2 实体Bean与数据库交互的方式 98
7.3 用BMP生成实体Bean 99
7.4 再谈实体Bean 118
7.5 从会话Bean中使用实体Bean 122
7.6 从一个实体Bean向另一个实体Bean传递引用 124
7.7 故障诊断 124
8.1 使用CMP的理由 125
第8章 使用容器管理持久性 125
8.2 在EJB 1.1中生成CMP实体Bean 126
8.3 在EJB 2.0中生成CMP实体Bean 138
8.4 故障诊断 152
第9章 EJB事务 153
9.1 事务的重要性 153
9.2 ACID测试 155
9.3 启动和终止事务的对象 156
9.4 使用容器管理事务 157
9.5 使用SessionSynchronization接口 158
9.6 对Bean管理事务使用Java Transaction API 159
9.7 故障诊断 159
10.1 关系型模型与对象模型 161
第10章 将对象映射到关系型数据库 161
10.2 性能问题 164
10.3 使用对象数据库 165
10.4 使用TopLink对象到关系型映射器 165
10.5 故障诊断 172
第11章 调试EJB 173
11.1 调试困难的原因 173
11.2 用日志文件调试应用程序 173
11.3 使用调试器 174
11.4 调试Enterprise JavaBeans 175
11.5 故障诊断 176
12.1 客户机访问Enterprise JavaBeans 178
第12章 设计EJB 178
12.2 会话Bean与实体Bean 179
12.3 生成视图对象 180
12.4 改进EJB性能 189
12.5 案例分析 190
第二部分 Java Server Pages与小服务 192
第13章 小服务 192
13.1 小服务简介 192
13.2 “Hello World”小服务 192
13.3 小服务的构成 194
13.4 HttpServlet类 197
13.5 故障诊断 198
14.1 “Hello World” Java Server Page 199
第14章Java Server Pages 199
14.2 在Java Server Page中使用<% %>标记对 201
14.3 用<%=%>显示数值 203
14.4 插入说明 205
14.5 用<%!%>声明方法与变量 206
14.6 在JSP中处理多线程 207
14.7 从小服务与Java Server Pages中选择 211
14.8 故障诊断 212
第15章 常见JSP任务 214
15.1 简单HTML窗体 214
15.2 使用request对象 216
15.3 在小服务中取得窗体变量 220
15.4 在session对象中存储数据 222
15.5 会话的工作原理 225
15.6 强制新会话 226
15.7 处理会话终止 227
15.8 处理不带Cookies的会话 231
15.9 存储应用程序级数据 233
15.10 故障诊断 234
第16章 用新标记扩展JSP 236
16.1 在页面中包括其他文件 236
16.2 转进到另一页 242
16.3
16.4 定制标记扩展 252
16.5 “Hello World”标记 253
16.6 封装与安装标记 254
16.7 使用定制标记的条件 256
16.8 访问标记属性 259
16.9 用定制标记处理程序体内容 263
16.10 增加脚本变量 265
16.11 故障诊断 268
第三部分 其他J2EE技术 272
第17章 CORBA 272
17.1 CORBA简介 272
17.2 接口定义语言 273
17.3 生成CORBA服务器 275
17.4 生成CORBA客户机 278
17.5 属性 280
17.6 再谈IDL 280
17.7 工厂 287
17.8 回调 291
17.9 对象引用 297
17.10 动态调用 301
17.11 使用CORBA与RMI 303
17.12 CORBA应用程序体系结构 306
17.13 其他CORBA服务 308
17.14 故障诊断 308
18.1 中央目录 310
第18章 Java命名与目录接口 310
18.2 JNDI基础 311
18.3 目录操作 313
18.4 通过JNDI使用LDAP 314
18.5 LDAP的类与属性 316
18.6 故障诊断 322
第19章Java消息服务 323
19.1 消息的重要性 323
19.2 消息类型 324
19.4 再谈消息 325
19.3 Java消息服务 326
19.5 消息驱动Bean 338
19.6 故障诊断 341
第20章 连接现有系统 342
20.1 外部系统连接类型 342
20.2 套接字连接现有系统 342
20.3 向现有系统发消息 343
20.4 使用定制访问库 343
20.5 使用J2EE Connector API 343
20.6 案例分析 345
第21章 封装与安装J2EE应用程序 347
21.1 使用自动化EJB封装工具 347
21.2 如何封装Enterprise JavaBeans 347
21.3 EJB部署描述选项 350
21.4 封装Java Server Pages与小服务 351
21.5 WAR配置选项 353
21.6 应用程序部署 356
21.7 EAR描述选项 357
21.8 故障诊断 357
第四部分 在J2EE中使用XML 360
第22章 可扩展标记语言 360
22.1 XML简介 360
22.2 XML在J2EE中的重要性 360
22.3 基本XML语法 361
22.4 生成文档类型定义 363
22.5 其他XML规范 365
22.7 用Java生成XML文档 367
22.6 Java与XML 367
22.8 用Java分析XML文档 368
22.9 故障诊断 379
第23章 用XSL转换XML文档 381
23.1 XML简介 381
23.2 简单XSL样式表 381
23.3 使用独立XSL处理器 385
23.4 对浏览器采用XSL模板 386
23.5 对小服务采用XSL模板 386
23.6 用XPath漫游XML文档 392
23.7 JSP与样式表 394
23.8 故障诊断 395
24.1 其他工具的作用 396
第24章 使用Java-XML工具 396
24.2 XML实例与Java Beans文件 397
24.3 用KBML序列化和反序列化Java Beans 400
24.4 用JOX读写XML中的对象 403
24.5 用Quick读写XML中的对象 406
24.6 故障诊断 409
第25章 用XML-SOAP进行远程方法调用 410
25.1 SOAP简介 410
25.2 使用SOAP与Java 413
25.3 使用SOAP与Enterprise JavaBeans 416
25.4 通过E-mail发送SOAP请求 420
25.5 故障诊断 421
26.1 理解网络的重要性 424
26.2 Internet协议 424
第五部分 网络 424
第26章 网络与网络协议 424
26.3 域名服务 430
26.4 防火墙 431
第27章 网络编程 433
27.1 套接字编程 433
27.2 使用数据报文套接字 458
27.3 选择TCP与UDP 462
27.4 故障诊断 462
28.2 寻找Internet标准 463
28.1 定义Internet协议 463
第28章 Internet协议概述 463
28.3 Internet协议的基本特性 464
28.4 常用Internet协议 464
28.5 文件传输协议 465
28.6 案例分析 481
第29章 HTTP协议 482
29.1 HTTP协议 482
29.2 公共请求报头* 486
29.3 公共响应报头 487
29.4 HTTP POST命令 487
29.5 POST与GET 488
29.7 案例分析 489
29.6 HTTPS 489
第30章 E-mail协议 490
30.1 简单邮件传输协议 490
30.2 邮局协议第3版 496
30.3 Internet消息访问协议第4版 505
30.4 Java Mail API 506
30.5 故障诊断 513
第31章 代理与中继 514
31.1 连接无处不在 514
31.2 中继数据报文 525
31.3 生成定制套接字 527
31.4 案例分析 535
第六部分 安全性 538
第32章 加密技术简介 538
32.1 加密简介 538
32.2 加密术语 539
32.3 选择正确加密类型 540
32.4 防止恶意攻击 541
32.5 数字签名 543
32.6 数字证书 544
32.7 案例分析 545
第33章 加密数据 546
33.1 Java加密扩展 546
33.2 生成加密密钥 547
33.3 加密数据 548
33.4 解密数据 553
33.5 加密对象 555
33.6 简单公用密钥实现 556
33.7 访问密钥库 558
33.8 交换密钥 559
33.9 故障诊断 567
第34章 数字签名数据 568
34.1 数字签名的工作原理 568
34.2 简单数字签名算法 570
34.3 数字签名数据 572
34.4 故障诊断 577
第35章 使用安全套接字层 578
35.1 安全套接字层的工作原理 578
35.2 管理密钥与证书 580
35.3 生成SSL服务器程序 583
35.4 生成SSL客户机程序 584
35.5 与Web浏览器通信 585
35.6 SSL中继程序 587
35.7 用SSL访问Web服务器 587
35.8 使用SSL与RMI 588
35.9 故障诊断 589
36.1 内置安全的优点 591
第36章Java安全特性 591
36.2 Java安全框架 592
36.3 签名JAR文件 599
36.4 故障诊断 600
第37章 J2EE安全性 602
37.1 基于角色安全性 602
37.2 基本验证 603
37.3 生成定制登录窗体 608
37.4 用程序检查安全性角色 610
37.5 用客户端证书验证 614
37.6 故障诊断 614
第38章 序列化 618
38.1 序列化的多种用途 618
第七部分 动态Java 618
38.2 定制序列化 634
38.3 处理多个版本 639
38.4 故障诊断 640
第39章 反射 641
39.1 反射简介 641
39.2 检查运行时的对象 641
39.3 取消访问限制 647
39.4 生成动态代理 649
39.5 改进反射性能 653
39.6 故障诊断 653
40.1 运行时装入类 655
第40章 动态类装入 655
40.2 将服务器设计成使用动态类装入 659
40.3 故障诊断 665
第41章 内省 666
41.1 内省的工作原理 666
41.2 在应用程序中使用内省 672
41.3 选择内省与反射 672
41.4 故障诊断 673
第42章Model-View-Controller机制 674
42.1 Model-View-Controller简介 674
42.2 用反射实现MVC 675
42.3 在Web应用程序中使用MVC 693
42.4 调用多个控制器与视图 704
42.5 案例分析 708
第43章 代码生成 711
43.1 自动生成代码 711
43.2 用XML描述对象 712
43.3 处理改变 721
43.4 生成与不生成代码 722
43.5 案例分析 722
第八部分 小程序 724
第44章 小程序开发 724
44.1 小程序的作用与适用场合 724
44.2 生成小程序 725
44.3 小程序安全限制 727
44.4 从小程序访问文件与数据 729
44.5 改进小程序下载 747
44.6 在独立应用程序中运行小程序 751
44.7 使用Java插入件 752
44.8 故障诊断 755
第45章 代码签名 756
45.1 数字签名代码的原因 756
45.2 对Java插入件签名代码 756
45.3 对Internet Explorer签名代码 760
45.4 对Netscape Navigator签名代码 762
45.5 故障诊断 764
46.1 小程序在EJB应用程序中的适用场合 765
第46章 在小程序中使用Enterprise JavaBeans 765
46.2 生成访问EJB的小程序 766
46.3 取得所需类 769
46.4 故障诊断 770
第47章 用Web Start代替小程序 771
47.1 Web Start简介 771
47.2 生成Web Start应用程序 771
47.3 文件访问与其他有用特性 775
47.4 故障诊断 777
第九部分 解决问题 780
第48章 缩小问题范围 780
48.1 调试艺术 780
48.2 调试技术 782
48.3 缩小问题范围 786
48.4 故障诊断 786
第49章 反编译与补包 787
49.1 Java类反编译 787
49.2 Java类反汇编 791
49.3 Java库补包 796
49.4 故障诊断 796
第十部分 J2EE应用 798
第50章 J2EE Web应用程序 798
50.1 设计基于Web的EJB应用程序 798
50.2 生成实体Bean 800
50.3 生成会话Bean 807
50.4 生成Web接口 822
50.5 部署应用程序 829
50.6 故障诊断 831
第51章 用XML进行数据交换 832
51.1 XML适合数据交换的原因 832
51.2 用SAX与DOM分析XML 832
51.3 故障诊断 840
第52章 国际化 841
52.1 探测浏览器优选场景 841
52.2 使用基于场景的文本格式器 843
52.3 使用资源捆绑 847
52.4 故障诊断 852
第53章 生成无线Web应用程序 853
53.1 无线“Hello World”页面 854
53.2 WML简介 855
53.3 在小服务与JSP中探测无线客户机 862
53.4 无线成绩输入与报表系统 862
53.5 故障诊断 879
第54章 生成B2B应用程序 880
54.1 公司对公司简介 880
54.2 用不同通信方法 880
54.3 数据格式问题 881
54.4 生成B2B应用程序 881