第1章 定制标记基础 1
1.1 使用定制标记——JSP文件 3
1.2 定义定制标记——TLD 4
1.3 实现定制标记——标记处理程序 4
1.4 在WEB-INF/web.xml中指定TLD 7
1.5 <taglib>和<tag> 8
1.6 标记生存期 9
1.7 线程安全性 10
1.8 标记属性 11
1.9 访问页面信息 15
1.11 标记包 17
1.10 错误处理 17
1.11.1 Tag接口 19
1.11.2 TagSupport类:祖先、值和ID 20
1.12 带有主体的标记 21
1.13 小结 22
第2章 定制标记的高级概念 24
2.1 主体标记处理程序 25
2.1.1 BodyTag接口 25
2.1.2 BodyTagSupport类 26
2.2 迭代 26
2.3 脚本编程变量 30
2.3.2 指定脚本编程变量信息 31
2.3.1 在页面范围内存储Bean 31
2.3.3 标记处理程序与脚本编程变量的关联 32
2.3.4 使用定制标记ID 32
2.4 主体内容 34
2.4.1 理解主体内容的工作方式 36
2.4.2 生成JavaScript 40
2.5 嵌套标记 43
2.5.1 定位祖先标记 43
2.5.2 共享数据 44
2.6 小结 45
3.1.1 传输表单数据 46
3.1 带有bean的表单 46
第3章 HTML表单 46
3.1.2 文本字段、文本区域和单选按钮 47
3.1.3 复选框和列表框 49
3.2 有效性验证 52
3.2.1 JavaScript客户端有效性验证 53
3.2.2 JSP服务器端有效性验证 55
3.2.3 servlet服务器端有效性验证 56
3.2.4 servlet和JSP页面的服务器端有效性验证 58
3.3 表单框架 60
3.3.1 HTML表单的外观设计模式 61
3.3.2 框架 62
3.3.3 可选元素 68
3.3.4 有效性验证 69
3.5 小结 71
3.4 定制标记 73
第4章 模板 76
4.1 封装布局 77
4.2 可选内容 81
4.3 基于角色的内容 84
4.4 单独定义区域 85
4.5 嵌套区域 87
4.6 扩展区域 88
4.7 组合功能 90
4.8.1 bean 92
4.8 实现区域标记 92
4.8.2 标记处理程序 97
4.9 小结 104
第5章 设计 105
5.1 模型1 105
5.2 模型2:MVC方法 106
5.3 模型2示例 108
5.3.1 Bean 108
5.3.2 部署描述信息 110
5.3.3 “成功登录”用例 112
5.3.4 创建新账户 115
5.4 小结 119
6.1 模型2框架 120
第6章 模型2框架 120
6.1.1 Action接口 122
6.1.2 ActionFactory类 122
6.1.3 ActionRouter类 123
6.1.4 操作servlet 124
6.1.5 改进初始模型2示例 126
6.2 改进设计 128
6.3 增加用例 133
6.3.1 第1步:实现口令提示操作 134
6.3.2 第2步:实现口令提示JSP页面 135
6.3.3 第3步:向属性文件添加映射 136
6.3.4 第4步:修改登录失败JSP页面 136
6.4 定制标记的重要性 137
6.5 JSP脚本 139
6.6 小结 141
第7章 事件处理和重复提交敏感表单 143
7.1 模型2框架的事件处理 143
7.2 重复提交敏感表单 148
7.2.1 用模型2框架捕获表单的重复提交 150
7.2.2 不用框架捕获表单的重复提交 158
7.3 小结 161
第8章 国际化 163
8.1 Unicode 163
8.2.1 非基于拉丁语的JSP页面 164
8.2 字符集 164
8.2.2 多语言JSP页面 166
8.3 地区 166
8.4 资源包 168
8.4.1 列表资源包 169
8.4.2 为资源键使用常量 172
8.4.3 属性资源包 173
8.5 多个资源包 174
8.6 格式化与地区相关的信息 177
8.6.1 日期和时间 177
8.6.2 数字、货币和百分比 179
8.6.3 消息 181
8.7 浏览器语言首选项 184
8.7.1 检测地区 184
8.7.2 定位资源包 185
8.8 定制标记 188
8.8.1 Message标记 188
8.8.2 Format标记 192
8.9 小结 197
第9章 安全性 198
9.1 Servlet身份验证 198
9.1.1 主体和角色 198
9.1.3 可移植性 200
9.1.2 声明性身份验证 200
9.1.4 身份验证的类型 201
9.2 基本身份验证 201
9.3 摘要身份验证 204
9.4 基于表单的身份验证 205
9.5 SSL和客户证书身份验证 208
9.6 定制身份验证 208
9.6.1 Resin 209
9.6.2 Tomcat 4.0 211
9.7 Web应用程序安全元素 213
9.8 编程方式的身份验证 215
9.9 小结 224
第10章 数据库 225
10.1 创建数据库 226
10.2 数据源 228
10.3 数据库定制标记 228
10.3.1 Query标记 230
10.3.2 ColumnNames标记 234
10.3.3 Columns标记 237
10.3.4 Rows标记 238
10.3.5 Release标记 240
10.4 连接池 241
10.4.1 使用连接池 241
10.4.2 创建连接池 243
10.4.3 实现简单的连接池 244
10.4.4 功能强大的资源池 246
10.5 预编译语句 251
10.6 事务 257
10.7 滚动结果集 261
10.8 小结 266
第11章 XML 267
11.1 生成XML 268
11.1.1 使用bean生成XML 269
11.1.2 生成自身XML的bean 271
11.1.3 从XML生成bean 273
11.2 XML后处理 273
11.3.1 SAX 275
11.3 分析XML 275
11.3.2 SAX定制标记 280
11.3.3 DOM 287
11.3.4 DOM定制标记 295
11.4 转换XML 304
11.4.1 联合使用JSP和XSLT 306
11.4.2 在定制标记中使用XSLT产生HTML 307
11.4.3 使用XSLT在编译时产生JSP 311
11.4.4 编译时和运行时使用XSLT 313
11.5 使用XPath 313
11.6 小结 317
第12章 案例研究 318
12.1 水果站 319
12.1.1 主页 321
12.1.2 采购 325
12.1.3 店面 327
12.1.4 购物车 330
12.1.5 核对 334
12.1.6 购买 337
12.2 模型2框架 339
12.2.1 模型 339
12.2.2 数据库 340
12.2.3 Bean 343
12.2.4 视图——JSP页面和模板 348
12.2.5 控制器——Servlet和操作 352
12.3 国际化 357
12.4 身份验证 361
12.5 HTML表单 372
12.6 重复提交敏感表单 380
12.7 SSL 381
12.8 XML和DOM 381
12.9 小结 384
附录A servlet过滤器 385
A.1 servlet过滤器示例 386
A.2 小结 388