前言页 1
译者序 1
作者简介 1
前言 1
第1章 Web应用开发 1
1.1 Web结构 1
1.1.1 Web浏览器 2
1.1.2 Web服务器 3
1.2 n-层应用 4
1.3 Web应用的体系结构 5
1.3.1 收集数据 6
1.3.2 向Web服务器发送请求 6
1.3.3 执行服务器脚本 7
1.3.4 将结果返回浏览器 8
1.4 开发服务器应用 8
1.4.1 服务器端的技术 8
1.4.2 Java的特点 10
1.5 小结 11
第2章 servlet简介 12
2.1 servlet容器 12
2.1.1 servletAPI 14
2.1.2 servlet的构造 18
2.2 简化HTML的生成过程 21
2.3 关于性能的几点注释 23
2.4 处理表单数据和发送邮件 23
2.4.1 建立HTML表单 24
2.4.2 编写servlet 25
2.5 小结 29
第3章 错误处理和事件记录 30
3.1 导演 30
3.1.1 运行时刻和编译时刻错误 30
3.1.2 在Java中处理异常 31
3.1.3 在servlet中处理异常 33
3.1.4 发送HTTP错误 38
3.1.5 记录事件 39
3.1.6 使用servlet异常 40
3.2 小结 41
第4章 会话与会话跟踪 42
4.1 会话 42
4.2.2 隐藏表单字段 43
4.2.1 重写URL 43
4.2 使用传统方法进行会话跟踪 43
4.2.3 cookies 44
4.3 使用JavaServletAPI进行会话跟踪 44
4.3.1 获得一个会话对象 45
4.3.2 读写会话数据 45
4.3.3 使会话对象失效 46
4.3.4 一个使用会话的简单购物车 46
4.3.5 方法的选择 50
4.4 小结 50
第5章 使用servlet环境 51
5.1 “聊天”应用概述 51
5.2 servlet环境的配置 55
5.2.1 Servlet环境的唯一URI路径前缀 55
5.2.3 优点 56
5.2.2 servlet环境的servlet名称和URI路径映射 56
5.3 servlet环境状态 58
5.3.1 初始化Servlet环境状态 58
5.3.2 访问环境状态 59
5.4 改变环境状态 66
5.5 运行聊天应用 68
5.5.1 配置servlet引擎 68
5.5.2 添加聊天室 70
5.5.3 聊天 70
5.6 小结 71
第6章 生成动态内容 73
6.1 MIME类型 73
6.1.1 Image/jpeg 73
6.2 返回二进制数据 74
6.1.2 Image/gif 74
6.1.3 Image/png 74
6.3 创建GIF图像 75
6.3.1 创建一个不显示的图像 75
6.3.2 对图像进行编码 76
6.4 统计图servlet 77
6.4.1 实用类 77
6.4.2 servlet本身 80
6.4.3 图形环境 81
6.4.4 创建颜色 82
6.4.5 绘制饼形图 84
6.4.6 绘制条形图 85
6.4.7 创建一个嵌入图像的HTML页面 87
6.4.8 反向链接到页面 90
6.5 小结 91
第7章 JavaServer Pages介绍 92
7.1 体系结构概述 92
7.2 一个简单的JavaServer Page 93
7.2.1 JavaServer Page的编程元素 94
7.2.2 JSP伪指令 95
7.2.3 JSP声明 96
7.2.4 JSP scriptlet 96
7.2.5 JSP表达式 98
7.2.6 编写JSP页面的代码 98
7.3 使用具有JSP的JavaBean组件 98
7.4 文件浏览器 103
7.5 浏览和查询数据库 105
7.5.1 询问正确的问题 106
7.5.2 查询数据库 107
7.5.3 浏览数据库 112
7.5.4 混合servlet和JSP 116
7.6 用applet和bean增强用户界面 117
7.7 小结 117
第8章 连接数据库 118
8.1 向servlet增加数据 118
8.1.1 Java数据库连接性 118
8.1.2 影片数据库 123
8.2 用预备式语句优化性能 131
8.3 合并Connection对象 135
8.4 小结 140
第9章 连接池 142
9.1 池化资源 142
9.2 传统的连接池 143
9.2.1 ConnectionPool类 144
9.2.2 PoolManager类 150
9.2.3 例子客户 157
9.3 JDBC2.0Standard Extension连接池 158
9.3.1 主要概念 159
9.3.2 带有连接池的DataSource 160
9.4 将我们的连接池修改得像JDBC2.0SE 162
9.4.1 ConnectionWrapper类 162
9.4.2 ConnectionPool的修改 163
9.4.3 例子客户 164
9.5 小结 165
第10章 servlet链接 166
10.1 使用别名链接servlet 166
10.1.1 配置servlet引擎 167
10.1.2 使用别名的servlet链接 170
10.2 使用MIME类型过滤servlet结果 174
10.2.1 配置Web服务器 174
10.2.2 使用MIME-Typr过滤内容 174
10.3 小结 177
第11章 servlet通信 178
11.1 从applet中调用servlet 178
11.2 RequestDispatcher接口 184
11.3 小结 186
第12章 利用servlet进行分布式计算 188
12.1 远端方法调用 188
12.1.1 远端对象 189
12.1.3 RMI注册表 191
12.1.4 Java客户 191
12.1.2 stub和skeleton 191
12.1.5 实现RMI的步骤总结 192
12.2 Java2的安全机制 192
12.3 建立一个远端对象 193
12.3.1 创建远端接口 194
12.3.2 实现远端接口 194
12.3.3 编译并运行代码 195
12.3.4 创建RMI客户应用 195
12.4 建立RMI客户的servlet 196
12.4.1 安装安全管理器 196
12.4.2 获得远端接口的引用 196
12.4.3 调用远端方法 197
12.5 小结 198
13.1 安装JavaMail 199
第13章 JavaMail和servlet 199
13.2 提供者注册表 200
13.3 使用JavaMail 200
13.3.1 JavaMail会话 201
13.3.2 构造一个报文 202
13.3.3 传输服务 203
13.4 SendMail servlet 204
13.5 存储转发服务 206
13.6 WebMail servle 208
13.7 小结 213
第14章 XML介绍 214
14.1 什么是XML 214
14.1.1 可扩展性 215
14.2 XML像什么 216
14.1.3 可确认性 216
14.1.2 可结构化 216
14.3 用Java进行分析 217
14.4 有效的XML文档 220
14.5 DTD像什么 221
14.5.1 名称 222
14.5.2 数据类型 222
14.5.3 注释 223
14.5.4 包含/忽略 223
14.5.5 数据处理指令 224
14.5.6 码元声明 224
14.5.7 属性字声明 226
14.5.8 实体声明 226
14.5.9 符号声明 228
14.6 对有效XML进行分析 229
14.7 关于分析的更多内容 231
14.8 SAX 232
14.9 DOM 236
14.10 Pizza servlet 238
14.11 小结 249
14.12 XML的资源 250
第15章 站点Weeds of EI Limon2 253
15.1 站点介绍 253
15.2 工作原理 256
15.3 有友好的网络 258
15.4 工具 259
15.5 XML、SQL和Java对象 259
15.5.1 XML文件 259
15.5.2 XML到SQL的映射 262
15.6 Weeds类 268
15.6.1 将关系数据库映射到对象 270
15.6.2 创建并装入数据库 273
15.7 URL重写和文件的布局 275
15.7.1 Web浏览器中的网页 276
15.7.2 服务器上实际有些什么 276
15.8 JSP和JavaBean 278
15.8.1 Index.jsp和Common.jsp 280
15.8.2 Weed.jsp 281
15.8.3 Error.jsp 283
15.9 bean 284
15.10 从数据库中提取图像 287
15.10.1 ViweWeed类 287
15.10.2 Insertlmages类 288
15.11 小结 289
第16章 错误跟踪器事例研究 290
16.1 工程介绍 290
16.2 开发过程的选择 291
16.3 合理统一过程 291
16.3.1 开始阶段 292
16.3.2 详细描述阶段 292
16.3.3 构建阶段 293
16.3.4 转移阶段 294
16.3.5 RUP内的活动 294
16.4 错误跟踪器的开始阶段 295
16.5 下一步工作 301
17.1.2 低精度的用户界面原型设计 303
17.1.1 原型设计 303
17.1 详细描述 303
第17章 错误跟踪器事例研究:详细描述、构建和转移阶段 303
17.1.3 技术选择--信息输出 304
17.1.4 技术选择--对象的分布 306
17.1.5 技术选择--报文处理 308
17.1.6 定义应用的体系结构 309
17.1.7 充实对象模型 311
17.2 质量工程 318
17.3 构建 321
17.3.1 用IDL定义组件 325
17.3.2 构建业务模型组件 326
17.3.3 业务模型对象的定义及持续性 328
17.3.4 建立映射组件 331
17.3.5 构建业务逻辑组件 335
17.3.6 构建用户界面组件 340
17.3.7 构建错误跟踪器的servlet 342
17.3.8 建立错误跟踪器 351
17.4 转移阶段 351
17.4.1 配置运行时刻选项 351
17.4.2 配置和建立数据库 351
17.4.3 运行错误跟踪器 352
17.4.4 运行Web客户 355
17.5 小结 356
第18章 从CGI转移到servlet 357
18.1 概述 357
18.2 获得环境变量 357
18.3 使用cookie 359
18.3.1 用Java来处理cookies 360
18.3.2 举例--用cookies创建一个购物车 361
18.4 正则表达式 366
18.5 小结 372
第19章 国际化Web站点 374
19.1 字符集 374
19.2 字符编码 374
19.3 在Java核心API中支持的字符编码 375
19.4 内容协商 376
19.5 Servlet API中支持的字符编码 381
19.5.1 国际化servlet 381
19.5.2 返回文本文件的本 386
19.6 小结 393
第20章 智能servlet 395
20.1 混合的网络配置 395
20.3 混合的处理和操作系统平台 396
20.2 混合的数据库平台 396
20.3.1 servlet的解决方案:one-to-one 398
20.3.2 servlet链接的解决方案 399
20.3.3 智能servlet解决方案 399
20.4 请求的处理过程 399
20.5 进程授权 402
20.6 在企业中实现“智能servlet” 403
20.6.1 servlet作为任务管理者 403
20.6.2 授权请求的力量 405
20.6.3 将进程与servlet分离 405
20.6.4 尽可能地抽象servlet和ancester类 405
20.7 智能servlet的扩展性 405
20.7.1 用Hashtable排除方法参数 405
20.7.3 使用预先做好的HTML文件进行动态更改 406
20.7.2 不需重新编译servlet而添加功能 406
20.8 小结 409
第21章 使用JNDI进行服务器编程 411
21.1 命名和目录服务 411
21.1.1 网络就是计算机 411
21.1.2 命名服务 412
21.1.3 目录服务 412
21.2 为什么使用LDAP 413
21.3 介绍JNDI 415
21.4 使用JNDI 417
21.4.1 安装JNDI 417
21.4.2 JNDI程序包 418
21.5 JNDI服务提供者和AKA JNDI驱动程序 418
21.5.2 开发自己的服务提供者 419
21.5.1 如何得到JNDI服务提供者 419
21.6 基本的LDAP操作 420
21.6.1 标准的LDAP操作 420
21.6.2 用JNDI连接到LDAP服务器 420
21.6.3 绑定 421
21.6.4 检索LDAP服务器 423
21.6.5 确定LDAP的检索范围 423
21.6.6 检索操作 424
21.7 LDAP服务器的修改 430
21.7.1 增加条目 430
21.7.2 修改条目 433
21.7.3 删除条目 435
21.8 小结 436
22.1 在LDAP里存储和取回Java对象 437
第22章 使用LDAP和Java 437
22.2 分散存储和集中存储 439
22.3 使用JNDI/LDAP改进顾客服务 440
22.3.1 介绍基本对象 441
22.3.2 获得数据 441
22.3.3 屏幕镜头 442
22.3.4 LDAP的目录信息树 444
22.3.5 顾客服务代码 447
22.4 小结 458
第23章 Enterprise JavaBeans 459
23.1 Web需要可移植性 459
23.1.1 Java和Web 459
23.1.2 服务端移植性 460
23.1.3 用于Web应用的服务 462
23.1.4 Enterprise JavaBeans和WebOS 465
23.2 EJB规范 465
23.2.1 在EJB规范中的角色 466
23.2.2 indirection观点 468
23.2.3 三种规约定义一个容器 473
23.3 会话bean 474
23.3.1 引用和句柄是活动的 476
23.3.2 会话bean的生命周期 477
23.3.3 事务性和非事务性方法 478
23.3.4 钝化和激活 479
23.4 实体bean 480
23.4.1 实休bean的持续性 480
23.4.2 实体bean的身份 483
23.4.3 实现主关键字 484
23.4.4 搜索器 485
23.4.5 激尖和钝化 486
23.4.6 实体bean的生命周期 487
23.5 事务管理 489
23.6 调度描述符 491
23.7 小结 495
第24章 索引和检索 496
24.1 spider 496
24.1.1 信息搜集 497
24.1.2 附加信息 498
24.1.3 分析器 498
24.1.4 数据库 502
24.2 GUI 511
24.3 开始爬行 518
24.4 我,机器人 520
24.5 客户 520
24.6 优化和扩展 526
24.7 链接 527
第25章 未来服务器Jini和JavaSDpace 528
25.1 警告:即将发生的变化 528
25.2 展望未来:Jini事例研究 528
25.2.1 在线贷款许可Web站点 528
25.2.2 仔细考虑的问题 530
25.3 驱动分布式设备 530
25.3.1 分布式计算 530
25.3.2 自然不协调性 531
25.4.1 集中式控制与动态分组分裂 532
25.4 计算上的革命 532
25.4.2 Jini是我们共同工作的方式! 533
25.5 剥离Jini层 538
25.5.1 发现和加入协议 538
25.5.2 查找服务--代理 541
25.5.3 Sun提供的实现 552
25.6 投入Jini的海洋 557
25.6.1 为探测准备系统 558
25.6.2 接触REGGIE--一个参考查找服务 560
25.6.3 其他基本的Jini部分 566
25.6.4 编写三个Jini服务的代码 567
25.6.5 编写一个Jini客户的代码 575
25.6.6 测试自己的djinn 577
25.6.7 随着Jini技术一同前进 579
第26章 同JavaDSpace一起工作 581
26.1 什么是JavaSpace 581
26.1.1 JavaSpace是Java接口 581
26.1.2 JavaSpace是Jini服务 582
26.1.3 JavaSpace像查找服务 582
26.1.4 JavaSpace是真正的对象数据库 583
26.1.5 JavaSpace是你的MOM 583
26.1.6 JavaSpace是steroid上的一种排队服务 585
26.1.7 看看飘在天空中的云 585
26.2 个人的JavaSpace构造集合 585
26.2.1 和你需要的空间一样多 586
26.2.2 JavaSpace里的条目 586
26.2.3 weite0方法 586
26.2.5 take0方法 587
26.2.4 read0方法 587
26.2.6 通知的注册:Jini分布式事件 588
26.2.7 条目提交的优化 589
26.2.8 用JavaSpace实现工作流程 590
26.2.9 将并行性加入到JavaSpace系统中 591
26.3 将JavaSpace添加到我们的事例研究中 592
26.3.1 系统中的服务 592
26.3.2 系统中的JavaSpace 593
26.3.3 系统的示意图 594
26.3.4 精炼我们的设计 595
26.3.5 准备实现 599
26.3.6 JavaSpace小结 600
27.2 本地优化 601
27.3 附加模块 601
27.1 模拟业务逻辑 601
第27章 编写基于Jini的站点的代码 601
27.4 编写定制条目 602
27.4.1 UserEntry 602
27.4.2 UserEntryBean 603
27.5 编写ServerNode 604
27.6 编写JSpaceServlet 608
27.7 编写服务节点 614
27.7.1 NameVerifierNode 614
27.7.2 CreditCheckerNode 616
27.7.3 Human VerificationNode 618
27.8 编写测试工具 621
27.8.1 DataPut--一个空间写入器 622
27.8.2 流量生成器 624
27.8.3 DumpSpace--一个空间转储器 625
27.8.4 编译代码 627
27.9 创建JavaSpace 628
27.9.1 mahalo--Sum的事务服务 628
27.9.2 outrigger--Sun的JavaSpace服务 628
27.9.3 演奏JavaSpace交响乐 629
27.10 设置系统 630
27.10.1 在三个机器组成的网络上的实现步骤 630
27.10.2 一步一步的启动过程 632
27.10.3 测验我们的分布式系统 634
27.10.4 我们已经成功地完成了的工作 635
附录A HTTP 636
附录B Java对象流及串行化 652
附录C 密码术和servlet 669
附录D LogWriter类 699
附录E UML符号 701
附录F JServ的配置 705
附录G ServletRunner和Java Web Server的配置 737
附录H JRun的配置 742
附录J JSDK API参考 748
附录K JavaServer Pages API参考 760
附录L JNDI API参考 765
附录M 核心JavaMail/JAF API参考 803
附录N 核心Jini API参考 832
附录O JavaSpaces API参考 852
附录P Enterprise JavaBeans API参考 854
附录Q JDBC API参考 862
附录R 支持与勘误表 890