前言 1
第1部分 入门篇 5
第1章 服务器端的Java入门 7
1.1 为什么选择Java 7
1.1.1 易于入门 8
1.1.2 降低用户接口的复杂性 8
1.1.3 用设计式样处理复杂问题 9
1.1.4 多线程——Java网络开发的必备技术 9
1.2 编写服务器端的Java代码 10
1.2.1 Tomcat推荐工具 10
1.2.2 选择IDE 10
1.3 数据库 11
1.3.1 服务器访问日志 11
1.4.1 劳动分工 12
1.3.2 其他用途 12
1.4 JavaServer Pages 12
1.4.2 其他解决方案 13
1.5 结合在一起 13
1.5.1 服务器小程序容器 13
1.5.2 Tomcat服务器小程序容器或Web服务器 14
1.6 Web服务器的选择 15
1.7 数据库的选择 15
1.7.1 平面文件数据库 15
1.7.2 SQL数据库 15
1.7.3 对象数据库 16
1.7.4 MySQL 16
1.9 中心数据库网站 17
1.8 设计使用数据库的网站 17
1.10 小结 18
第2章 服务器小程序入门 19
2.1 服务器端Java 19
2.1.1 在哪里运行代码 20
2.1.2 设计约束条件 20
2.2 服务器端技术 20
2.2.1 服务器端的include 20
2.2.2 公共网关接口 21
2.2.3 服务器API 22
2.2.4 服务器端脚本语言 22
2.2.5 Active Server Pages 22
2.3 服务器小程序和JavaServer Pages 22
2.3.3 可移植性 23
2.3.1 高效性 23
2.3.2 能力 23
2.4 推荐读物 24
2.5 小结 24
第3章 安装和配置Tomcat 26
3.1 服务器小程序容器 26
3.1.1 进程内容器 26
3.1.2 进程外容器 27
3.1.3 独立容器 28
3.2 SDK 28
3.2.1 下载和安装 29
3.2.2 安装Java2 Standard Edition 29
3.2.4 测试类 31
3.3 安装Tomcat 31
3.2.3 安装验证 31
3.3.1 源代码或二进制码分布 32
3.3.2 二进制码安装 32
3.3.3 设置Tomcat环境变量 32
3.4 运行Tomcat 33
3.4.1 启动和停止Tomcat 33
3.4.2 处理HTML 33
3.4.3 运行HelloWorldExample服务器小程序 35
3.4.4 处理服务器小程序请求 36
3.5 Tomcat配置文件 36
3.5.1 理解server.xml 36
3.5.2 Web应用程序 42
3.5.3 Web应用程序和web.xml 42
3.5.4 服务器小程序描述表 46
3.5.5 默认的web.xml文件 47
3.5.6 配置 49
3.6 小结 49
第4章 服务器小程序基础 51
4.1 服务器小程序生命周期 51
4.2 GenericServlet类 52
4.3 HTTPServlet类 52
4.3.1 service方法 53
4.3.2 doGet()方法 55
4.3.3 表单试验 55
4.3.4 doPost()方法 58
4.3.5 不常使用的HTTP方法 58
4.4 服务器小程序知道什么 62
4.4.1 服务器小程序初始化设置 63
4.4.2 描述表初始化设置 64
4.5 请求属性 64
4.5.1 页面压缩 65
4.5.2 Cookie和session管理 65
4.5.3 检测浏览器 65
4.5.4 其他信息小块 66
4.6 小结 66
第5章 JavaServer Pages入门 67
5.1 JavaServer Pages解决方案 67
5.1.1 外观和编程逻辑的分离 68
5.1.2 标记格式 68
5.1.3 模板、指令和行为 68
5.2.1 页面指令 70
5.2 指令 70
5.2.2 include指令 71
5.2.3 taglib指令 72
5.3 JSP行为 72
5.3.1 隐含的JSP对象 72
5.3.2 脚本小程序 73
5.3.3 声明数据 75
5.3.4 局部和实例数据 76
5.3.5 声明方法 77
5.4 JSP生命周期 77
5.5 代码的位置 78
5.6 小结 78
第6章 JSP、Bean和自定义标记 80
6.1 Bean解决方案 80
6.2.1 装载JavaBean 81
6.2 在JSP中使用JavaBean 81
6.2.2 设置JavaBean属性 82
6.2.3 获得JavaBean属性 84
6.3 JavaBean组件模型 85
6.3.1 更多Bean 85
6.3.2 Enterprise JavaBeans 86
6.3.3 非EJB的可升级Web服务器 87
6.3.4 棘手的问题 87
6.4 标记库 87
6.4.1 没有主体的标记 88
6.4.2 taglib指令 88
6.4.3 标记库和Bean 98
6.5 小结 98
第2部分 网站和数据库 101
第7章 关系数据库基础 103
7.1 数据库通史 103
7.1.1 关系数据库管理系统 104
7.1.2 SQL和客户/服务器模型 104
7.1.3 SQL数据库的实质 106
7.1.4 发展现状 106
7.2 设计关系数据库 107
7.2.1 需要多少个表 107
7.2.2 创建表关系 109
7.2.3 使用Entity-Relationship Diagrams绘制数据库 110
7.3 范式 112
7.3.1 第一范式 112
7.3.3 第三范式 113
7.3.2 第二范式 113
7.3.4 破坏规则 114
7.4 小结 115
第8章 MySQL基础 116
8.1 MySQL数据库服务器 116
8.1.1 SQL的能力 116
8.1.2 SQL的局限性 117
8.2 为什么选择MySQL 117
8.2.1 可靠性 117
8.2.4 访问控制 118
8.2.5 开发工具 118
8.3 安装MySQL 118
8.2.3 容量 118
8.2.2 速度 118
8.3.1 选择版本 119
8.3.2 解释版本命名方案 119
8.3.3 安装MySQL二进制码 119
8.3.4 安装Unix二进制码 120
8.3.5 在Linux上安装RPM 121
8.3.6 安装Windows二进制码 121
8.3.7 源代码安装 122
8.3.8 目录结构 123
8.4 对安装进行测试 123
8.5 其他实用工具 125
8.6 小结 126
第9章 配置MySQL 127
9.1 mysql客户程序 127
9.1.1 mysql数据库 128
9.1.2 运用SELECT语句查看数据 129
9.1.3 SQL的大小写敏感性 130
9.2 访问控制体系 130
9.2.1 设置根口令 132
9.2.2 运用INSERT语句添加新权限 133
9.2.3 运用UPDATE语句改变权限 134
9.2.4 运用DELETE语句删除权限 134
9.2.5 运用GRANT及REVOKE语句设置权限 134
9.3 小结 136
第10章 操作SQL表 137
10.1 创建数据库 137
10.1.1 创建数据库 137
10.2 创建表 138
10.1.3 区分大小写 138
10.1.2 删除数据库 138
10.2.1 运用CREATE的语法 139
10.2.2 选择数据类型 141
10.2.3 列属性 142
10.2.4 查看已定义的表 142
10.3 索引与外部关键字 143
10.3.1 关键字 144
10.3.2 惟一索引 144
10.3.3 文本索引 145
10.4 更改表定义 145
10.4.1 运用ALTER TABLE语句 145
10.4.2 添加列及索引 146
10.4.3 修改列 146
10.5 小结 147
10.4.4 删除列及索引 147
第11章 设计数据库:个案研究 148
11.1 数据库需求 148
11.1.1 简化设计工作的工具 149
11.1.2 统一建模语言 149
11.2 确定核心表 149
11.2.1 Names表 149
11.2.2 Articles表 150
11.3 建立关系 151
11.3.1 作者-文章关系 151
11.3.2 添加文章类型信息 152
11.4 需求实现 152
11.4.1 实现访问控制 152
11.4.2 实现订阅定单跟踪 156
11.5 有效地运用索引 158
11.6 创建数据库 158
11.7 小结 161
第12章 操作SQL数据 162
12.1 生成数据 162
12.1.1 插入数据 162
12.1.2 删除数据 163
12.1.2 更新数据 164
12.2 数据查询 164
12.2.1 排序 165
12.2.2 限定输出结果 166
12.2.3 涉及多表的SELECT语句 167
12.3 SQL的函数与操作符 170
12.3.1 操作符 170
12.3.2 字符串比较 171
12.3.3 更多的信息 172
12.4 小结 172
第3部分 传递内容 175
第13章 运用JDBC 177
13.1 JDBC概述 177
13.1.1 驱动程序类型 178
13.1.2 选择驱动程序 180
13.1.3 安装MM.MySQL驱动程序 180
13.2 MySQL服务器小程序 181
13.2.1 授予服务器小程序访问权 183
13.3.1 连接、语句及结果数据 185
13.3 操作SQL数据 185
13.2.3 创建驱动程序的实例 185
13.2.2 制作网页 185
13.3.2 执行查询 186
13.3.3 最后的finally{} 187
13.3.4 去掉服务器小程序的HTML 187
13.4 小结 188
第14章 网站设计策略 189
14.1 Java网站开发面临的挑战 189
14.1.1 JSP存在的问题 191
14.1.2 JavaBean存在的问题 192
14.2 设计动态网站 192
14.2.1 网页布局 192
14.2.2 包含其他页面 192
14.2.3 一种设计动态网页的途径 193
14.3.1 模型视图控制器设计模式 194
14.3 运用设计模式 194
14.3.2 运用服务器小程序控制输入 196
14.3.3 运用JSP查看数据 196
14.3.4 采用JavaBean模拟应用程序 198
14.3.5 MVC中的信息流 199
14.3.6 自定义标记库的作用 200
14.4 小结 200
第15章 设计Web应用程序的模型及控制器 201
15.1 设计需求 201
15.1.1 分组方法 202
15.1.2 创建数据库 204
15.1.3 类的高级应用 206
15.1.4 通用的重复标记 206
15.2.1 连接池 207
15.2 支持类 207
15.2.2 初始化服务器小程序 208
15.2.3 菜单缓冲区JavaBean 208
15.3 编写应用程序 208
15.3.1 初始化应用程序 208
15.3.2 控制服务器小程序 216
15.3.3 转交请求 218
15.4 小结 218
第16章 设计Web应用程序的视图 219
16.1 创建index.jsp 219
16.1.1 设计index.jsp 221
16.1.2 运用自定义标记 222
16.1.3 运用链接Bean 222
16.1.5 menu标记 223
16.1.4 iterate标记 223
16.1.6 header菜单 226
16.1.7 标记库定义 226
16.2 文章页面 230
16.2.1 包含文章文本 230
16.2.2 IncludePage标记 230
16.2.3 采用替代文件扩展名 231
16.2.4 改进该标记 232
16.3 小结 233
第17章 在JSP中运用Bean 235
17.1 理解集合 235
17.1.1 接口概念 236
17.1.3 接口 238
17.1.2 多重继承 238
17.1.4 集合接口 240
17.1.5 一组菜单 241
17.2 创建重复标记 244
17.2.1 重复标记的属性 244
17.2.2 通过映像得到方法 245
17.2.3 IterateTEI类 248
17.3 小结 249
第18章 性能与设计 250
18.1 数据并发性 250
18.1.1 保守并发性 250
18.1.2 开放并发性 251
18.2 多线程及服务器小程序 251
18.2.1 单线程模型 254
18.2.2 同步方法 255
18.2.3 可升级能力设计 256
18.3 JSP的线程问题 260
18.4 小结 260
第4部分 数据库驱动的网站策略 261
第19章 用户身份鉴别 263
19.1 身份鉴别 263
19.1.1 基本型身份鉴别 263
19.1.2 贯通型身份鉴别 264
19.1.3 基于表单的身份鉴别 264
19.1.4 使用SSL 264
19.2 Tomcat的安全机制 265
19.2.1 安全约束 265
19.2.2 Tomcat的基于表单的身份鉴别 266
19.2.4 身份鉴别请求截听器 267
19.2.3 Tomcat的基本型身份鉴别 267
19.3 定制的用户鉴别 269
19.3.1 UserBean类 272
19.3.2 SecurityBean类 274
19.3.3 WebDocBean类 277
19.4 小结 281
第20章 用HTML表单更新数据库 282
20.1 理解HTML表单 282
20.2 在MVC应用程序中的表单 283
20.2.1 请求表单 284
20.2.2 显示表单 284
20.2.3 保存表单 284
20.2.4 确认表单 284
20.3 使用JavaBeans模拟表单 285
20.2.5 MVC表单策略 285
20.3.1 集成字段为表单 289
20.3.2 处理表单JavaBean 293
20.4 处理表单 298
20.4.1 设置表单值 299
20.4.2 编辑表单 300
20.4.3 保存表单 301
20.5 小结 301
第21章 表单和数据库 302
21.1 构造表单 302
21.1.1 单项选择按钮处理类 303
21.1.2 从表单数据设置单项选择按钮 305
21.1.3 创建TestFormBean 306
21.2 创建JSP 307
21.3 设置表数据 311
21.4 处理初始请求 312
21.4.1 ControllerServlet doGet()方法 312
21.4.2 创建JavaBean表单 316
21.4.3 传送JavaBean表单 316
21.4.4 传送至表单页面 316
21.5 确认请求 317
21.6 确认表单字段 317
21.7 保存数据 318
21.8 小结 319
第22章 用户调查 320
22.1 建立用户调查 320
22.1.1 一个调查例子 320
22.1.2 建立调查数据表 322
22.2 设计调查Bean 323
22.2.1 分类集 325
22.2.2 实现比较器 325
22.2.3 建立多项选择按钮 328
22.2.4 请求调查 329
22.2.5 重复的调查提交项 330
22.3 获得调查结果 337
22.3.1 图表化调查结果 337
22.3.2 图像编码器 343
22.3.3 保证用户知晓调查情况 345
22.4 小结 345
23.1 决定使用何种方法记录请求日志 347
23.1.1 从控制器服务器小程序中记录日志 347
第23章 收集服务器统计表 347
23.1.2 日志保存之处 348
23.1.3 日志格式 349
23.2 记录映射的请求日志 349
23.3 使用请求截听器 353
23.3.1 建立日志记录请求截听器 355
23.3.2 初始化截听器 358
23.3.3 连接处理 359
23.4 解释日志 360
23.4.1 跟踪推荐页面 360
23.4.2 计数页面请求 362
23.4.3 检查用户访问 363
23.4.4 发现遗漏文件 363
23.4.5 服务器的统计数据 364
23.5 小结 365
第24章 Struts应用程序框架 366
24.1 Struts程序包 366
24.1.1 获得Struts 367
24.1.2 安装一个二进制Struts构造系统 367
24.2 Struts的概念 368
24.3 struts-example应用程序 369
24.3.1 文件web.xml 369
24.3.2 struts-example数据库 371
24.3.3 struts-example的struts-config.xml文件 372
24.3.4 Forward元素 376
24.3.5 欢迎页面 376
24.3.6 注册表单 378
24.3.7 用ActionServlet处理请求 379
24.3.8 主菜单 380
24.4 Struts标记库 383
24.5 小结 383
附录A Struts标记库 384
A.1 在Struts中运用Bean 384
A.1.1 Struts标记的公共属性 384
A.1.2 设置Struts属性 385
A.2 Bean标记 385
A.2.1 cookie标记 385
A.2.2 define标记 386
A.2.3 header标记 386
A.2.4 include标记 386
A.2.5 message标记 386
A.2.7 parameter标记 387
A.2.6 page标记 387
A.2.8 resource标记 388
A.2.9 struts标记 388
A.2.10 write标记 388
A.3 HTML标记 388
A.3.1 base标记 388
A.3.2 errors标记 388
A.3.3 form标记 389
A.3.4 form field标记 390
A.3.5 html标记 390
A.3.6 link标记 390
A.4 Logic标记 390
A.4.1 Comparison标记 390
A.4.4 match标记 391
A.4.3 iterate标记 391
A.4.2 forward标记 391
A.4.5 notMatch标记 392
A.4.6 notPresent标记 392
A.4.7 present标记 392
A.4.8 redirect标记 392
A.5 Template标记 392
附录B Java Web开发资源 394
B.1 Servlet及JSP技术规范 394
B.2 Java开发工具 394
B.3 其他的Sun资源 395
B.4 Jakarta主页 395
B.5 下载Tomcat 395
B.5 邮件列表 396
B.6 MySQL相关的资源 396