译者序
作者简介
前言
第1章 Java和J2EE平台 1
1.1 企业的今天 1
1.1.1 系统结构 2
1.1.2 答案是Java吗 5
1.2 J2EE平台 7
1.2.1 J2EE运行环境 7
1.2.2 J2EE API 8
1.3 J2EE体系结构—包容器 9
1.4 J2EE技术 14
1.4.1 组件技术 15
1.4.2 服务技术 16
1.4.3 通信技术 17
1.4.4 XML 18
1.5 部署J2EE应用程序 20
1.5.1 J2EE应用开发和部署中的角色 20
1.5.2 应用组件开发 21
1.5.3 把应用组件组合成模块 21
1.5.4 把模块组合成应用 21
1.5.5 应用部署 22
1.6 小结 22
第2章 采用RMI的分布式计算 23
2.1 RMI体系结构 24
2.1.1 Stub和Skeleton层 25
2.1.2 远程引用层 26
2.1.3 传输层 26
2.2 定位远程对象 27
2.3 RMI异常 30
2.4 用RMI开发应用程序 31
2.4.1 定义远程接口 31
2.4.2 实现远程接口 31
2.4.3 编写使用远程对象的客户程序 33
2.4.4 产生Stub和Skeleton 33
2.4.5 注册对象 33
2.4.6 运行客户程序和服务器 35
2.5 RMISecurityManager 35
2.6 在RMI中传递的参数 35
2.6.1 基本类型参数 36
2.6.2 对象类型参数 36
2.6.3 远程对象参数 36
2.7 分布式垃圾回收器 37
2.8 动态加载类 40
2.9 远程回调 44
2.10 对象激活 46
2.10.1 Activation Group 48
2.10.2 使对象为可激活的 50
2.10.3 激活 56
2.11 定制套接字和SSL 57
2.12 RMI. 防火墙和HTTP 68
2.12.1 HTTP隧道 69
2.12.2 SOCKS协议 70
2.12.3 可下载的套接字集合 70
2.13 IIOP上的RMI 70
2.13.1 与CORBA的互操作性 71
2.13.2 RMI-IIOP和Java IDL 72
2.13.3 用RMI-IIOP编写程序 72
2.13.4 RMI-IIOP和J2EE 76
2.14 小结 76
第3章 用JDBC进行数据库程序设计 78
3.1 数据库驱动器 79
3.1.1 类型1—JDBC-ODBC桥 79
3.1.2 类型2—部分采用Java, 另一部分
采用本地驱动器 80
3.1.3 类型3—中介数据库访问服务器 81
3.1.4 类型4—纯的Java驱动器 81
3.2 JDBC 2.1 Core API 83
3.2.1 加载数据库驱动器和打开连接 84
3.2.2 建立数据库连接 87
3.2.3 创建和执行SQL语句 88
3.2.4 用ResultSet接口来查询数据库 94
3.2.5 准备语句 96
3.2.6 把SQL类型映射到Java类型 98
3.2.7 事务支持 99
3.2.8 可滚动的和可更新的结果集 100
3.2.9 批量更新 106
3.3 JDBC 2.0 Optional Package API 106
3.4 JDBC数据源 107
3.4.1 javax.sql.DataSource接口 108
3.4.2 JNDI和数据源 109
3.4.3 修定后的Movie目录 112
3.5 连接池 112
3.5.1 传统的连接池 114
3.5.2 JDBC 2.0连接池 115
3.6 分布事务 118
3.6.1 什么是事务 118
3.6.2 简单背景知识 119
3.6.3 事务处理—概念 119
3.6.4 事务处理系统的构件模块 120
3.6.5 JDBC 2.0分布事务 121
3.6.6 实现分布事务的步骤 123
3.7 行集 125
3.7.1 javax.sql.RowSet接口 126
3.7.2 行集的类型 128
3.7.3 缓存的行集 128
3.7.4 JDBC行集 130
3.7.5 Web行集 130
3.8 小结 131
第4章 JNDI和LDAP 132
4.1 命名和目录服务 132
4.1.1 命名服务 132
4.1.2 目录服务 133
4.2 进入LDAP 134
4.2.1 访问控制 134
4.2.2 白页服务 135
4.2.3 分布式计算目录 136
4.2.4 LDAP数据 136
4.3 JNDI介绍 139
4.3.1 使用JNDI 141
4.3.2 JNDI服务提供者/JNDI驱动器 141
4.4 基本的LDAP操作 143
4.4.1 标准的LDAP操作 143
4.4.2 连接到LDAP服务器 143
4.4.3 认证或LDAP绑定 144
4.4.4 搜索一个LDAP服务器 146
4.4.5 对LDAP入口进行操作 154
4.5 在LDAP中存储和检索Java对象 161
4.5.1 传统的LDAP 161
4.5.2 串行化的Java对象 162
4.5.3 Java References 162
4.6 DSML 162
4.7 一个银行帐户JNDI应用程序 163
4.7.1 用RMI来使用LDAP 163
4.7.2 应用程序内容 164
4.7.3 JNDIRemoteBankInterface 165
4.7.4 JNDIRemoteBankServer 166
4.7.5 JNDIRemoteBankClient 168
4.7.6 Account类 169
4.7.7 运行应用程序 170
4.7.8 不采用注册表的RMI 171
4.7.9 创建一个对象目录 173
4.8 小结 173
第5章 XML基础 175
5.1 XML初步 175
5.1.1 XML和XML文档 175
5.1.2 XML处理器/分析器说明 178
5.1.3 为什么XML是强大的 178
5.1.4 XML的主要用途 179
5.1.5 Java和XML, J2EE中的XML 179
5.2 XML技术初步 181
5.2.1 标准化过程和W3C的角色 181
5.2.2 SGML和XML 182
5.2.3 DTD和XML Schema 183
5.2.4 XML风格 183
5.2.5 名字空间 184
5.3 形式良好的约束 184
5.3.1 属性引用 184
5.3.2 树结构 184
5.3.3 标记中显式的树结构 185
5.3.4 一个HTML/XHTML/XML例子 185
5.3.5 从HTML到XHTML 186
5.4 XML文档的逻辑结构 187
5.4.1 没有DTD的XML文档 187
5.4.2 具有DTD的XML文档 191
5.4.3 DTD和实体 195
5.4.4 阅读著名的DTD 196
5.5 DTD. 分析器和验证 197
5.5.1 分析器和DTD 197
5.5.2 XML Schema 197
5.5.3 DTD验证器 198
5.6 XML名字空间 199
5.6.1 主要思想——前缀和URI 200
5.6.2 重要的说明 200
5.6.3 名字空间声明的范围 201
5.6.4 缺省的名字空间 201
5.6.5 名字空间和属性名字 202
5.6.6 名字空间和DTD 203
5.7 用CSS风格化XML 203
5.7.1 CSS1例子和解释 203
5.7.2 选择子和声明 204
5.7.3 名字空间和CSS 206
5.8 用XSLT风格化XML 207
5.8.1 什么是XPath 207
5.8.2 试用XSLT 208
5.8.3 风格表单概貌 208
5.8.4 一个稍稍不同的改变 211
5.8.5 一点改进 212
5.9 未来的注目点 214
5.10 小结 214
第6章 用DOM和SAX进行XML分析 216
6.1 SAX. JAXP和一个简单的例子 218
6.1.1 SAX概述 218
6.1.2 JAXP的结构 219
6.1.3 一个简单的例子:计数元素 220
6.2 DOM和修改后的例子 222
6.2.1 节点类型 223
6.2.2 节点方法 223
6.2.3 用DOM计数元素 223
6.3 本章中的应用例子概述 225
6.3.1 实用类 225
6.3.2 PropDict类 225
6.3.3 Logger类 229
6.4 一个DOM应用程序 231
6.5 DOM进阶 242
6.5.1 DOM Level 1 242
6.5.2 XML. DOM和语言绑定 243
6.5.3 在XML 1.0规范中没有DOM特征 244
6.5.4 DOM绑定 245
6.6 SAX应用程序 249
6.6.1 SAX回顾 249
6.6.2 Sax2Writer 249
6.6.3 Dom2Sax 253
6.7 Java对象的SAX分析器和SAX筛选器 258
6.7.1 分析不是XML文本的对象 259
6.7.2 一个真实分析的例子 261
6.8 小结 264
第7章 Web包容器简介 265
7.1 HTTP协议 266
7.1.1 HTTP请求方法 266
7.1.2 HTTP应答 267
7.2 Web包容器和Web应用程序 267
7.2.1 Java Servlet 268
7.2.2 JSP 270
7.2.3 部署描述器 271
7.2.4 Web包容器的类型 272
7.3 第一个Web应用程序 273
7.3.1 准备Web包容器 273
7.3.2 创建HTML文件 274
7.3.3 创建servlet 274
7.3.4 编译源代码 275
7.3.5 编写部署描述器 275
7.3.6 测试这个应用程序 276
7.4 Web应用程序的组成 277
7.5 小结 282
第8章 servlet程序设计 283
8.1 Java Servlet API概貌 283
8.2 servlet实现 286
8.2.1 servlet接口 286
8.2.2 GenericServlet类 288
8.2.3 SingleThreadModal接口 288
8.2.4 HttpServlet类 289
8.3 servlet配置 291
8.3.1 ServletConfig接口 291
8.3.2 得到ServletConfig的引用 292
8.4 servlet异常 293
8.4.1 ServletException类 293
8.4.2 UnavailableException类 293
8.5 Servlet生命周期 294
8.6 servlet生命周期—FreakServlet 296
8.6.1 实例化 300
8.6.2 初始化 300
8.6.3 服务 301
8.6.4 消亡 303
8.7 用于请求和应答的API 304
8.7.1 ServletRequest接口 304
8.7.2 HttpServletRequest接口 306
8.7.3 ServletResponse接口 309
8.7.4 HttpServletResponse接口 311
8.8 servlet程序设计—技术支持应用程序 312
8.8.1 建立HTML页面 312
8.8.2 准备数据库 314
8.8.3 创建一个序列器 316
8.8.4 编写Servlet 316
8.8.5 编译源代码 319
8.8.6 部署描述器 319
8.8.7 运行技术支持应用程序的条件 320
8.8.8 数据库连接说明 322
8.9 小结 323
第9章 servlet会话. 上下文和协作 324
9.1 无状态和会话 325
9.2 用于会话跟踪的技术 326
9.2.1 URL重写 327
9.2.2 隐藏表单域 328
9.2.3 Cookie 328
9.3 采用Java Servlet API的会话跟踪 330
9.3.1 会话创建和跟踪 330
9.3.2 HttpSession接口 331
9.3.3 绑定和删除会话中的对象 341
9.3.4 使用会话的简单的购物车例子 342
9.4 servlet上下文 346
9.4.1 ServletContext接口 347
9.4.2 使用上下文和会话的聊天应用程序 349
9.5 servlet协作 363
9.5.1 servlet链 363
9.5.2 请求指派 364
9.5.3 修改后的技术支持应用程序 365
9.6 小结 376
第10章 Web部署. 认证和包装 377
10.1 Web应用程序的结构 377
10.1.1 目录结构 377
10.1.2 Web档案文件 379
10.2 把请求映射到应用程序和servlet上 380
10.3 Web应用程序的安全 384
10.3.1 程序安全 387
10.3.2 基于表单的认证 387
10.4 部署配置 390
10.4.1 上下文初始化参数 391
10.4.2 servlet初始化参数 392
10.4.3 在启动时加载servlet 392
10.4.4 会话超时 393
10.4.5 MIME映射 393
10.4.6 欢迎文件 394
10.4.7 错误页面 394
10.4.8 分布式应用程序 396
10.5 小结 397
第11章 JSP基础和体系结构 398
11.1 介绍JSP 398
11.2 内容和形式 402
11.2.1 JSP指令 403
11.2.2 脚本元素 407
11.2.3 标准动作 411
11.2.4 隐含的对象 425
11.2.5 范围 426
11.2.6 XML等价标记 428
11.3 JSP设计基础 429
11.3.1 以页面为中心或客户-服务器的
设计 429
11.3.2 Page-View 430
11.3.3 采用Bean的Page-View 430
11.4 “指派者”途径 431
11.4.1 Mediator-View 431
11.4.2 Mediator-Composite View 431
11.4.3 Service to Workers 432
11.5 JSP技术支持 433
11.5.1 应用程序设计 435
11.5.2 欢迎页面 435
11.5.3 处理请求的JSP 436
11.5.4 TechSupportBean 437
11.5.5 注册表单 439
11.5.6 Registration JSP 439
11.5.7 Response和Banner JSP 440
11.5.8 错误页面 441
11.5.9 部署应用程序 441
11.6 小结 442
第12章 JSP标记扩展 443
12.1 标记扩展101 443
12.2 标记扩展剖析 450
12.2.1 标记处理器 450
12.2.2 标记库描述器 457
12.2.3 在JSP页面中使用标记扩展 459
12.2.4 部署和包装标记库 459
12.3 编写标记扩展 462
12.3.1 处理属性 463
12.3.2 体内容 465
12.3.3 引入脚本变量的标记 466
12.3.4 体标记 470
12.3.5 标记嵌套 476
12.3.6 处理错误 481
12.4 标记扩展元语 481
12.5 小结 483
第13章 高级的定制JSP标记 484
13.1 一个XSL风格的标记 484
13.2 Swing模型标记 489
13.2.1 使用Swing ListModel 489
13.2.2 创建名字-值对的映射模型 492
13.2.3 使用Swing TableModel 496
13.3 分发 512
13.4 隐藏的细节内容 513
13.5 第三方的定制标记 516
13.5.1 流控制 516
13.5.2 J2EE技术 518
13.5.3 客户端验证 520
13.5.4 工具支持和未来的方向 521
13.6 小结 521
第14章 编写可维护的JSP页面 523
14.1 目标 523
14.2 在多层体系结构中的JSP 524
14.3 用于编写可维护的JSP的技术 526
14.3.1 请求控制器体系结构 526
14.3.2 在JSP中使用包含 530
14.3.3 使用JSP bean 531
14.3.4 使用标记扩展 534
14.3.5 处理迭代 536
14.3.6 处理条件逻辑 537
14.3.7 使用风格化的XML 538
14.3.8 什么时候为JSP使用定制的超类 539
14.3.9 公共对象的标准抽象 539
14.3.10 处理异常 540
14.3.11 国际化 540
14.4 文档化JSP层 541
14.5 工具支持 542
14.6 可维护的JSP的编码标准 543
14.6.1 设计原则和代码风格 543
14.6.2 格式化JSP页面 545
14.7 DBExplorer应用程序 547
14.7.1 需求 548
14.7.2 设计 550
14.7.3 实现 551
14.7.4 重新来看这个应用程序 583
14.7.5 部署应用程序 583
14.8 小结 585
第15章 JSP和XML—协同工作 586
15.1 JSP和XML 586
15.2 一个配置化的时事通信—一个实例
研究 587
15.2.1 澄清 588
15.2.2 主要的设计特点 588
15.2.3 主要的组件概述 588
15.2.4 试一试 590
15.3 配置组件 594
15.3.1 反射包 595
15.3.2 一个配置文件的例子 596
15.3.3 用于XML配置的Java代码 599
15.3.4 JSP和配置文件 609
15.4 数据库组件 609
15.4.1 DBConnector和它的缺省的实现 610
15.4.2 QueryHandler 611
15.4.3 ResultSetParser 617
15.4.4 UserDataHandler 621
15.5 XML数据访问组件 624
15.5.1 DomSearch查询 624
15.5.2 DomSearch输出 625
15.5.3 实例化DomSearch—DSNext-
Match 625
15.5.4 DomSearch的XML配置数据 626
15.5.5 在一个会话期间使用DomSearch 627
15.6 表示组件 627
15.6.1 注册页面 627
15.6.2 主帧页面和初始化 628
15.6.3 控制和数据帧 629
15.7 控制组件 634
15.7.1 StampPageFactory bean 634
15.7.2 StampPage Bean 638
15.8 对基本功能的扩充 640
15.9 小结 640
第16章 基于XML的JDBC Connector
Servlet框架 641
16.1 实现JDBC Connector Servlet 641
16.1.1 框架的功能需求 642
16.1.2 JCS体系结构 644
16.1.3 JCS脚本框架 645
16.1.4 实现JCS的Java类 650
16.1.5 其他的内容 674
16.1.6 包装J2EE部署的框架 676
16.1.7 把JCS部署到J2EE Servlet包容器中 678
16.2 使用JDBC Connector Servlet 679
16.2.1 Guestbook样本应用程序 679
16.2.2 SQL Server数据库浏览器应用程序 692
16.3 小结 697
第17章 JavaMail 699
17.1 建立指导 699
17.2 JavaMail API 701
17.2.1 javax.mail.Session 701
17.2.2 javax.mail.Authenticator和Password
Authentication 703
17.2.3 javax.mail.Message 704
17.2.4 javax.mail.Part 710
17.2.5 javax.mail.Multipart和BodyPart 714
17.2.6 javax.mail.internet.MimePart 714
17.2.7 javax.mail.internet.MimeMessage 716
17.2.8 javax.mail.internet.MimeMultipart和
MimeBodyPart 717
17.2.9 javax.mail.Service 718
17.2.10 javax.mail.Transport 719
17.2.11 javax.mail.Store 721
17.2.12 javax.mail.Folder 722
17.3 javax.mail.search.* 726
17.4 工作例子 727
17.5 小结 741
第18章 EJB体系结构与设计 742
18.1 什么是EJB 743
18.1.1 bean变体 744
18.1.2 在设计中使用EJB的原因 745
18.2 EJB包容器及其服务 746
18.3 EJB应用 751
18.3.1 客户端开发人员的观点 751
18.3.2 bean程序员的观点 754
18.3.3 EJB组件所禁止的操作 760
18.4 Web中的EJB组件 762
18.5 客户端层至EJB的访问 764
18.6 EJB层设计 765
18.6.1 UML use case 765
18.6.2 分析与实现 767
18.6.3 EJB设计示例 769
18.7 小结 776
第19章 会话bean与业务逻辑 777
19.1 会话bean与状态 777
19.1.1 业务逻辑表示 778
19.1.2 关于会话状态的难点问题 780
19.1.3 会话bean与持久化存储 782
19.2 财政资助计算器bean 782
19.2.1 无状态财政计算器bean 783
19.2.2 有状态财政计算器 bean 789
19.2.3 合并有状态与无状态bean 797
19.3 实现制造应用程序 801
19.3.1 客户端与业务逻辑接口 802
19.3.2 无状态会话bean的实现 815
19.3.3 有状态会话bean的实现 824
19.4 小结 831
第20章 实体bean与持久化 832
20.1 为什么不使用会话bean 832
20.1.1 有状态会话bean应用 832
20.1.2 无状态会话bean应用 835
20.1.3 实体bean的优点 837
20.2 包容器或者bean管理的持久化 838
20.2.1 SportBean实验室 839
20.2.2 完成运动队示例 859
20.3 关系 867
20.4 完成这里的制造应用程序 868
20.4.1 Order bean 868
20.4.2 Product bean 874
20.4.3 完成部署描述器 878
20.4.4 运行制造应用程序 880
20.5 小结 885
第21章 EJB包容器服务 887
21.1 事务 888
21.1.1 无包容器事务 889
21.1.2 事务的声明性语法 896
21.1.3 用户控制的事务 900
21.1.4 隔离级别 901
21.1.5 长事务 904
21.1.6 两阶段提交 905
21.2 安全性 906
21.2.1 确定安全性需求 907
21.2.2 编程性访问控制 910
21.2.3 安全性与应用程序设计 912
21.3 异常 913
21.3.1 应用程序异常 913
21.3.2 系统异常 916
21.4 通信 919
21.4.1 异构服务器之间的通信 919
21.4.2 In-VM方法调用 920
21.5 小结 921
第22章 开发与部署功能 922
22.1 企业级bean提供者 923
22.2 应用程序组装者 934
22.3 部署描述器 941
22.4 系统管理员 944
22.5 包容器/应用程序服务器开发商 946
22.6 制造应用程序的Web接口 947
22.7 关于解决问题的提示 969
22.8 小结 970
第23章 EJB 2.0 972
23.1 EJB 2.0的新特性 972
23.2 EJB 2.0的由包容器管理的持久化 973
23.2.1 cmp-field类型 976
23.2.2 cmr-field类型 977
23.2.3 完整的CMP 2.0部署描述器 983
23.2.4 编写CMP 2.0 bean 988
23.3 EJB 2.0查询语言 995
23.3.1 程序员在哪里指定查询 996
23.3.2 程序员如何指定查询 997
23.3.3 来自于制造应用程序的查询 1001
23.4 消息驱动的bean 1001
23.5 位于本地接口的业务方法 1004
23.6 小结 1011
第24章 J2EE应用程序设计考虑事项 1012
24.1 世事变迁 1012
24.2 设计环境 1013
24.3 体系结构与设计 1015
24.3.1 体系结构的类型 1016
24.3.2 强制. 模型和重复 1017
24.4 分布式设计 1019
24.5 从头开始 1020
24.6 增加中间层 1023
24.7 购物 1025
24.8 提交与处理订单 1027
24.9 已经学习过的内容 1030
24.9.1 将模式-视图-控制器应用于用户
接口 1030
24.9.2 JSP设计原则 1030
24.9.3 选择适当的数据格式 1030
24.9.4 减少数据传递量 1031
24.9.5 设计分布式接口 1031
24.9.6 用于同步操作的消息映射 1032
24.9.7 事务规划 1032
24.10 购物订单系统之外的问题 1032
24.10.1 EJB接口设计 1032
24.10.2 分布式事件 1033
24.10.3 处理数据库 1034
24.10.4 状态管理 1035
24.11 体系结构与进程 1036
24.12 小结 1037
第25章 性能与伸缩性 1038
25.1 妥协方案 1039
25.1.1 开发周期 1039
25.1.2 代理的优缺点 1040
25.2 可伸缩性的重要性 1042
25.3 性能 1043
25.3.1 编码问题 1044
25.3.2 性能测试与调试 1045
25.3.3 设计期间的问题 1047
25.4 伸缩性 1060
25.4.1 伸缩性与性能测试 1061
25.4.2 高伸缩性设计 1064
25.4.3 数据流与缓存 1070
25.4.4 由备份实现的伸缩性 1075
25.5 有效性能与伸缩性的项目规划 1077
25.6 小结 1078
第26章 调试Java服务器应用 1079
26.1 Java服务器端编程的不同之处 1079
26.1.1 Java语言 1079
26.1.2 应用运行于服务器 1080
26.1.3 运行过程时间长 1081
26.1.4 健壮性和稳定性 1083
26.1.5 多用户/多线程 1085
26.1.6 性能 1087
26.2 调试工具和技术 1088
26.3 小结 1101
第27章 单元测试J2EE应用 1103
27.1 单元测试的概念 1103
27.2 JUnit框架介绍 1105
27.3 使用JUnit框架 1105
27.4 如何进行单元测试 1106
27.4.1 单元测试步骤 1107
27.4.2 编写可测试代码 1108
27.4.3 进行单元测试的原因 1108
27.5 简单对象的单元测试 1109
27.5.1 单元测试一个实用对象 1109
27.5.2 单元测试一个事务对象 1115
27.6 单元测试servlet 1121
27.7 单元测试数据库访问层 1130
27.8 单元测试JSP 1131
27.9 单元测试EJB和RMI对象 1132
27.10 小结 1136
第28章 Java消息服务 1137
28.1 消息系统 1137
28.2 JMS编程 1138
28.2.1 发布和预定编程 1139
28.2.2 点到点编程 1143
28.2.3 消息 1145
28.2.4 JMS编程技术和问题 1147
28.3 JMS实现 1153
28.4 一个示例应用 1154
28.4.1 代码简介 1154
28.4.2 运行此应用 1159
28.5 JMS基于消息的集成 1159
28.5.1 将JMS和XML作为一种集成平台 1160
28.5.2 集成的体系结构模式 1160
28.5.3 超越集成—设计开放式应用 1162
28.6 小结 1162
第29章 与CORBA的集成 1163
29.1 本章使用工具 1163
29.2 CORBA简介 1163
29.3 IDL入门 1180
29.3.1 基本IDL类型 1180
29.3.2 复杂IDL类型 1180
29.3.3 模块 1181
29.3.4 接口 1181
29.3.5 属性 1182
29.3.6 操作 1182
29.3.7 异常 1183
29.3.8 继承 1184
29.4 J2EE和CORBA 1184
29.5 与J2EE集成 1195
29.5.1 servlet和CORBA对象 1196
29.5.2 JavaServer Page和CORBA对象 1204
29.5.3 EJB和CORBA对象 1208
29.5.4 J2EE用做CORBA客户端简介 1215
29.6 小结 1216
第30章 结合在一起的J2EE应用 1217
30.1 J2EE应用 1217
30.1.1 J2EE模块 1217
30.1.2 应用部署描述器 1218
30.1.3 J2EE应用结构 1220
30.1.4 为什么J2EE应用有些麻烦 1221
30.1.5 J2EE应用的前景 1221
30.2 设计一个J2EE应用 1222
30.3 应用开发周期 1224
30.4 创建一个完整的J2EE应用 1224
30.4.1 需求 1225
30.4.2 设计 1225
30.4.3 组件实现 1226
30.4.4 组件打包/汇编 1232
30.4.5 应用汇编 1234
30.4.6 应用部署 1238
30.4.7 运行应用 1242
30.4.8 使用其他的应用服务器 1243
30.5 小结 1244
附录A 配置Tomcat和JRun 1245
附录B 建立Netscape iPlanet目录
服务器 1256
附录C HTTP参考 1268
附录D 国际化 1278
附录E Swing HTML生成 1300
附录F 支持. 勘误和P2P.Wrox.Com 1333