第1章 Java EE的体系结构 1
1.1 Java EE概述 2
1.1.1 Java EE版本简介 2
1.1.2 Java EE规范简介 2
1.1.3 有问必答 4
1.2 JSP与Servlet 5
1.2.1 JSP 5
1.2.2 Servlet 5
1.2.3 有问必答 6
1.3 HTML与HTTP 6
1.3.1 HTML简介 6
1.3.2 HTTP协议 7
1.3.3 HTTP请求和响应 8
1.3.4 实践出真知 11
1.3.5 有问必答 13
1.4 搭建开发环境 13
1.4.1 JDK的安装 13
1.4.2 Web服务器的安装 15
1.4.3 数据库的安装 16
1.4.4 IDE的安装 17
1.4.5 实践出真知 19
1.4.6 有问必答 22
第2章 Servlet编程 25
2.1 Servlet概述 26
2.1.1 Servlet的基本概念 26
2.1.2 Servlet剖析 28
2.1.3 容器的功能 29
2.1.4 Servlet API 30
2.1.5 Servlet旧版本格式 31
2.1.6 有问必答 33
2.2 Servlet编程 34
2.2.1 请求和响应API 34
2.2.2 使用GET或POST请求 35
2.2.3 使用参数 37
2.2.4 请求头和响应头 38
2.2.5 文件的上传和下载 41
2.2.6 转发和重定向 43
2.2.7 实践出真知 44
2.2.8 有问必答 58
2.3 Servlet的生命周期 59
2.3.1 Servlet生命周期的几个阶段 59
2.3.2 Servlet初始化和线程 60
2.3.3 理解Servlet生命周期对编程的意义 60
2.3.4 实践出真知 61
2.3.5 有问必答 64
第3章 属性和监听器 65
3.1 属性 66
3.1.1 属性概述 66
3.1.2 属性范围 68
3.1.3 属性的线程安全 68
3.1.4 实践出真知 71
3.1.5 有问必答 77
3.2 监听器 78
3.2.1 监听器概述 78
3.2.2 监听器编程 79
3.2.3 实践出真知 83
3.2.4 有问必答 94
第4章 会话 95
4.1 会话介绍 96
4.1.1 会话的用途 96
4.1.2 会话的工作原理 96
4.1.3 有问必答 97
4.2 Cookies 98
4.2.1 什么是Cookies 98
4.2.2 Cookies的工作原理 98
4.2.3 Cookies API 99
4.2.4 Cookies的缺点 101
4.2.5 实践出真知 101
4.2.6 有问必答 106
4.3 HttpSession 107
4.3.1 HttpSession的基本概念 107
4.3.2 会话生命周期 110
4.3.3 实践出真知 112
4.3.4 有问必答 118
4.4 URL重写 119
4.4.1 URL重写的工作原理 119
4.4.2 实践出真知 121
4.4.3 有问必答 127
第5章 JSP编程 129
5.1 JSP初步 130
5.1.1 JSP简介 130
5.1.2 简单的JSP页面 130
5.1.3 JSP的工作原理 131
5.1.4 JSP的基本元素 134
5.1.5 JSP的注释 142
5.1.6 实践出真知 143
5.1.7 有问必答 150
5.2 JSP对象 151
5.2.1 对象的有效范围 151
5.2.2 JSP的隐含对象 155
5.2.3 实践出真知 166
5.2.4 有问必答 168
第6章 编写不带Java脚本元素的页面 171
6.1 JavaBeans与JSP标准动作 172
6.1.1 JavaBeans介绍 172
6.1.2 使用JSP标准动作访问JavaBeans 173
6.1.3 JSP标准动作再讨论 176
6.1.4 实践出真知 179
6.1.5 有问必答 186
6.2 表达式语言 187
6.2.1 EL剖析 187
6.2.2 EL运算符 188
6.2.3 EL函数 189
6.2.4 EL的隐含对象 190
6.2.5 Java小脚本和EL的控制 193
6.2.6 实践出真知 194
6.2.7 有问必答 211
第7章 JSTL标准标签库 213
7.1 JSTL介绍 214
7.1.1 JSTL安装与测试 214
7.1.2 JSTL标签库 215
7.1.3 有问必答 216
7.2 核心JSTL 217
7.2.1 通用标签 218
7.2.2 条件处理 221
7.2.3 循环处理 223
7.2.4 URL处理 224
7.2.5 实践出真知 227
7.2.6 有问必答 240
7.3 其他标签 240
7.3.1 其他JSTL标签 241
7.3.2 使用除JSTL外的标签库 243
7.3.3 有问必答 248
第8章 自定义标签 249
8.1 自定义标签介绍 250
8.1.1 使用自定义标签的优势 250
8.1.2 有问必答 251
8.2 标签文件 251
8.2.1 简单的标签文件 251
8.2.2 传递参数到标签文件 252
8.2.3 属性值太长的应对措施 253
8.2.4 标签文件的打包 254
8.2.5 实践出真知 254
8.2.6 有问必答 260
8.3 简单标签 261
8.3.1 构建一个简单标签的处理程序 261
8.3.2 简单标签的API 262
8.3.3 简单标签处理程序的生命周期 263
8.3.4 传递标签属性 264
8.3.5 标签体的处理 265
8.3.6 SkipPageException异常 266
8.3.7 实践出真知 267
8.3.8 有问必答 272
第9章 Web应用的开发与部署 273
9.1 Web应用开发环境和部署环境 274
9.1.1 Web应用开发环境 274
9.1.2 Web应用部署环境 275
9.1.3 部署到Web服务器 276
9.1.4 Web应用的目录和文件结构 277
9.1.5 有问必答 279
9.2 部署描述文件 280
9.2.1 部署描述文件的格式 280
9.2.2 Servlet配置 281
9.2.3 配置欢迎页面 283
9.2.4 配置错误页面 283
9.2.5 配置初始化参数 284
9.2.6 实践出真知 285
9.2.7 有问必答 290
第10章 Web应用安全 293
10.1 网络安全的概念 294
10.1.1 网络威胁与安全 294
10.1.2 Web应用的安全认证过程 295
10.1.3 有问必答 297
10.2 Tomcat安全域 297
10.2.1 安全域的概念 297
10.2.2 安全域的基本配置 298
10.2.3 常用安全域的配置步骤 300
10.2.4 实践出真知 302
10.2.5 有问必答 313
第11章 过滤器编程 315
11.1 过滤器概述 316
11.1.1 过滤器的基本概念 316
11.1.2 构建第一个过滤器 318
11.1.3 有问必答 320
11.2 过滤器编程 320
11.2.1 过滤器的编程步骤 320
11.2.2 过滤器配置 322
11.2.3 过滤器的生命周期 324
11.2.4 有问必答 324
11.3 典型的过滤器 325
11.3.1 不缓存页面过滤器 325
11.3.2 字符编码过滤器 326
11.3.3 安全检查过滤器 327
11.3.4 压缩过滤器 329
11.3.5 有问必答 335
第12章 Ajax 337
12.1 Ajax介绍 338
12.1.1 为什么使用Ajax 338
12.1.2 Ajax的技术组成 339
12.1.3 Ajax通信 340
12.1.4 实践出真知 343
12.1.5 有问必答 347
12.2 Ajax的应用示例 348
12.2.1 即时检查用户名是否可用 348
12.2.2 无刷新用户登录 352
12.2.3 搜索自动提示 355
12.2.4 有问必答 360
第13章 数据库 361
13.1 JDBC初步 362
13.1.1 JDBC驱动 362
13.1.2 JDBC API 363
13.1.3 JDBC编程 369
13.1.4 实践出真知 371
13.1.5 有问必答 375
13.2 JDBC进阶 376
13.2.1 数据库连接池 376
13.2.2 分页 380
13.2.3 二进制大对象 385
13.2.4 有问必答 389
13.3 JDBC替代品 390
13.3.1 ORM的基本概念 390
13.3.2 Hibernate 391
13.3.3 JPA 395
13.3.4 有问必答 401
第14章 MVC模式 403
14.1 MVC模式概述 404
14.1.1 MVC设计思想 404
14.1.2 JSP Modell和Mode12 405
14.1.3 有问必答 406
14.2 MVC模式实践 407
14.2.1 微型MVC 407
14.2.2 Struts 412
14.2.3 JSF 419
14.2.4 有问必答 424
附录 源代码使用说明 425
参考文献 427