第1章 三层Web应用程序 1
三层应用程序 1
一个简单的范例 3
客户机端 4
小型服务程序基础 4
JDBC基础 7
更好的电话簿 9
新Servlet类 9
MiscDB类及其方法 12
Logger类 14
LookerUpper类 16
HtmlWrapper类 18
Servlet API综述 22
包 22
主要角色 22
装载与实例化 23
初始化 23
服务程序的任务:请求与响应 28
完整的包列表 30
会话跟踪 32
小结 34
第2章 一个通用的三层应用程序 35
整体设计与Query2 36
Query2应用程序 37
用于数据交换的Env类 39
声明与方法 39
Env与HTTP请求 40
根据文本文件与缓冲阅读器建立的构造器 41
Env与Properties 42
其他Env构造器 42
DBHandler与Query类 43
引入、声明与变量 44
DBHandler构造器 44
查询处理 47
addQuery()与delQuery() 48
连接库方法 48
Query类 49
RowSequence与MiscDB实用程序 53
声明与构造器 53
MiscDB实用程序与结果集合元数据 54
作为惰性序列的ResultSet对象 56
getRow()与next() 57
主服务程序 58
JDBC综述:Statement、ResultSet、元数据 60
Statement接口 61
PreparedStatement扩展了Statement 63
数据类型 64
PreparedStatement的setXXX()方法 65
ResultSet 66
JDBC的元数据接口 67
ResultSetMetaData 68
小结 69
第3章 三层应用程序的外壳 70
自己做的三层应用程序(版本1) 70
版本1a:编辑Query2 71
Query3:带有会话的三层应用程序 74
应用程序指定的文件 75
Query3服务程序综述 77
doPost()代码 78
在Query3中建立与使用会话 81
HTML生成 82
根据元素建立页:wrapPage() 82
ECS基础 83
扩展ECS包 84
输出指定类型的页 85
模板文件 86
Query3中的模板文件与HTML输出 87
模板文件与JavaServer Pages 88
使用Query3建立一个应用程序 90
这是一个应用程序服务器吗? 91
连接组合与DBHandler的其余部分 92
问题是什么?可伸缩性与性能 92
安全性与线程安全 92
连接库与高速缓存 93
整体设计与介绍顺序 93
Cache类 94
高速缓存范例1:阶乘 99
高速缓存范例2:二项式系数 102
属性文件与属性组 104
DBConnectionManager 107
ConnectionPool类 114
在DBHandler中使用连接组合 118
小结 119
第4章 语言、文法与分析程序 121
用于查询输出的模板文件 123
微型语言的替换 124
查询输出模板的代码 125
正式语言与文法规则 127
英语范例 128
一小段历史 129
上下文无关与上下文相关的文法 129
文法与分析程序 129
EBNF符号 130
一个范例:.ini文件作为一种正式语言 130
文法规则、语义约束与词汇规则 131
作为一种正式语言的模板文件 133
分析程序综述 134
一个范例 136
分析程序、树与词汇分析器 137
ParseTree类 140
将树写入一个字符串 143
词汇分析器 147
支付:一个小购物卡 154
大学书店 155
Env.addBufferedReader()的新代码 155
.ini文件 158
用户界面与模板文件 159
小结 166
第5章 XML初步 167
XML易于阅读 168
XML简介 168
XML是一种定义标记语言的工具 169
XML文档描述了它们自己的语法 170
XML可以在浏览器中显示 171
XML是对象的一种序列化格式 171
XML是一种很好的多层应用程序黏合剂 171
XML是一种重要的授权技术 172
XML与SGML;XHTML与HTML 173
结构合理约束 173
一个HTML/XHTML/XML页面 174
一个SGML元素声明 175
终止标注、空元素与分析程序 176
分析程序与规范 177
HTML与XHTML:区别的总结 178
XML文档 180
文档、处理器与应用程序 180
主要的数据类型:CDATA与PCDATA 181
逻辑结构 181
文档语法 182
注释、CDATA部分与PI 183
PI的替换 186
元素生成 187
文档的本征部分与名称空间 187
编程中的名称空间 188
XML中的名称冲突 189
前缀解决方案 190
Web上的完全限定名 190
名称空间与DTD 193
名称空间可以任意使用吗? 194
XML 1.0中的新生成与改变 195
扩展元素与属性名称 196
小结 197
第6章 实体与DTD 198
引言 198
物理实体 198
对字符实体的引用 199
参数与普通实体 199
实体声明与引用 199
实体定义:内部与外部实体 200
非XML数据的外部实体:Notations 202
DOCTYPE声明 203
五个预声明实体与两个未命名实体 203
使用实体的范例 205
CDATA的助记名称 205
字符的助记名称 207
包含文件 207
作为模块的外部参数实体 209
模块化XHTML 210
条件部分与外部参数实体 211
作为宏的内部参数实体 212
元素与属性声明 212
元素声明 213
属性-列表声明 215
DTD的缺陷 220
文档、处理器与DTD 221
非确认性的分析程序 221
确认性分析程序 222
空白区的处理 222
实体引用替换过程 224
小结 226
第7章 DOM、SAX与分析程序 227
分析XML文档 227
DOM与SAX 228
现有的分析程序,以及我们应该使用哪一种? 228
输入源与文档对象 230
一个范例应用程序:DocWalker 232
应用程序的结构 233
DocWalkerServlet 233
DocWalker 235
写出XML字符串 245
模板文件 246
XmlManipulator:剪切、复制与粘贴 247
DOM Level 1 250
DOM接口 250
XML、DOM与语言联编 251
IDL的范例与Java联编 254
Java联编的结构 255
小结 258
第8章 SAX处理、Sun分析程序与一致性研究 259
EchoAsHtml 259
Sun的Java XML指南 262
EchoAsHtml、三层版本 266
EchoAsHtml类 268
HandlerBase方法 273
总结与评述 283
SAX评述 283
SUN工具包的评述 284
XML处理器的一致性研究 284
小结 286
第9章 集成XML微型语言 287
SAXMinilanguage 288
算术表达式语言 288
二堆栈办法 289
SAXMinilanguage 291
算术表达式Minilanguage 296
驱动程序:客户机与服务程序 300
Xm12DBTables 301
Xm12DBTables的DTD 301
Xm12DBTables类 303
XML与关系型数据表格 309
小结 312
第10章 JSP与JavaBean 313
引言 313
它的显示 314
JSP的主要特性 314
工作原理 315
将JSP转换为服务程序 316
JSP语法与语义 321
非XML语法 321
行为元素 324
设计考虑 326
与客户机的会话 326
具有JSP与JavaMail的Birthday应用程序 327
入口点:birthday.htm 329
JSP主页:birthday.jsp 331
输出模板文件 333
部件对象的内部:BirthdayBean.java 336
程序总结 345
JSP与用于数据模板的SUBST微型语言 346
小结 346
第11章 多支持系统的实现:通用工具 348
引言 348
应用程序综述 349
测试 351
XML配置子系统 354
序列与数据源 354
部件对象与JavaMail API 355
电子邮件的传输与存储协议 355
JavaMail的结构 356
启动一个会话 357
RowSeq及其派生 357
RowSeq 358
DBRowSequenct 365
过滤与映射 369
MailSequence 369
RowViewSource 371
更新更好的Env 373
递归Env 374
XML配置 380
主要概念:三个递归数据结构 381
XmlConfig子系统综述 381
mailConfig.xml与它定义的Env 382
XmlConfig 383
根据Env建立部件对象 385
根据XML文档建立部件对象 389
从DOM到Env 392
XmlConfigBase.java 396
小结 399
第12章 多支持系统的实现:具体构造 400
从客户机到JSP主页 400
HTML入口点 401
JSP主页 403
JSP输出页 405
主部件对象 406
引入、类层次变量与构造器 407
doLogin()与初始化 408
doCommand() 412
msgList命令 413
显示、发送以及删除消息的方法 417
XmlConfigBase的重载方法 418
结论 419
小型部件对象 419
MessageSender 419
MessageMaker 423
RowViewSource 1:MailViewSource 425
主要构成部分 425
引入、变量、构造器和setString() 425
JavaMail方法 428
获取消息的方法 432
删除消息和消息范围的方法 435
输出方法 437
RowViewSource 2:DBViewSource 441
mailSource与databaseSource元素 441
对比提纲 442
引入、变量和构造器 442
initSession()、setQueries()、initDBHandler() 443
获取行的方法 445
删除行的方法 446
小结 448
第13章 XSLT和XPath 450
引言 450
XSLT概述 450
要点总结 451
历史回顾 451
IE5范例 455
配置XT 460
三个扩展范例 461
文档范例 462
编程范例:Countdown 464
数据范例:SQL到XSL 466
XSLT和XPath的细节剖析 471
XSLT数据模型 471
XSLT处理模型 472
XPath概述 472
XSLT的扩展 475
更高级的编程范例 476
嵌套循环 476
排列 477
8 Queens Puzzle 481
XSLT的用途 484
小结 485
跋 486
附录A 安装简单说明 488
附录B 相关资源 491
附录C HTTP 494
附录D JDBC API Reference 512
附录E JSDK API Reference 548
附录F JavaServer Pages语法简介 562
附录G 核心JavaMail/JAF API Reference 568
附录H 可扩展标记语言(XML)1.0规范 604
附录I XML中的名称空间 647
附录J DOM 1核心:IDL与Java语言联编 659
附录K SAX API Reference 670
附录L 规则表达式 678
附录M 技术支持和勘误表 682