第1章 Java服务器小程序 1
1.1 Servlet简介 2
1.1.1 服务器端的职责 2
1.1.2 服务器端的扩展 2
1.2 Servlet容器 4
1.2.1 概览 4
1.2.2 Servlet容器 5
1.2.3 Tomcat简介 7
1.3 一个Servlet示例 21
1.3.1 编码 21
1.3.2 编译 22
1.3.3 部署 22
1.3.4 运行 22
1.4 Servlet应用开发接口 23
1.4.1 javax.servlet包 24
1.4.2 javax.servlet.http包 25
1.4.3 Servlet应用开发接口优缺点 25
1.5 小结 26
第2章 Java服务器页面 27
2.1 JSP简介 28
动态网页技术 28
2.2 第一个JSP程序 28
2.2.1 HTML源码 29
2.2.2 Servlet源码 29
2.2.3 JSP源码 30
2.3 Servlet和JSP的比较 31
2.4 JSP架构模式 31
2.4.1 JSP+JavaBean模式 31
2.4.2 JSP+Servlet+JavaBean模式 32
2.5 JSP语法简介 33
2.6 小结 34
第3章 Web应用程序基础 35
3.1 Web应用程序 36
3.1.1 B/S结构 36
3.1.2 Web资源 39
3.1.3 Web结构 40
3.2 HTTP协议 40
3.2.1 HTTP协议基础 41
3.2.2 HTTP请求 42
3.2.3 HTTP响应 43
3.3 小结 44
第4章 Servlet模型 45
4.1 发送请求 46
4.1.1 HTTP请求 46
4.1.2 HTTP方法比较 46
4.2 处理请求 47
4.3 解析请求 48
4.3.1 ServletRequest接口 48
4.3.2 HttpServletRequest接口 49
4.4 返回响应 50
4.4.1 ServletResponse接口 51
4.4.2 HttpServletResponse接口 53
4.5 Servlet生命周期 56
4.5.1 装载、实例化 56
4.5.2 初始化 57
4.5.3 请求处理 57
4.5.4 销毁 58
4.5.5 卸载 58
4.5.6 容器管理 58
4.6 ServletConfig接口 59
4.6.1 方法 59
4.6.2 示例 60
4.7 ServletContext接口 62
4.8 Servlet进阶 65
4.8.1 数据共享 65
4.8.2 转发 66
4.8.3 访问请求作用域属性 67
4.8.4 综合示例 68
4.9 小结 73
第5章 Web应用程序结构和部署 75
5.1 Web应用程序结构 76
5.1.1 根目录 77
5.1.2 Web-INF目录 77
5.1.3 WAR文件 77
5.1.4 资源文件和HTML页面 78
5.1.5 默认的Web应用程序 78
5.2 部署描述符 78
5.2.1 一个简单示例 79
5.2.2 〈servlet〉元素 80
5.2.3 〈servlet-mapping〉元素 82
5.2.4 Servlet的URL映射 83
5.3 小结 86
第6章 Servlet容器模型 87
6.1 初始化ServletContext 88
6.2 监听作用域内属性 89
6.2.1 添加、删除属性 89
6.2.2 监听属性事件 90
6.3 Servlet生命周期事件 91
6.3.1 javax.servlet.ServletContextListener 91
6.3.2 javax.servlet.Http.HttpSessionListener 95
6.3.3 javax.servlet.Http.HttpServletRequestListener 95
6.4 配置Web应用程序属性 98
6.5 分布式环境下的Web应用程序 99
6.5.1 ServletContext行为 99
6.5.2 HttpSession行为 100
6.6 小结 100
第7章 过滤器 101
7.1 过滤器简介 102
7.1.1 过滤器的执行 103
7.1.2 过滤器的用途 103
7.1.3 过滤器的示例 104
7.2 过滤器API 106
7.2.1 Filter接口 107
7.2.2 FilterConfig接口 110
7.2.3 FilterChain接口 112
7.2.4 请求、响应的封装类 112
7.3 配置过滤器 113
7.3.1 〈filter〉元素 113
7.3.2 〈filter-mapping〉元素 113
7.3.3 配置过滤器链 114
7.4 过滤器进阶 117
7.4.1 使用请求、响应的封装类 117
7.4.2 使用过滤器注意事项 121
7.4.3 过滤器与MVC模式 122
7.5 小结 122
第8章 会话管理 123
8.1 状态与会话 124
8.2 使用HttpSession对象 125
8.2.1 HttpSession对象 125
8.2.2 会话监听器 127
8.2.3 会话失效 135
8.3 会话超时 135
8.4 会话实现 136
8.4.1 使用Cookie实现会话 137
8.4.2 使用URL实现会话 137
8.5 小结 140
第9章 安全的Web应用程序 141
9.1 基本概念 142
9.1.1 认证 142
9.1.2 授权 142
9.1.3 数据完整性 142
9.1.4 数据私密性 142
9.1.5 审核 143
9.1.6 恶意代码 143
9.1.7 网站攻击 143
9.2 认证机制 143
9.2.1 HTTP基本认证 144
9.2.2 HTTP摘要认证 145
9.2.3 HTTPS客户认证 145
9.2.4 HTTP表单认证 145
9.2.5 定制认证机制 146
9.3 安全声明 148
9.3.1 display-name元素 148
9.3.2 web-resource-collection元素 149
9.3.3 auth-constraint元素 149
9.3.4 user-data-constraint元素 150
9.3.5 综合示例 151
9.4 安全编程 154
9.5 小结 156
第10章 JSP模型基础 157
10.1 JSP页面元素 158
10.1.1 伪指令 161
10.1.2 声明 166
10.1.3 脚本 168
10.1.4 表达式 170
10.1.5 动作指令 172
10.1.6 注释 172
10.2 JSP页面生命周期 173
10.2.1 JSP的Servlet本质 173
10.2.2 JSP页面集成 174
10.2.3 JSP生命周期阶段 174
10.2.4 JS生命周期示例 177
10.3 page伪指令属性 179
10.3.1 import属性 180
10.3.2 session属性 181
10.3.3 errorPage和isErrorPage属性 181
10.3.4 language和extends属性 182
10.3.5 buffer和autoFlush属性 183
10.3.6 info属性 183
10.3.7 contentType和pageEncoding属性 183
10.4 小结 184
第11章 JSP模型进阶 185
11.1 JSP转换Servlet 186
11.1.1 使用脚本元素 186
11.1.2 使用逻辑控制 188
11.1.3 使用请求属性表达式 191
11.1.4 使用转义序列 191
11.2 JSP内置对象 193
11.2.1 application对象 195
11.2.2 session对象 198
11.2.3 request和response对象 200
11.2.4 page对象 203
11.2.5 pageContext对象 204
11.2.6 out对象 207
11.2.7 config对象 210
11.2.8 exception对象 213
11.3 JSP作用域 215
11.3.1 Application作用域 216
11.3.2 Session作用域 218
11.3.3 Request作用域 222
11.3.4 Page作用域 223
11.4 JSP文档 224
11.4.1 根元素 225
11.4.2 XML风格的伪指令和脚本元素 225
11.4.3 XML风格的文本、注释和动作指令 226
11.5 小结 226
第12章 Web组件复用 227
12.1 静态包含 228
12.1.1 访问变量 230
12.1.2 静态包含规则 231
12.2 动态包含 231
12.2.1 include动作指令 231
12.2.2 forward动作指令 235
12.2.3 参数传递 238
12.2.4 使用内置对象 242
12.3 小结 244
第13章 表达式语言 245
13.1 表达式语言简介 246
13.1.1 EL表达式与JSP表达式比较 246
13.1.2 在EL表达式中使用内置对象 247
13.2 表达式语言运算符 250
13.2.1 属性与集合访问运算符 250
13.2.2 算术运算符 250
13.2.3 关系与逻辑运算符 251
13.2.4 示例 253
13.3 表达式语言函数 254
13.3.1 创建静态方法 254
13.3.2 创建标签库描述符 255
13.3.3 修改部署描述符 256
13.3.4 JSP中访问表达式语言函数 257
13.3.5 示例 258
13.4 小结 261
第14章 使用JavaBean组件 263
14.1 JavaBean简介 264
14.1.1 JSP中的JavaBan 264
14.1.2 JavaBean优势 266
14.1.3 序列化JavaBean 268
14.2 JSP中使用JavaBean 270
14.2.1 useBean动作指令 270
14.2.2 setProperty动作指令 281
14.2.3 getProperty动作指令 284
14.2.4 示例 285
14.3 Servlet中使用JavaBean 289
14.4 脚本中使用JavaBean 291
14.5 深入了解JavaBean属性 292
14.5.1 非字符串属性 292
14.5.2 索引属性 294
14.6 一个示例 296
14.7 小结 306
第15章 使用定制标签 307
15.1 定制标签简介 308
15.1.1 基本概念 308
15.1.2 标签库 309
15.2 引用定制标签库 309
15.2.1 定位TLD文件 311
15.2.2 映射TLD文件 311
15.2.3 配置TLD文件 312
15.2.4 解析TLD文件 313
15.2.5 标签库前缀 313
15.3 使用定制标签 314
15.3.1 空标签体的定制标签 314
15.3.2 带属性的定制标签 316
15.3.3 带JSP代码的定制标签 317
15.3.4 带嵌套的定制标签 318
15.4 使用JSTL 319
15.4.1 安装JSTL 319
15.4.2 一般用途的JSTL标签 319
15.4.3 属性用途的JSTL标签 322
15.4.4 控制用途的JSTL标签 324
15.5 小结 333
第16章 标准标签库 335
16.1 标签库描述符 336
16.1.1 〈taglib〉元素 337
16.1.2 〈tag〉元素 338
16.1.3 〈attribute〉元素 339
16.1.4 〈body-content〉元素 340
16.2 标签应用开发接口 342
16.3 Tag接口 344
16.3.1 Tag接口方法 344
16.3.2 打印输出HTML文本空标签 350
16.3.3 接收属性的空标签 352
16.3.4 非空标签 353
16.4 IterationTag接口 355
16.4.1 IterationTag接口方法 355
16.4.2 示例 356
16.5 BodyTag接口 359
16.5.1 BodyTag接口方法 359
16.5.2 示例 361
16.6 TagSupport和BodyTagSupport类 363
16.6.1 TagSupport类 363
16.6.2 BodyTagSupport类 366
16.6.3 访问内置对象 369
16.6.4 协作标签 373
16.7 标签与JavaBean区别 381
16.8 小结 381
第17章 简单标签 383
17.1 简单标签简介 384
17.1.1 示例 384
17.1.2 SimpleTag接口和SimpleTagSupport类声明 385
17.2 使用简单标签 387
17.2.1 空标签体的简单标签 387
17.2.2 带属性的简单标签 389
17.2.3 带标签体的简单标签 392
17.3 使用标签文件 393
17.3.1 标签文件 393
17.3.2 标签文件与部署描述符 394
17.3.3 标签文件伪指令 395
17.3.4 处理内容体标签动作指令 397
17.4 小结 400
第18章 设计模式 401
18.1 设计模式 402
18.1.1 模式的形成历史 402
18.1.2 什么是J2EE 402
18.2 J2EE经典设计模式 408
18.2.1 模式模板 408
18.2.2 截取过滤器模式 409
18.2.3 MVC模式 410
18.2.4 前端控制器模式 412
18.2.5 服务定位器模式 413
18.2.6 业务代表模式 414
18.2.7 传递对象模式 416
18.3 小结 419
第19章 部署描述符 421
19.1 定义头和根元素 422
19.2 部署描述符文件内的元素次序 422
19.3 定义servlet 423
19.3.1 分配名称 423
19.3.2 定义定制的URL 425
19.3.3 命名JSP页面 426
19.4 禁止激活器servlet 427
19.4.1 指令 428
19.4.2 全局禁止激活器 429
19.5 初始化及预装载servlet与JSP页面 430
19.5.1 分配servlet初始化参数 430
19.5.2 分配JSP初始化参数 432
19.5.3 应用范围内的初始化参数 434
19.5.4 服务器启动时装载servlet 434
19.6 声明过滤器 435
19.7 指定欢迎页 438
19.8 指定处理错误的页面 438
19.8.1 error-code元素 439
19.8.2 exception-type元素 440
19.9 提供安全性 442
19.9.1 指定验证的方法 442
19.9.2 限制对Web资源的访问 444
19.9.3 分配角色名 445
19.10 控制会话超时 446
19.11 Web应用的文档化 446
19.12 关联文件与MIME类型 447
19.13 定位TLD 447
19.14 指定应用事件监听程序 448
19.15 J2EE元素 449
19.16 一个示例 450
19.17 小结 457