前言 1
第Ⅰ部分 基本JSP脚本 9
第1章 第一个JavaServer Page 11
1.1 对Web需要知道些什么 11
1.1.1 Web开发者的观点 12
1.1.2 Web页面 13
1.1.3 技术的发展 14
1.2 JavaServer Pages怎样工作 14
1.3 JavaServer Pages的基本构建块 17
1.3.1 声明 18
1.3.2 表达式 18
1.3.3 Java方法:使用声明和表达式 20
1.3.4 小脚本 21
1.4 如何测试JSP文档 24
1.5 关于测试JSP文档的更多信息 25
1.5.1 找到一个远程服务器 27
1.5.2 理解服务器的目录结构 28
1.6 例子:一个旋转横幅的广告 30
1.7 JSP的注释标记 32
1.8 小结 33
第2章 使用JSP脚本元素 35
2.1 作用域和生存期概念 35
2.1.1 类范围的名字和局限于方法的名字 35
2.1.2 局限于方法的名字可以隐藏类范围的名字 37
2.2 小脚本与声明 39
2.2.1 JSP与Servlet 40
2.3 在声明和小脚本中变量的作用域 41
2.4 在声明和小脚本中变量的生存期 42
2.5 作用域、生存期和方法调用 43
2.5.1 发生了什么 44
2.5.2 参数传递 44
2.5.3 一个方法如何打印部分响应内容 45
2.6 小结 46
第3章 隐式对象 47
3.1 Java中的类、对象和方法 47
3.2 混合JSP标记、HTML标记和Java语句 49
3.3 JSP中的隐式对象 50
3.3.1 请求对象 50
3.3.2 方法、远程地址和远程主机 52
3.3.3 地区和语言 52
3.3.4 表单和请求参数 54
3.3.6 隐式输出对象 57
3.3.5 响应对象 57
3.3.7 HTTP会话 58
3.3.8 session对象 61
3.3.9 application对象 64
3.3.10 config对象 66
3.3.11 page对象 66
3.3.12 pageContext对象 66
3.3.13 exception对象 70
3.4 小结 70
第4章 JSP指令 73
4.1 什么是指令 73
4.2 include指令 73
4.2.1 嵌套include指令 74
4.2.3 一些其他的缺陷 75
4.2.2 修改包含文件 75
4.3 page指令 77
4.3.1 import属性 77
4.3.2 errorPage和isErrorPage属性 78
4.3.3 session属性 80
4.3.4 info属性 81
4.3.5 language属性 82
4.3.6 contentType属性 82
4.3.7 isThreadSafe属性 83
4.3.8 buffer属性 84
4.3.9 autoFlush属性 89
4.3.10 extends属性 90
4.4 使用page指令的一个例子 93
4.5 tablib指令 94
4.4.1 jspInit和jspDestroy方法 94
4.6 小结 95
第5章 从Servlet中可学到什么 97
5.1 Servlet 97
5.1.1 一个更有趣的Servlet 98
5.2 一个JSP变成一个Servlet 100
5.3 声明 103
5.4 include指令 106
5.5 从Servlet中得到调试帮助 110
5.6 小结 111
第6章 标准动作 113
6.1 动作标记语法 113
6.2 include动作 114
6.3 include指令与include动作 115
6.3.1 Servlet代码 116
6.3.2 修改被包含的页面 119
6.3.3 使变量名是可区分的 120
6.3.4 Servlet和其他的动态内容 120
6.3.5 JSP有效范围和include动作 122
6.3.6 当流出时所发生的动作 124
6.4 param动作 126
6.5 forward动作 130
6.6 plugin动作 132
6.6.1 plugin动作的属性 136
6.6.2 更多的属性 137
6.6.3 plugin动作的子标记 138
6.6.4 使用名字属性 138
6.7 小结 140
7.1 主页面 143
第7章 案例学习:一个简单的Web小窗口 143
7.1.1 定制的主页面 144
7.1.2 帮助者文件 146
7.2 定制页面 148
7.2.1 包含帮助者文件 150
7.2.2 客户端脚本 151
7.2.3 HTML表单 152
7.3 提交更改 153
7.4 小结 155
第Ⅱ部分 JavaBeans及其应用 157
第8章 使用JavaBeans 159
8.1 什么是JavaBeans 159
8.2 Bean的属性 160
8.3 useBean动作 164
8.3.1 class属性 165
8.3.2 id属性 166
8.3.3 Bean范围 167
8.3.4 Bean范围实验 168
8.3.5 其他useBean属性 171
8.3.6 非空的useBean标记 172
8.3.7 编译和重新编译Bean类 172
8.4 setProperty和getProterty动作 172
8.4.1 使用来自HTML表单的值 173
8.4.2 setProperty和getProterty动作的属性 177
8.4.3 Indexed属性 179
8.4.4 示例:用来自Bean的值填充一个表单 181
8.4.5 为什么对setProperty和getProterty感到烦恼 183
8.5 小结 184
9.1 Tic-Tac-ToeWeb站点 187
第9章 案例学习:Tic-Tac-Toe 187
9.2 部分代码概览 190
9.3 可以参加 190
9.4 开始游戏 191
9.4.1 对参加者意味着什么 192
9.4.2 组成比赛 194
9.4.3 一对参加者 194
9.4.4 负荷 195
9.4.5 login.jsp的其他元素 196
9.5 棋盘 196
9.6 参加游戏 199
9.6.1 线程安全性 202
9.6.2 实现移动 202
9.6.3 工作类 206
9.6.4 退出 207
9.7 小结 208
第Ⅲ部分 使用数据库和JavaServer Pages 209
第10章 与数据库交互 211
10.1 数据库和服务器 211
10.2 创建一个连接 212
10.3 一个简单的数据库页面 214
10.3.1 更新数据库 215
10.3.2 查询数据库 216
10.4 当页面第一次被加载时连接 217
10.5 使用JavaBeans 219
10.6 使用一个可滚动的结果集 220
10.7 与一个在线数据库交互 222
10.8 使用数据库事务 225
10.9 小结 227
第11章 案例学习:一个在线消息板 229
11.1 消息板Web站点 229
11.2 帮助者代码 233
11.3 消息板的数据库 233
11.3.1 访问数据库 233
11.3.2 创建数据库表 235
11.3.3 MESSAGETREE表 236
11.3.4 连接到数据库 238
11.4 创建和维护用户信息 239
11.4.1 work Bean 239
11.4.2 创建一个新用户 245
11.4.3 登录 249
11.5.1 浏览单个消息 251
11.5 创建和维护关于消息的信息 251
11.4.4 退出 251
11.5.2 浏览消息集合(查找结果) 253
11.5.3 浏览消息集合(消息的线程) 255
11.5.4 发布消息 257
11.5.5 删除消息 262
11.6 小结 265
第Ⅳ部分 高级议题 267
第12章 配置一个Web应用 269
12.1 一个简单的Web应用 269
12.1.1 创建目录 270
12.1.2 配置JSP容器 271
12.2 一个更实际的Web应用 272
12.3.1 Java档案文件 273
12.3 创建一个Web档案文件 273
12.3.2 Web档案文件 274
12.4 小结 275
第13章 创建定制标记 277
13.1 什么是标记 277
13.2 配置定制标记 279
13.3 创建一个简单的定制标记 280
13.3.1 定义标记 280
13.3.2 标记处理器类 283
13.3.3 doStartTag和doEndTag方法 285
13.4 具有属性的标记 286
13.5 必要的属性 288
13.6 属性值和运行时表达式 290
13.7.1 有实体的标记 291
13.7 包含(或不包含)标记的体 291
13.7.2 跳过标记体 293
13.7.3 其他bodycontent选项 294
13.8 处理标记的实体 295
13.9 多次处理实体 297
13.10 Body标记的生存期 300
13.11 设置Page变量的值 302
13.12 定义VariableInfo对象的其他方法 305
13.13 嵌套标记 306
13.14 深层嵌套 309
13.15 小结 310
第14章 案例学习:一个Web购物车 313
14.1 从用户观点看购物车 313
14.2 购物车数据库 315
14.3 订购表单 317
14.3.1 重复的标记处理器 320
14.3.2 逐个操作项目的标记处理器 324
14.4 一个详细页面 326
14.4.1 来自客户端脚本的帮助 327
14.4.2 在详细页面上的包含文件 327
14.5 校验页面 328
14.5.1 重复的标记处理器 330
14.5.2 逐项操作的标记处理器 332
14.5.3 用户提供的表单信息 334
14.6 保存订单 335
14.7 小结 336
附录A 配套光盘内容 339
附录B 超文本传输协议 347
附录C 用Windows中的Access配置数据库 355