书籍详情
21天学通J2EE(第二版)
作者:(美)Martin Bond 等著;周辉 等译
出版社:人民邮电出版社
出版时间:2005-01-01
ISBN:9787115128959
定价:¥75.00
购买这本书可以去
内容简介
在短短21天的课程里,您能学到成为熟练的J2EE1.4开发人员所需的全部知识和技巧。通过对本书的学习,您将会使用JavaServerPages和Servlet创建JavaWeb站点,利用EnterpriseJavaBeans和Web服务来开发健壮的企业应用程序。立即开始创建企业应用程序。通过学习本书中精心组织的21天课程,您将学会使用J2EE1.4构建分布式系统。每次学习都会向J2EE深入一步。您可以一天学完一章课程,在不到一个月的时间里掌握J2EE的核心概念,进行Web服务开发。检验您对所学知识的掌握程度。每一章最后有很多问题、答案和练习,便于您进一步学习。●把Servlet和JSP结合使用,将Web表示与编程分离开来;●利用JSP表达式语言和JavaServerPages标准标记库;●使用EnterpriseJavaBeans2.1创建可重用组件;●使用JMS和消息驱动Bean实现通信;●在J2EE应用程序中合并Javamail、XML和XSLT;●使用JAX-RPC和SAAJ开发RPC型和消息型J2EEWeb服务。本书从J2EE的基础知识开始,全面介绍了EJB、CMP、JSP、XML、Web服务等相关知识。每天的课程都提供了一些练习,有助于读者巩固所学知识。书中还提供了一个完整的求职代理示例,读者可以结合本书内容,动手操作完成这个示例。本书共分为21课,每天一课,共三周时间可以完成全部内容的学习。第一周的课程讲述了J2EE和EJB的相关知识,内容包括N层开发、J2EE平台和角色、命名和目录服务、EJB简介、会话EJB、实体EJB、CMP和EJBQL等;第二周的课程介绍了异步交互和如何开发基于Web的组件,包括事务处理与持久性、Java消息服务、消息驱动Bean、JavaMail、Servlet、JSP、JSP标记库等;第三周的课程介绍了企业应用的安全性和完整性、XML文档转换、模式、整合外部资源、Web服务等。本书适合于有一定Java编程经验的程序员阅读。通过本书的学习,能将您的Java技能提高到一个新的水平。
作者简介
暂缺《21天学通J2EE(第二版)》作者简介
目录
第一周课程 J2EE与EJB简介
第1天课程 挑战N层开发 2
1.1 单层程序的开发 2
1.2 向二层开发进军 3
1.3 开发三层体系结构 4
1.4 用模块简化复杂性 5
1.5 组件技术 5
1.6 现代的N层体系结构 6
1.7 企业计算模型 6
1.7.1 生命周期 7
1.7.2 持久性 7
1.7.3 命名 7
1.7.4 事务 7
1.7.5 安全性 8
1.8 Java 2企业版(J2EE) 8
1.8.1 组件和容器 8
1.8.2 J2EE标准服务 9
1.8.3 J2EE 1.4的新特性 10
1.8.4 J2EE蓝图 10
1.8.5 J2EE兼容性和Java验证 11
1.9 J2EE的发展前景 11
1.10 小结 11
1.11 问与答 11
1.12 练习 12
第2天课程 J2EE平台和角色 13
2.1 再谈J2EE平台 13
2.2 了解J2EE组件 14
2.3 企业JavaBean 14
2.3.1 会话Bean 15
2.3.2 实体Bean 16
2.3.3 消息驱动Bean 16
2.4 Web应用 16
2.4.1 Servlet 16
2.4.2 JSP 17
2.4.3 Web应用体系结构 17
2.4.4 Web服务 18
2.5 应用客户端 18
2.6 J2EE技术 18
2.6.1 超文本传输协议(HTTP) 19
2.6.2 基于安全套接层的HTTP(HTTPS) 19
2.6.3 Java数据库连接(JDBC) 19
2.6.4 Java事务API(JTA) 19
2.6.5 Java认证和授权服务(JAAS) 19
2.6.6 用于解析XML的Java API(JAXP) 19
2.6.7 用于基于XML的 RPC 的Java API (JAX-RPC) 19
2.6.8 用于XML注册表(JAXR)的Java API 20
2.6.9 带有附件的用于Java的SOAP API(SAAJ) 20
2.6.10 Java命名和目录接口(JNDI) 20
2.6.11 JavaBean激活框架(JAF) 20
2.6.12 JavaMail 20
2.6.13 Java消息服务(JMS) 20
2.6.14 Java接口定义语言(Java IDL) 20
2.6.15 基于IIOP协议的远程方法调用(RMI-IIOP) 20
2.6.16 连接器体系结构 21
2.7 J2EE平台角色 21
2.7.1 J2EE产品供应商 21
2.7.2 应用程序组件供应商 22
2.7.3 应用程序组装者 22
2.7.4 应用程序部署者 22
2.7.5 系统管理员 22
2.7.6 工具供应商 22
2.8 打包和部署J2EE应用程序 23
2.8.1 J2EE应用程序 23
2.8.2 EJB组件 24
2.8.3 Web组件 25
2.8.4 应用程序组件 25
2.8.5 连接器组件 25
2.9 小结 25
2.10 问与答 26
2.11 练习——Sun Microsystems的J2EE SDK 26
2.11.1 下载Sun Microsystems的J2EE SDK 1.4 26
2.11.2 安装Sun Microsystems的J2EE SDK 1.4 27
2.11.3 配置J2EE SDK 1.4开发环境 29
2.11.4 J2EE SDK包含的组件 29
2.11.5 启动J2EE服务器 30
2.11.6 J2EE和PointBase故障排除 33
2.11.7 本书中可选用的软件 34
2.12 练习——学习实例 34
2.12.1 求职代理 34
2.12.2 使用求职代理实例 35
2.12.3 熟能生巧 36
2.12.4 网站上的学习实例目录 37
2.12.5 使用asant编译文件 37
2.12.6 学习实例 38
2.12.7 对学习实例使用deploytool 38
2.12.8 运行独立的Java示例 38
2.12.9 安装学习实例数据库 38
第3天课程 命名和目录服务 42
3.1 命名和目录服务 42
3.1.1 为什么使用命名服务 43
3.1.2 JNDI是什么 43
3.1.3 常见命名服务 43
3.1.4 命名约定 44
3.2 借助J2EE RI来使用JNDI 45
3.2.1 绑定J2EE组件 45
3.2.2 查找J2EE组件 46
3.2.3 其他分布式J2EE组件 49
3.2.4 J2EE Java组件环境 49
3.3 在J2EE外部使用JNDI 50
3.3.1 定义JNDI服务 50
3.3.2 JNDI属性文件 51
3.3.3 应用程序属性 51
3.3.4 硬编码的属性 52
3.3.5 初始环境命名异常 52
3.4 使用JNDI功能 52
3.4.1 绑定和重命名对象 53
3.4.2 更改环境 53
3.4.3 环境参数列表 54
3.4.4 创建和销毁环境参数 56
3.4.5 使用多重名字服务 56
3.4.6 JNDI事件 56
3.5 目录服务 57
3.5.1 使用LDAP 57
3.5.2 使用目录服务 58
3.5.3 搜索目录服务 58
3.6 JNDI安全性 59
3.7 小结 60
3.8 问与答 61
3.9 练习 61
第4天课程 Enterprise Java Bean简介 62
4.1 什么是EJB 62
4.1.1 Bean、客户端、容器和服务器 62
4.1.2 EJB的类型 63
4.1.3 EJB的常见用途 63
4.2 为什么使用EJB 63
4.3 EJB中包括什么 64
4.3.1 业务接口 65
4.3.2 home接口 66
4.3.3 Bean实现 67
4.3.4 部署描述符 70
4.3.5 验证EJB 70
4.4 如何创建EJB 71
4.4.1 对EJB的限制 71
4.4.2 EJB部署描述符 71
4.4.3 EJB-JAR文件 72
4.4.4 EAR文件 73
4.5 如何部署EJB 73
4.6 如何使用EJB 74
4.6.1 发现EJB 75
4.6.2 检索与使用 76
4.6.3 除去EJB 76
4.6.4 运行客户端 77
4.6.5 客户端应用程序 77
4.7 使用J2EE引用实现(RI) 78
4.7.1 配置J2EE RI 78
4.7.2 打开学习实例的EAR文件 78
4.7.3 查看学习实例应用程序 79
4.7.4 验证学习实例应用程序 83
4.7.5 部署学习实例应用程序 85
4.7.6 运行应用程序客户端 85
4.7.7 管理J2EE RI应用程序 86
4.7.8 学习实例asant编译文件 88
4.7.9 学习实例应用程序的故障排除 89
4.8 小结 90
4.9 问与答 90
4.10 练习 91
第5天课程 会话EJB 92
5.1 概述 92
5.2 会话Bean的javax.ejb包 93
5.3 指定一个无状态会话Bean 93
5.4 无状态会话Bean的实现 96
5.4.1 无状态会话bean的生命周期 96
5.4.2 javax.ejb.SessionBean的实现 98
5.4.3 home接口方法的实现 98
5.4.4 远程接口方法的实现 99
5.4.5 异常 100
5.5 配置一个无状态会话Bean 101
5.6 使用J2EE RI deploytool配置会话bean 102
5.6.1 定义新的EJB会话bean 103
5.6.2 定义会话bean 104
5.6.3 定义JNDI名字 106
5.6.4 事务管理 107
5.6.5 环境条目 108
5.6.6 资源引用 109
5.6.7 EJB部署描述符 111
5.7 客户端应用程序 111
5.7.1 设计因素 111
5.7.2 异常处理 112
5.8 用deploytool来配置J2EE RI客户端应用程序 112
5.9 运行Agency学习实例 115
5.10 有状态会话Bean 116
5.10.1 指定有状态会话bean 116
5.10.2 有状态会话Bean的实现 118
5.10.3 配置有状态会话Bean 120
5.11 定时器服务 121
5.12 忠告 122
5.13 小结 122
5.14 问与答 123
5.15 练习 123
第6天课程 实体EJB 126
6.1 概述 126
6.2 实体Bean的javax.ejb包 128
6.3 远程接口与本地接口 129
6.4 BMP实体Bean的生命周期 130
6.5 指定BMP实体Bean 134
6.5.1 本地Home接口 134
6.5.2 本地接口 137
6.6 BMP实体Bean的实现 138
6.6.1 实现javax.ejb.EntityBean 138
6.6.2 实现本地Home接口方法 142
6.6.3 实现本地接口方法 148
6.6.4 生成ID号 149
6.6.5 再谈粒度 150
6.6.6 使用查找方法的注意事项 150
6.6.7 EJB容器性能调试 151
6.6.8 自我封装字段 152
6.7 配置和部署BMP实体Bean 153
6.8 客户端视图 157
6.9 忠告 161
6.10 小结 162
6.11 问与答 162
6.12 练习 163
第7天课程 CMP和EJB查询语言 164
7.1 容器管理的持久性概述 164
7.1.1 N层体系结构和CMP字段 165
7.2 CMP实体Bean的生命周期 167
7.3 容器管理的关联 169
7.3.1 关联类型 169
7.3.2 多重性 169
7.3.3 导航 170
7.3.4 CMR字段 170
7.4 EJB查询语言 171
7.5 选择方法 176
7.6 CMP实体Bean的实现 176
7.6.1 本地接口 176
7.6.2 实现javax.ejb.EntityBean 177
7.7 使用J2EE RI部署CMP实体Bean 180
7.7.1 捕获数据库模式 180
7.7.2 使用deploytool添加一个CMP实体bean 180
7.7.3 定义CMP实体bean的查找方法 184
7.7.4 定义实体bean CMR字段 185
7.7.5 使用J2EE RI映射实体bean CMP字段 189
7.7.6 使用J2EE RI映射实体bean CMR字段 191
7.7.7 使用J2EE RI部署实体bean学习实例 195
7.8 CMP实体bean设计注意事项 196
7.9 忠告 197
7.10 小结 198
7.11 问与答 198
7.12 练习 198
第二周课程 开发J2EE应用程序
第8天课程 事务处理和持久性 202
8.1 事务处理概述 202
8.2 容器管理的事务划分 204
8.3 Bean管理的事务划分 208
8.3.1 动机和限制 208
8.3.2 使用Java 事务API 209
8.3.3 部署BMTD Bean 211
8.3.4 客户端划分事务 212
8.3.5 再谈异常 213
8.4 扩展的有状态会话bean的生命周期 213
8.5 后台事务:事务实质 215
8.5.1 事务管理器、资源管理器和两阶段提交 215
8.5.2 JTA API 216
8.5.3 事务出错后应如何解决 217
8.5.4 JTA与JTS 219
8.6 持久性技术概述 220
8.7 JDBC 221
8.8 SQLj 222
8.8.1 SQLj Part 0 222
8.8.2 SQLj Part 1 224
8.8.3 SQLj Part 2 225
8.9 JDO 225
8.10 小结 227
8.11 问与答 228
8.12 练习 228
第9天课程 Java消息服务 229
9.1 消息 229
9.2 Java消息服务API 230
9.3 JMS API体系结构 231
9.4 借助于J2EE RI使用JMS 233
9.5 点对点消息示例 235
9.5.1 连接到队列 235
9.5.2 JMS消息 236
9.5.3 创建消息 237
9.5.4 发送消息 237
9.5.5 关闭连接 237
9.5.6 发送JMS文本消息示例 237
9.5.7 使用消息 239
9.6 简单同步接收器示例 239
9.6.1 接收JMS文本消息示例 240
9.6.2 异步消息 241
9.7 发布/订阅消息域 244
9.8 发布/订阅消息示例 244
9.8.1 电子公告牌发布程序 244
9.8.2 电子公告牌订阅程序 246
9.8.3 创建持久订阅 247
9.9 JMS的其他特点 249
9.9.1 消息选择器 249
9.9.2 会话确认模式 249
9.9.3 消息持久性 249
9.9.4 事务处理 250
9.9.5 多线程 251
9.10 小结 251
9.11 问与答 251
9.12 练习 252
第10天课程 消息驱动Bean 253
10.1 什么是MDB 253
10.1.1 消息产生器的观点 254
10.1.2 与其他EJB的异同
之处 254
10.2 MDB中的编程接口 254
10.3 MDB的生命周期 254
10.3.1 MDB环境 255
10.3.2 创建MDB 255
10.3.3 就绪方法池 256
10.3.4 删除Bean 256
10.3.5 使用消息 257
10.3.6 处理异常 257
10.3.7 MDB的事务处理 257
10.3.8 消息确认 258
10.3.9 使用MDB 258
10.4 向求职代理学习实例添加MDB 258
10.4.1 编写MessageSender Helper类 259
10.4.2 更新代理和注册会话Bean 260
10.4.3 编写ApplicantMatch MDB 261
10.4.4 使用J2EE RI部署MDB 266
10.4.5 利用J2EE RI添加JMS消息目的地 270
10.4.6 测试ApplicantMatch Bean 272
10.5 小结 273
10.6 问与答 273
10.7 练习 273
第11天课程 JavaMail 275
11.1 Email常识 275
11.1.1 简单邮件传输协议(SMTP) 276
11.1.2 邮局协议(POP3) 277
11.1.3 Internet消息访问协议(IMAP) 277
11.1.4 多用途Internet邮件扩展(MIME) 278
11.2 JavaMail API简介 278
11.3 安装开发环境 278
11.4 发送一封简单email 280
11.4.1 创建一个JavaMail会话 280
11.4.2 创建一个JavaMail消息 281
11.4.3 发送一个JavaMail消息 282
11.4.4 发送HTML Email 284
11.5 发送带附件的Email 286
11.5.1 发送内嵌图像的HTML Email 287
11.5.2 发送带文件附件的Email 290
11.6 检索Email消息 292
11.6.1 检索简单消息 292
11.6.2 删除消息 295
11.6.3 检索Email附件 296
11.6.4 认证用户和安全性 300
11.7 在J2EE组件中使用JavaMail 301
11.8 小结 305
11.9 问与答 306
11.10 练习 306
第12天课程 Servlet 307
12.1 Servlet的用途和使用 307
12.2 HTTP简介 308
12.2.1 HTTP请求结构 309
12.2.2 服务器响应结构 311
12.3 HTML简介 312
12.4 Servlet环境 315
12.5 Servlet类层次 315
12.6 简单的Servlet示例 316
12.7 向Servlet传递参数数据 320
12.7.1 如何访问参数 320
12.7.2 带有参数的Servlet示例 321
12.7.3 使用POST请求 322
12.7.4 Servlet生命周期 323
12.7.5 Servlet上下文 323
12.8 Web应用程序 324
12.8.1 Web应用程序的文件和目录结构 324
12.8.2 Web应用程序的部署描述符 324
12.9 处理错误 326
12.9.1 HTTP错误 326
12.9.2 产生HTTP状态码 327
12.9.3 发送重定向 327
12.9.4 Servlet异常处理 327
12.10 保留客户端信息和状态信息 328
12.10.1 使用会话对象 328
12.10.2 隐藏表单字段 330
12.10.3 Cookie 330
12.10.4 创建一个Cookie 330
12.10.5 检索cookie数据 331
12.10.6 URL重写 331
12.11 Servlet过滤 332
12.11.1 编程过滤器 332
12.11.2 审核过滤器示例 333
12.11.3 部署过滤器 334
12.12 事件监听 336
12.13 Servlet线程 338
12.14 安全性和Servlet沙箱 338
12.15 求职代理学习实例 339
12.15.1 AgencyTable Servlet代码 339
12.15.2 部署AgencyTable Servlet 341
12.16 小结 344
12.17 问与答 345
12.18 练习 345
第13天课程 Java Server Pages 346
13.1 JSP是什么 346
13.1.1 角色分离 347
13.1.2 转换和执行 348
13.2 JSP语法和结构 348
13.2.1 表达式语言元素 349
13.2.2 脚本元素(Scripting Element) 349
13.2.3 JSP注释 350
13.3 第一个JSP示例 350
13.4 JSP生命周期 352
13.4.1 转换错误 353
13.4.2 编译错误 355
13.4.3 Java运行时异常 356
13.4.4 HTML格式错误 356
13.4.5 JSP生命周期方法 357
13.5 JSP指令 357
13.5.1 include指令 357
13.5.2 page指令 358
13.6 访问HTTP Servlet变量 360
13.7 表达式语言(EL) 361
13.7.1 EL变量 361
13.7.2 隐含对象 361
13.7.3 EL操作符 362
13.8 用JavaBean简化JSP网页 363
13.8.1 什么是JavaBean 363
13.8.2 定义JavaBean 363
13.8.3 设置Bean属性 364
13.8.4 初始化Bean 365
13.8.5 取得Bean属性 365
13.8.6 在求职代理学习实例中使用Bean 365
13.9 向求职代理学习实例中添加Web接口 368
13.9.1 结构和导航 368
13.9.2 外观 370
13.9.3 错误页面的定义 376
13.9.4 部署JSP学习实例 378
13.10 Web应用程序体系结构 381
13.11 小结 382
13.12 问与答 382
13.13 练习 383
第14天课程 JSP标记库 384
14.1 标记库扮演的角色 384
14.2 JSP标准标记库(JSTL) 385
14.2.1 JSTL核心库 385
14.4.2 其他的JSTL库 388
14.3 开发简单的自定义标记 391
14.3.1 使用简单的标记 391
14.3.2 定义自定义Java标记 392
14.3.3 定义自定义标记“Hello World” 393
14.3.4 标记库描述符(TLD) 394
14.3.5 部署标记库Web应用程序 395
14.3.6 简单标记的用处 396
14.4 带属性的标记 396
14.5 定义EL变量的标记 403
14.6 迭代标记 408
14.7 协作标记 409
14.7.1 使用共享变量 409
14.7.2 分层的标记结构 409
14.8 小结 410
14.9 问与答 410
14.10 练习 411
第三周课程 将J2EE整合到企业应用程序中
第15天课程 安全 414
15.1 安全术语 414
15.1.1 认证 415
15.1.2 授权 415
15.1.3 机密性 415
15.1.4 完整性 415
15.1.5 不可否认性 416
15.1.6 审核 416
15.2 常用安全技术 416
15.2.1 对称加密 416
15.2.2 非对称加密 417
15.2.3 SSL和HTTPS 417
15.2.4 校验和与消息摘要 418
15.2.5 数字证书 419
15.3 J2EE中的安全 419
15.3.1 主体 419
15.3.2 角色 420
15.3.3 角色引用 420
15.4 使用J2EE RI安全 421
15.5 安全和EJB 422
15.5.1 定义EJB安全 422
15.5.2 定义角色 422
15.5.3 应用EJB授权 423
15.6 使用J2EE RI应用EJB安全 423
15.6.1 定义安全身份 425
15.6.2 定义方法权限 426
15.6.3 映射J2EE RI主体到角色 429
15.6.4 部署和测试安全EJB 431
15.6.5 使用角色作为安全身份 432
15.6.6 应用可编程EJB安全 433
15.6.7 部署和测试EJB可编程安全 436
15.7 Web应用程序和组件中的安全 436
15.7.1 Web 认证 436
15.7.2 声明性Web授权 437
15.7.3 可编程Web授权 437
15.8 使用J2EE RI应用Web安全 438
15.8.1 定义Web应用程序角色 438
15.8.2 配置J2EE RI声明性Web安全 439
15.8.3 使用安全的Web认证方案 440
15.8.4 应用Web应用程序安全约束 440
15.8.5 映射Web应用程序特定于平台的角色 445
15.8.6 部署和测试受保护的Web接口 446
15.8.7 应用可编程Web安全 446
15.8.8 部署和测试可编程Web安全 449
15.9 安全和JNDI 449
15.9.1 简单LDAP认证 450
15.9.2 SASL认证 450
15.10 小结 452
15.11 问与答 452
15.12 练习 453
第16天课程 整合XML和J2EE 454
16.1 平台无关数据交换的原因 454
16.2 XML起源 455
16.3 XML结构和语法 456
16.3.1 HTML和XML 456
16.3.2 XML文档结构 457
16.3.3 声明 457
16.3.4 元素 457
16.3.5 结构良好的XML文档 458
16.3.6 属性 459
16.3.7 注释 459
16.3.8 名字空间 460
16.4 创建有效XML文档 461
16.4.1 文档类型定义 461
16.4.2 XML Schema 464
16.5 J2EE对XML的支持 465
16.6 JAXP包 466
16.7 使用SAX解析XML 467
16.8 文档对象模型(DOM)解析器 470
16.8.1 构建DOM树 470
16.8.2 修改DOM树 472
16.8.3 输出DOM树 473
16.8.4 一个简单的DOM例子 473
16.9 支持XML绑定的Java体系结构 477
16.10 小结 478
16.11 问与答 478
16.12 练习 479
第17天课程 XML文档转换 480
17.1 在客户端表示XML文档 480
17.1.1 在浏览器上表示XML文档 481
17.1.2 XML样式表语言(XSL) 481
17.1.3 XSL格式化对象(XSL-FO) 481
17.2 可扩展样式表转换(XSLT) 482
17.3 在Java应用程序中使用XSLT 484
17.4 XSLT样式表 487
17.4.1 模板规则 488
17.4.2 XML元素的文本表示 492
17.4.3 通过XSLT使用Xpath 492
17.4.4 默认的样式表规则 494
17.4.5 处理属性 495
17.5 使用样式表元素 496
17.5.1 处理空格和文本 496
17.5.2 添加注释 498
17.5.3 属性值 498
17.5.4 创建和复制元素 500
17.5.5 属性和属性集 502
17.5.6 其他XSL元素 504
17.6 XSLT编译器 508
17.7 小结 508
17.8 问与答 508
17.9 练习 509
第18天课程 模式 513
18.1 J2EE模式 513
18.1.1 什么是模式 513
18.1.2 为什么使用模式 514
18.1.3 模式的类型 515
18.1.4 J2EE模式 515
18.1.5 模式目录 516
18.2 应用特定于J2EE的模式 516
18.2.1 在环境中应用模式 516
18.2.2 通用模式 517
18.2.3 J2EE表示层模式 518
18.2.4 J2EE业务层模式 518
18.2.5 J2EE集成层模式 519
18.2.6 J2EE中的模式 519
18.3 在环境中应用模式 519
18.3.1 分析学习实例 519
18.3.2 会话Facade和实体EJB 520
18.3.3 数据交换和值对象 520
18.3.4 非实体EJB的数据访问 524
18.3.5 消息和异步激活 529
18.3.6 组装实体 529
18.3.7 组装JSP 530
18.3.8 JSP和关注点分离 532
18.3.9 客户端代理和委托 535
18.3.10 定位服务 535
18.3.11 其他业务 535
18.3.12 重构学习实例 536
18.4 J2EE模式趋势 536
18.5 小结 537
18.6 问与答 537
18.7 练习 537
第19天课程 整合外部资源 539
19.1 考察外部资源和遗留系统 539
19.2 其他连接技术简介 540
19.3 连接器体系结构 540
19.3.1 体系结构概述 541
19.3.2 角色与职责 542
19.3.3 公共客户端接口 544
19.3.4 安装资源适配器 546
19.4 CORBA简介 546
19.5 使用RMI over IIOP 548
19.6 JNI简介 552
19.7 小结 555
19.8 问与答 555
19.9 练习 556
第20天课程 借助J2EE使用RPC样式
的Web服务 557
20.1 Web服务简介 558
20.1.1 什么是Web服务 558
20.1.2 为什么使用Web服务 558
20.1.3 Web服务技术和协议 559
20.1.4 Web服务体系结构 559
20.2 J2EE的Web服务 561
20.2.1 J2EE的Web服务体系结构 561
20.2.2 工具和技术 561
20.2.3 整合Web服务和J2EE 563
20.3 创建带有JAX-RPC的Web服务 563
20.3.1 面向RPC的Web服务 564
20.3.2 JAX-RPC API 565
20.4 创建一个简单服务 565
20.4.1 文件和工具 566
20.4.2 定义接口和实现 566
20.4.3 Web 服务编译器配置文件 567
20.4.4 WSDL文件 569
20.4.5 映射文件 571
20.5 使用J2EE RI deploytool打包和部署Simple Web Service 572
20.5.1 创建Web服务WAR 572
20.5.2 配置WAR和组件 575
20.5.3 Web服务部署描述符 576
20.5.4 部署服务 577
20.6 使用Simple Greeting Service 578
20.7 建立更为健壮的Web服务 580
20.8 通过Web服务协议暴露EJB 582
20.8.1 作为Web服务Facade的EJB 582
20.8.2 定义接口和实现 583
20.8.3 Web服务编译器配置文件 585
20.8.4 WSDL文件 586
20.8.5 映射文件 586
20.9 使用J2EE RI deploytool打包和部署Agency Web服务 587
20.9.1 创建Agency EAR 587
20.9.2 配置EJB组件 589
20.9.3 Web服务部署描述符 591
20.9.4 部署服务 591
20.10 使用Simple Greeting Service 592
20.11 Web服务的其他问题 593
20.11.1 Web服务错误和异常 594
20.11.2 JAX-RPC Web服务的环境和生命周期 594
20.11.3 Java和SOAP/WSDL类型间的映射 595
20.11.4 列集复杂类型 596
20.12 小结 597
20.13 问与答 597
20.14 练习 598
第21天课程 消息样式的Web服务和Web服务注册表 599
21.1 基于消息的SOAP服务 599
21.1.1 消息样式与RPC样式 599
21.1.2 创建客户 600
21.1.3 创建服务 600
21.1.4 使用SAAJ发送和接收SOAP消息 601
21.2 实现基于SAAJ的Web服务 601
21.2.1 使用SAAJ处理SOAP消息 601
21.2.2 使用SAAJ接收和访问SOAP消息 602
21.2.3 服务器端Java和XML间的列集 606
21.3 使用J2EE RI deploytool打包和部署简单Web服务 609
21.3.1 创建Web服务WAR 610
21.3.2 配置WAR和组件 611
21.3.3 部署服务 613
21.4 使用SAAJ Web服务 614
21.4.1 发送一个基本的SOAP消息 614
21.4.2 Java和XML之间的客户端列集 616
21.4.3 运行简单客户端 618
21.5 更为复杂的消息交换 618
21.6 Web服务注册表 619
21.6.1 什么是Web服务注册表 619
21.6.2 为什么我需要一个注册表 619
21.6.3 它们如何工作 620
21.6.4 注册表分类 620
21.6.5 ebXML Registry和Repository 621
21.6.6 UDDI概述 622
21.7 访问UDDI注册表中的信息 622
21.8 使用针对注册表访问的JAXR 623
21.9 使用JAXR联系注册表 624
21.10 使用JAXR在注册表中存储信息 625
21.11 使用JAXR从注册表检索信息 626
21.12 小结 628
21.13 问与答 628
21.14 练习 628
附录A XML概述 630
A.1 什么是XML 630
A.1.1 元素 630
A.1.2 声明 631
A.1.3 注释 632
A.1.4 特殊字符 632
A.1.5 名字空间 632
A.2 强化XML文档结构 633
A.2.1 文档类型定义 633
A.2.2 XML Schema 636
A.3 在哪里获取更多相关信息 637
附录B Java Community Process 639
B.1 JCP简介 639
B.2 JCP相关组织 639
B.2.1 JCP成员 639
B.2.2 专家组 640
B.2.3 公共成员 640
B.2.4 过程管理办公室 640
B.2.5 执行委员会 640
B.3 了解JSR进程 640
B.4 进入下一步 641
术语表 642
第1天课程 挑战N层开发 2
1.1 单层程序的开发 2
1.2 向二层开发进军 3
1.3 开发三层体系结构 4
1.4 用模块简化复杂性 5
1.5 组件技术 5
1.6 现代的N层体系结构 6
1.7 企业计算模型 6
1.7.1 生命周期 7
1.7.2 持久性 7
1.7.3 命名 7
1.7.4 事务 7
1.7.5 安全性 8
1.8 Java 2企业版(J2EE) 8
1.8.1 组件和容器 8
1.8.2 J2EE标准服务 9
1.8.3 J2EE 1.4的新特性 10
1.8.4 J2EE蓝图 10
1.8.5 J2EE兼容性和Java验证 11
1.9 J2EE的发展前景 11
1.10 小结 11
1.11 问与答 11
1.12 练习 12
第2天课程 J2EE平台和角色 13
2.1 再谈J2EE平台 13
2.2 了解J2EE组件 14
2.3 企业JavaBean 14
2.3.1 会话Bean 15
2.3.2 实体Bean 16
2.3.3 消息驱动Bean 16
2.4 Web应用 16
2.4.1 Servlet 16
2.4.2 JSP 17
2.4.3 Web应用体系结构 17
2.4.4 Web服务 18
2.5 应用客户端 18
2.6 J2EE技术 18
2.6.1 超文本传输协议(HTTP) 19
2.6.2 基于安全套接层的HTTP(HTTPS) 19
2.6.3 Java数据库连接(JDBC) 19
2.6.4 Java事务API(JTA) 19
2.6.5 Java认证和授权服务(JAAS) 19
2.6.6 用于解析XML的Java API(JAXP) 19
2.6.7 用于基于XML的 RPC 的Java API (JAX-RPC) 19
2.6.8 用于XML注册表(JAXR)的Java API 20
2.6.9 带有附件的用于Java的SOAP API(SAAJ) 20
2.6.10 Java命名和目录接口(JNDI) 20
2.6.11 JavaBean激活框架(JAF) 20
2.6.12 JavaMail 20
2.6.13 Java消息服务(JMS) 20
2.6.14 Java接口定义语言(Java IDL) 20
2.6.15 基于IIOP协议的远程方法调用(RMI-IIOP) 20
2.6.16 连接器体系结构 21
2.7 J2EE平台角色 21
2.7.1 J2EE产品供应商 21
2.7.2 应用程序组件供应商 22
2.7.3 应用程序组装者 22
2.7.4 应用程序部署者 22
2.7.5 系统管理员 22
2.7.6 工具供应商 22
2.8 打包和部署J2EE应用程序 23
2.8.1 J2EE应用程序 23
2.8.2 EJB组件 24
2.8.3 Web组件 25
2.8.4 应用程序组件 25
2.8.5 连接器组件 25
2.9 小结 25
2.10 问与答 26
2.11 练习——Sun Microsystems的J2EE SDK 26
2.11.1 下载Sun Microsystems的J2EE SDK 1.4 26
2.11.2 安装Sun Microsystems的J2EE SDK 1.4 27
2.11.3 配置J2EE SDK 1.4开发环境 29
2.11.4 J2EE SDK包含的组件 29
2.11.5 启动J2EE服务器 30
2.11.6 J2EE和PointBase故障排除 33
2.11.7 本书中可选用的软件 34
2.12 练习——学习实例 34
2.12.1 求职代理 34
2.12.2 使用求职代理实例 35
2.12.3 熟能生巧 36
2.12.4 网站上的学习实例目录 37
2.12.5 使用asant编译文件 37
2.12.6 学习实例 38
2.12.7 对学习实例使用deploytool 38
2.12.8 运行独立的Java示例 38
2.12.9 安装学习实例数据库 38
第3天课程 命名和目录服务 42
3.1 命名和目录服务 42
3.1.1 为什么使用命名服务 43
3.1.2 JNDI是什么 43
3.1.3 常见命名服务 43
3.1.4 命名约定 44
3.2 借助J2EE RI来使用JNDI 45
3.2.1 绑定J2EE组件 45
3.2.2 查找J2EE组件 46
3.2.3 其他分布式J2EE组件 49
3.2.4 J2EE Java组件环境 49
3.3 在J2EE外部使用JNDI 50
3.3.1 定义JNDI服务 50
3.3.2 JNDI属性文件 51
3.3.3 应用程序属性 51
3.3.4 硬编码的属性 52
3.3.5 初始环境命名异常 52
3.4 使用JNDI功能 52
3.4.1 绑定和重命名对象 53
3.4.2 更改环境 53
3.4.3 环境参数列表 54
3.4.4 创建和销毁环境参数 56
3.4.5 使用多重名字服务 56
3.4.6 JNDI事件 56
3.5 目录服务 57
3.5.1 使用LDAP 57
3.5.2 使用目录服务 58
3.5.3 搜索目录服务 58
3.6 JNDI安全性 59
3.7 小结 60
3.8 问与答 61
3.9 练习 61
第4天课程 Enterprise Java Bean简介 62
4.1 什么是EJB 62
4.1.1 Bean、客户端、容器和服务器 62
4.1.2 EJB的类型 63
4.1.3 EJB的常见用途 63
4.2 为什么使用EJB 63
4.3 EJB中包括什么 64
4.3.1 业务接口 65
4.3.2 home接口 66
4.3.3 Bean实现 67
4.3.4 部署描述符 70
4.3.5 验证EJB 70
4.4 如何创建EJB 71
4.4.1 对EJB的限制 71
4.4.2 EJB部署描述符 71
4.4.3 EJB-JAR文件 72
4.4.4 EAR文件 73
4.5 如何部署EJB 73
4.6 如何使用EJB 74
4.6.1 发现EJB 75
4.6.2 检索与使用 76
4.6.3 除去EJB 76
4.6.4 运行客户端 77
4.6.5 客户端应用程序 77
4.7 使用J2EE引用实现(RI) 78
4.7.1 配置J2EE RI 78
4.7.2 打开学习实例的EAR文件 78
4.7.3 查看学习实例应用程序 79
4.7.4 验证学习实例应用程序 83
4.7.5 部署学习实例应用程序 85
4.7.6 运行应用程序客户端 85
4.7.7 管理J2EE RI应用程序 86
4.7.8 学习实例asant编译文件 88
4.7.9 学习实例应用程序的故障排除 89
4.8 小结 90
4.9 问与答 90
4.10 练习 91
第5天课程 会话EJB 92
5.1 概述 92
5.2 会话Bean的javax.ejb包 93
5.3 指定一个无状态会话Bean 93
5.4 无状态会话Bean的实现 96
5.4.1 无状态会话bean的生命周期 96
5.4.2 javax.ejb.SessionBean的实现 98
5.4.3 home接口方法的实现 98
5.4.4 远程接口方法的实现 99
5.4.5 异常 100
5.5 配置一个无状态会话Bean 101
5.6 使用J2EE RI deploytool配置会话bean 102
5.6.1 定义新的EJB会话bean 103
5.6.2 定义会话bean 104
5.6.3 定义JNDI名字 106
5.6.4 事务管理 107
5.6.5 环境条目 108
5.6.6 资源引用 109
5.6.7 EJB部署描述符 111
5.7 客户端应用程序 111
5.7.1 设计因素 111
5.7.2 异常处理 112
5.8 用deploytool来配置J2EE RI客户端应用程序 112
5.9 运行Agency学习实例 115
5.10 有状态会话Bean 116
5.10.1 指定有状态会话bean 116
5.10.2 有状态会话Bean的实现 118
5.10.3 配置有状态会话Bean 120
5.11 定时器服务 121
5.12 忠告 122
5.13 小结 122
5.14 问与答 123
5.15 练习 123
第6天课程 实体EJB 126
6.1 概述 126
6.2 实体Bean的javax.ejb包 128
6.3 远程接口与本地接口 129
6.4 BMP实体Bean的生命周期 130
6.5 指定BMP实体Bean 134
6.5.1 本地Home接口 134
6.5.2 本地接口 137
6.6 BMP实体Bean的实现 138
6.6.1 实现javax.ejb.EntityBean 138
6.6.2 实现本地Home接口方法 142
6.6.3 实现本地接口方法 148
6.6.4 生成ID号 149
6.6.5 再谈粒度 150
6.6.6 使用查找方法的注意事项 150
6.6.7 EJB容器性能调试 151
6.6.8 自我封装字段 152
6.7 配置和部署BMP实体Bean 153
6.8 客户端视图 157
6.9 忠告 161
6.10 小结 162
6.11 问与答 162
6.12 练习 163
第7天课程 CMP和EJB查询语言 164
7.1 容器管理的持久性概述 164
7.1.1 N层体系结构和CMP字段 165
7.2 CMP实体Bean的生命周期 167
7.3 容器管理的关联 169
7.3.1 关联类型 169
7.3.2 多重性 169
7.3.3 导航 170
7.3.4 CMR字段 170
7.4 EJB查询语言 171
7.5 选择方法 176
7.6 CMP实体Bean的实现 176
7.6.1 本地接口 176
7.6.2 实现javax.ejb.EntityBean 177
7.7 使用J2EE RI部署CMP实体Bean 180
7.7.1 捕获数据库模式 180
7.7.2 使用deploytool添加一个CMP实体bean 180
7.7.3 定义CMP实体bean的查找方法 184
7.7.4 定义实体bean CMR字段 185
7.7.5 使用J2EE RI映射实体bean CMP字段 189
7.7.6 使用J2EE RI映射实体bean CMR字段 191
7.7.7 使用J2EE RI部署实体bean学习实例 195
7.8 CMP实体bean设计注意事项 196
7.9 忠告 197
7.10 小结 198
7.11 问与答 198
7.12 练习 198
第二周课程 开发J2EE应用程序
第8天课程 事务处理和持久性 202
8.1 事务处理概述 202
8.2 容器管理的事务划分 204
8.3 Bean管理的事务划分 208
8.3.1 动机和限制 208
8.3.2 使用Java 事务API 209
8.3.3 部署BMTD Bean 211
8.3.4 客户端划分事务 212
8.3.5 再谈异常 213
8.4 扩展的有状态会话bean的生命周期 213
8.5 后台事务:事务实质 215
8.5.1 事务管理器、资源管理器和两阶段提交 215
8.5.2 JTA API 216
8.5.3 事务出错后应如何解决 217
8.5.4 JTA与JTS 219
8.6 持久性技术概述 220
8.7 JDBC 221
8.8 SQLj 222
8.8.1 SQLj Part 0 222
8.8.2 SQLj Part 1 224
8.8.3 SQLj Part 2 225
8.9 JDO 225
8.10 小结 227
8.11 问与答 228
8.12 练习 228
第9天课程 Java消息服务 229
9.1 消息 229
9.2 Java消息服务API 230
9.3 JMS API体系结构 231
9.4 借助于J2EE RI使用JMS 233
9.5 点对点消息示例 235
9.5.1 连接到队列 235
9.5.2 JMS消息 236
9.5.3 创建消息 237
9.5.4 发送消息 237
9.5.5 关闭连接 237
9.5.6 发送JMS文本消息示例 237
9.5.7 使用消息 239
9.6 简单同步接收器示例 239
9.6.1 接收JMS文本消息示例 240
9.6.2 异步消息 241
9.7 发布/订阅消息域 244
9.8 发布/订阅消息示例 244
9.8.1 电子公告牌发布程序 244
9.8.2 电子公告牌订阅程序 246
9.8.3 创建持久订阅 247
9.9 JMS的其他特点 249
9.9.1 消息选择器 249
9.9.2 会话确认模式 249
9.9.3 消息持久性 249
9.9.4 事务处理 250
9.9.5 多线程 251
9.10 小结 251
9.11 问与答 251
9.12 练习 252
第10天课程 消息驱动Bean 253
10.1 什么是MDB 253
10.1.1 消息产生器的观点 254
10.1.2 与其他EJB的异同
之处 254
10.2 MDB中的编程接口 254
10.3 MDB的生命周期 254
10.3.1 MDB环境 255
10.3.2 创建MDB 255
10.3.3 就绪方法池 256
10.3.4 删除Bean 256
10.3.5 使用消息 257
10.3.6 处理异常 257
10.3.7 MDB的事务处理 257
10.3.8 消息确认 258
10.3.9 使用MDB 258
10.4 向求职代理学习实例添加MDB 258
10.4.1 编写MessageSender Helper类 259
10.4.2 更新代理和注册会话Bean 260
10.4.3 编写ApplicantMatch MDB 261
10.4.4 使用J2EE RI部署MDB 266
10.4.5 利用J2EE RI添加JMS消息目的地 270
10.4.6 测试ApplicantMatch Bean 272
10.5 小结 273
10.6 问与答 273
10.7 练习 273
第11天课程 JavaMail 275
11.1 Email常识 275
11.1.1 简单邮件传输协议(SMTP) 276
11.1.2 邮局协议(POP3) 277
11.1.3 Internet消息访问协议(IMAP) 277
11.1.4 多用途Internet邮件扩展(MIME) 278
11.2 JavaMail API简介 278
11.3 安装开发环境 278
11.4 发送一封简单email 280
11.4.1 创建一个JavaMail会话 280
11.4.2 创建一个JavaMail消息 281
11.4.3 发送一个JavaMail消息 282
11.4.4 发送HTML Email 284
11.5 发送带附件的Email 286
11.5.1 发送内嵌图像的HTML Email 287
11.5.2 发送带文件附件的Email 290
11.6 检索Email消息 292
11.6.1 检索简单消息 292
11.6.2 删除消息 295
11.6.3 检索Email附件 296
11.6.4 认证用户和安全性 300
11.7 在J2EE组件中使用JavaMail 301
11.8 小结 305
11.9 问与答 306
11.10 练习 306
第12天课程 Servlet 307
12.1 Servlet的用途和使用 307
12.2 HTTP简介 308
12.2.1 HTTP请求结构 309
12.2.2 服务器响应结构 311
12.3 HTML简介 312
12.4 Servlet环境 315
12.5 Servlet类层次 315
12.6 简单的Servlet示例 316
12.7 向Servlet传递参数数据 320
12.7.1 如何访问参数 320
12.7.2 带有参数的Servlet示例 321
12.7.3 使用POST请求 322
12.7.4 Servlet生命周期 323
12.7.5 Servlet上下文 323
12.8 Web应用程序 324
12.8.1 Web应用程序的文件和目录结构 324
12.8.2 Web应用程序的部署描述符 324
12.9 处理错误 326
12.9.1 HTTP错误 326
12.9.2 产生HTTP状态码 327
12.9.3 发送重定向 327
12.9.4 Servlet异常处理 327
12.10 保留客户端信息和状态信息 328
12.10.1 使用会话对象 328
12.10.2 隐藏表单字段 330
12.10.3 Cookie 330
12.10.4 创建一个Cookie 330
12.10.5 检索cookie数据 331
12.10.6 URL重写 331
12.11 Servlet过滤 332
12.11.1 编程过滤器 332
12.11.2 审核过滤器示例 333
12.11.3 部署过滤器 334
12.12 事件监听 336
12.13 Servlet线程 338
12.14 安全性和Servlet沙箱 338
12.15 求职代理学习实例 339
12.15.1 AgencyTable Servlet代码 339
12.15.2 部署AgencyTable Servlet 341
12.16 小结 344
12.17 问与答 345
12.18 练习 345
第13天课程 Java Server Pages 346
13.1 JSP是什么 346
13.1.1 角色分离 347
13.1.2 转换和执行 348
13.2 JSP语法和结构 348
13.2.1 表达式语言元素 349
13.2.2 脚本元素(Scripting Element) 349
13.2.3 JSP注释 350
13.3 第一个JSP示例 350
13.4 JSP生命周期 352
13.4.1 转换错误 353
13.4.2 编译错误 355
13.4.3 Java运行时异常 356
13.4.4 HTML格式错误 356
13.4.5 JSP生命周期方法 357
13.5 JSP指令 357
13.5.1 include指令 357
13.5.2 page指令 358
13.6 访问HTTP Servlet变量 360
13.7 表达式语言(EL) 361
13.7.1 EL变量 361
13.7.2 隐含对象 361
13.7.3 EL操作符 362
13.8 用JavaBean简化JSP网页 363
13.8.1 什么是JavaBean 363
13.8.2 定义JavaBean 363
13.8.3 设置Bean属性 364
13.8.4 初始化Bean 365
13.8.5 取得Bean属性 365
13.8.6 在求职代理学习实例中使用Bean 365
13.9 向求职代理学习实例中添加Web接口 368
13.9.1 结构和导航 368
13.9.2 外观 370
13.9.3 错误页面的定义 376
13.9.4 部署JSP学习实例 378
13.10 Web应用程序体系结构 381
13.11 小结 382
13.12 问与答 382
13.13 练习 383
第14天课程 JSP标记库 384
14.1 标记库扮演的角色 384
14.2 JSP标准标记库(JSTL) 385
14.2.1 JSTL核心库 385
14.4.2 其他的JSTL库 388
14.3 开发简单的自定义标记 391
14.3.1 使用简单的标记 391
14.3.2 定义自定义Java标记 392
14.3.3 定义自定义标记“Hello World” 393
14.3.4 标记库描述符(TLD) 394
14.3.5 部署标记库Web应用程序 395
14.3.6 简单标记的用处 396
14.4 带属性的标记 396
14.5 定义EL变量的标记 403
14.6 迭代标记 408
14.7 协作标记 409
14.7.1 使用共享变量 409
14.7.2 分层的标记结构 409
14.8 小结 410
14.9 问与答 410
14.10 练习 411
第三周课程 将J2EE整合到企业应用程序中
第15天课程 安全 414
15.1 安全术语 414
15.1.1 认证 415
15.1.2 授权 415
15.1.3 机密性 415
15.1.4 完整性 415
15.1.5 不可否认性 416
15.1.6 审核 416
15.2 常用安全技术 416
15.2.1 对称加密 416
15.2.2 非对称加密 417
15.2.3 SSL和HTTPS 417
15.2.4 校验和与消息摘要 418
15.2.5 数字证书 419
15.3 J2EE中的安全 419
15.3.1 主体 419
15.3.2 角色 420
15.3.3 角色引用 420
15.4 使用J2EE RI安全 421
15.5 安全和EJB 422
15.5.1 定义EJB安全 422
15.5.2 定义角色 422
15.5.3 应用EJB授权 423
15.6 使用J2EE RI应用EJB安全 423
15.6.1 定义安全身份 425
15.6.2 定义方法权限 426
15.6.3 映射J2EE RI主体到角色 429
15.6.4 部署和测试安全EJB 431
15.6.5 使用角色作为安全身份 432
15.6.6 应用可编程EJB安全 433
15.6.7 部署和测试EJB可编程安全 436
15.7 Web应用程序和组件中的安全 436
15.7.1 Web 认证 436
15.7.2 声明性Web授权 437
15.7.3 可编程Web授权 437
15.8 使用J2EE RI应用Web安全 438
15.8.1 定义Web应用程序角色 438
15.8.2 配置J2EE RI声明性Web安全 439
15.8.3 使用安全的Web认证方案 440
15.8.4 应用Web应用程序安全约束 440
15.8.5 映射Web应用程序特定于平台的角色 445
15.8.6 部署和测试受保护的Web接口 446
15.8.7 应用可编程Web安全 446
15.8.8 部署和测试可编程Web安全 449
15.9 安全和JNDI 449
15.9.1 简单LDAP认证 450
15.9.2 SASL认证 450
15.10 小结 452
15.11 问与答 452
15.12 练习 453
第16天课程 整合XML和J2EE 454
16.1 平台无关数据交换的原因 454
16.2 XML起源 455
16.3 XML结构和语法 456
16.3.1 HTML和XML 456
16.3.2 XML文档结构 457
16.3.3 声明 457
16.3.4 元素 457
16.3.5 结构良好的XML文档 458
16.3.6 属性 459
16.3.7 注释 459
16.3.8 名字空间 460
16.4 创建有效XML文档 461
16.4.1 文档类型定义 461
16.4.2 XML Schema 464
16.5 J2EE对XML的支持 465
16.6 JAXP包 466
16.7 使用SAX解析XML 467
16.8 文档对象模型(DOM)解析器 470
16.8.1 构建DOM树 470
16.8.2 修改DOM树 472
16.8.3 输出DOM树 473
16.8.4 一个简单的DOM例子 473
16.9 支持XML绑定的Java体系结构 477
16.10 小结 478
16.11 问与答 478
16.12 练习 479
第17天课程 XML文档转换 480
17.1 在客户端表示XML文档 480
17.1.1 在浏览器上表示XML文档 481
17.1.2 XML样式表语言(XSL) 481
17.1.3 XSL格式化对象(XSL-FO) 481
17.2 可扩展样式表转换(XSLT) 482
17.3 在Java应用程序中使用XSLT 484
17.4 XSLT样式表 487
17.4.1 模板规则 488
17.4.2 XML元素的文本表示 492
17.4.3 通过XSLT使用Xpath 492
17.4.4 默认的样式表规则 494
17.4.5 处理属性 495
17.5 使用样式表元素 496
17.5.1 处理空格和文本 496
17.5.2 添加注释 498
17.5.3 属性值 498
17.5.4 创建和复制元素 500
17.5.5 属性和属性集 502
17.5.6 其他XSL元素 504
17.6 XSLT编译器 508
17.7 小结 508
17.8 问与答 508
17.9 练习 509
第18天课程 模式 513
18.1 J2EE模式 513
18.1.1 什么是模式 513
18.1.2 为什么使用模式 514
18.1.3 模式的类型 515
18.1.4 J2EE模式 515
18.1.5 模式目录 516
18.2 应用特定于J2EE的模式 516
18.2.1 在环境中应用模式 516
18.2.2 通用模式 517
18.2.3 J2EE表示层模式 518
18.2.4 J2EE业务层模式 518
18.2.5 J2EE集成层模式 519
18.2.6 J2EE中的模式 519
18.3 在环境中应用模式 519
18.3.1 分析学习实例 519
18.3.2 会话Facade和实体EJB 520
18.3.3 数据交换和值对象 520
18.3.4 非实体EJB的数据访问 524
18.3.5 消息和异步激活 529
18.3.6 组装实体 529
18.3.7 组装JSP 530
18.3.8 JSP和关注点分离 532
18.3.9 客户端代理和委托 535
18.3.10 定位服务 535
18.3.11 其他业务 535
18.3.12 重构学习实例 536
18.4 J2EE模式趋势 536
18.5 小结 537
18.6 问与答 537
18.7 练习 537
第19天课程 整合外部资源 539
19.1 考察外部资源和遗留系统 539
19.2 其他连接技术简介 540
19.3 连接器体系结构 540
19.3.1 体系结构概述 541
19.3.2 角色与职责 542
19.3.3 公共客户端接口 544
19.3.4 安装资源适配器 546
19.4 CORBA简介 546
19.5 使用RMI over IIOP 548
19.6 JNI简介 552
19.7 小结 555
19.8 问与答 555
19.9 练习 556
第20天课程 借助J2EE使用RPC样式
的Web服务 557
20.1 Web服务简介 558
20.1.1 什么是Web服务 558
20.1.2 为什么使用Web服务 558
20.1.3 Web服务技术和协议 559
20.1.4 Web服务体系结构 559
20.2 J2EE的Web服务 561
20.2.1 J2EE的Web服务体系结构 561
20.2.2 工具和技术 561
20.2.3 整合Web服务和J2EE 563
20.3 创建带有JAX-RPC的Web服务 563
20.3.1 面向RPC的Web服务 564
20.3.2 JAX-RPC API 565
20.4 创建一个简单服务 565
20.4.1 文件和工具 566
20.4.2 定义接口和实现 566
20.4.3 Web 服务编译器配置文件 567
20.4.4 WSDL文件 569
20.4.5 映射文件 571
20.5 使用J2EE RI deploytool打包和部署Simple Web Service 572
20.5.1 创建Web服务WAR 572
20.5.2 配置WAR和组件 575
20.5.3 Web服务部署描述符 576
20.5.4 部署服务 577
20.6 使用Simple Greeting Service 578
20.7 建立更为健壮的Web服务 580
20.8 通过Web服务协议暴露EJB 582
20.8.1 作为Web服务Facade的EJB 582
20.8.2 定义接口和实现 583
20.8.3 Web服务编译器配置文件 585
20.8.4 WSDL文件 586
20.8.5 映射文件 586
20.9 使用J2EE RI deploytool打包和部署Agency Web服务 587
20.9.1 创建Agency EAR 587
20.9.2 配置EJB组件 589
20.9.3 Web服务部署描述符 591
20.9.4 部署服务 591
20.10 使用Simple Greeting Service 592
20.11 Web服务的其他问题 593
20.11.1 Web服务错误和异常 594
20.11.2 JAX-RPC Web服务的环境和生命周期 594
20.11.3 Java和SOAP/WSDL类型间的映射 595
20.11.4 列集复杂类型 596
20.12 小结 597
20.13 问与答 597
20.14 练习 598
第21天课程 消息样式的Web服务和Web服务注册表 599
21.1 基于消息的SOAP服务 599
21.1.1 消息样式与RPC样式 599
21.1.2 创建客户 600
21.1.3 创建服务 600
21.1.4 使用SAAJ发送和接收SOAP消息 601
21.2 实现基于SAAJ的Web服务 601
21.2.1 使用SAAJ处理SOAP消息 601
21.2.2 使用SAAJ接收和访问SOAP消息 602
21.2.3 服务器端Java和XML间的列集 606
21.3 使用J2EE RI deploytool打包和部署简单Web服务 609
21.3.1 创建Web服务WAR 610
21.3.2 配置WAR和组件 611
21.3.3 部署服务 613
21.4 使用SAAJ Web服务 614
21.4.1 发送一个基本的SOAP消息 614
21.4.2 Java和XML之间的客户端列集 616
21.4.3 运行简单客户端 618
21.5 更为复杂的消息交换 618
21.6 Web服务注册表 619
21.6.1 什么是Web服务注册表 619
21.6.2 为什么我需要一个注册表 619
21.6.3 它们如何工作 620
21.6.4 注册表分类 620
21.6.5 ebXML Registry和Repository 621
21.6.6 UDDI概述 622
21.7 访问UDDI注册表中的信息 622
21.8 使用针对注册表访问的JAXR 623
21.9 使用JAXR联系注册表 624
21.10 使用JAXR在注册表中存储信息 625
21.11 使用JAXR从注册表检索信息 626
21.12 小结 628
21.13 问与答 628
21.14 练习 628
附录A XML概述 630
A.1 什么是XML 630
A.1.1 元素 630
A.1.2 声明 631
A.1.3 注释 632
A.1.4 特殊字符 632
A.1.5 名字空间 632
A.2 强化XML文档结构 633
A.2.1 文档类型定义 633
A.2.2 XML Schema 636
A.3 在哪里获取更多相关信息 637
附录B Java Community Process 639
B.1 JCP简介 639
B.2 JCP相关组织 639
B.2.1 JCP成员 639
B.2.2 专家组 640
B.2.3 公共成员 640
B.2.4 过程管理办公室 640
B.2.5 执行委员会 640
B.3 了解JSR进程 640
B.4 进入下一步 641
术语表 642
猜您喜欢