第1章 Java Web技术概述 1
1.1 Internet与万维网 1
1.1.1 主机和IP地址 1
1.1.2 域名和DNS 1
1.1.3 万维网概述 2
1.1.4 服务器和浏览器 2
1.2 Web常用技术 3
1.2.1 HTTP概述 3
1.2.2 URL和URI 3
1.2.3 HTML和XML概述 4
1.2.4 CSS概述 6
1.2.5 JavaScript 8
1.3 服务器资源 10
1.3.1 主动资源与被动资源 10
1.3.2 静态文档和动态文档 10
1.3.3 服务器端动态Web文档技术 11
1.3.4 客户端动态Web文档技术 12
1.4 Tomcat服务器 12
1.4.1 Tomcat下载与安装 12
1.4.2 Tomcat的安装目录 14
1.4.3 测试Tomcat 14
1.4.4 配置Tomcat的服务端口 15
1.4.5 Tomcat的启动和停止 15
1.5 Servlet与JSP入门 16
1.5.1 Servlet 16
1.5.2 Web容器 17
1.5.3 JSP页面 18
1.6 MVC设计模式 18
1.6.1 Model 1体系结构 18
1.6.2 Model 2体系结构 18
小结 19
习题 19
第2章 Servlet技术模型 21
2.1 Servlet API 21
2.1.1 javax.servlet包 21
2.1.2 javax.servlet.http包 23
2.2 Servlet生命周期 24
2.2.1 加载和实例化Servlet 24
2.2.2 初始化Servlet 24
2.2.3 为客户提供服务 25
2.2.4 销毁和卸载Servlet 25
2.3 分析请求 25
2.3.1 HTTP请求结构 25
2.3.2 发送HTTP请求 27
2.3.3 处理HTTP请求 27
2.3.4 分析请求 28
2.3.5 请求转发 32
2.3.6 使用请求对象存储数据 33
2.3.7 实例:一个简单的考试系统 34
2.3.8 文件上传 36
2.4 发送响应 39
2.4.1 HTTP响应结构 39
2.4.2 输出流与内容类型 40
2.4.3 设置响应头 42
2.4.4 响应重定向 43
2.4.5 发送状态码和错误消息 44
2.5 Web应用程序及结构 46
2.5.1 Web应用程序 46
2.5.2 应用服务器 46
2.5.3 Web应用程序的结构 46
2.6 部署描述文件 48
2.6.1 DD文件的定义 48
2.6.2 <servlet>元素 49
2.6.3 <servlet-mapping>元素 50
2.6.4 <welcome-file-list>元素 52
2.7 @WebServlet和@WebInitParam注解 52
2.8 ServletConfig接口 53
小结 55
习题 55
第3章 Servlet容器模型 58
3.1 ServletContext接口 58
3.1.1 得到ServletContext引用 58
3.1.2 获取应用程序的初始化参数 58
3.1.3 通过ServletContext对象获得资源 59
3.1.4 登录日志 60
3.1.5 使用RequestDispatcher实现请求转发 60
3.1.6 使用ServletContext对象存储数据 60
3.1.7 检索Servlet容器的信息 61
3.2 会话管理 61
3.2.1 理解状态与会话 61
3.2.2 会话管理机制 62
3.2.3 HttpSession API 63
3.2.4 使用HttpSession对象 63
3.2.5 会话超时与失效 65
3.3 Cookie及其应用 67
3.3.1 Cookie API 67
3.3.2 向客户端发送Cookie 67
3.3.3 从客户端读取Cookie 68
3.3.4 Cookie的安全问题 69
3.3.5 实例:用Cookie实现自动登录 70
小结 71
习题 72
第4章 JSP技术模型 75
4.1 JSP语法概述 75
4.1.1 JSP脚本元素 76
4.1.2 JSP指令 77
4.1.3 JSP动作 78
4.1.4 表达式语言 78
4.1.5 JSP注释 78
4.2 JSP页面生命周期 79
4.2.1 JSP页面也是Servlet 79
4.2.2 JSP生命周期阶段 79
4.2.3 JSP生命周期方法示例 82
4.2.4 理解页面转换过程 82
4.2.5 理解转换单元 83
4.3 理解page指令属性 83
4.3.1 import属性 84
4.3.2 contentType和pageEncoding属性 84
4.3.3 session属性 84
4.3.4 errorPage与isErrorPage属性 84
4.3.5 在DD中配置错误页面 85
4.3.6 language与extends属性 86
4.3.7 buffer与autoFlush属性 86
4.3.8 info属性 86
4.4 JSP脚本元素 87
4.4.1 变量的声明及顺序 87
4.4.2 使用条件和循环语句 88
4.4.3 请求时属性表达式的使用 90
4.5 JSP隐含变量 90
4.5.1 request与response变量 91
4.5.2 out变量 91
4.5.3 application变量 92
4.5.4 session变量 92
4.5.5 pageContext变量 92
4.5.6 page变量 93
4.5.7 config变量 93
4.5.8 exception变量 93
4.6 作用域对象 94
4.6.1 应用作用域 94
4.6.2 会话作用域 94
4.6.3 请求作用域 95
4.6.4 页面作用域 95
4.7 JSP组件包含 97
4.7.1 静态包含:include指令 97
4.7.2 动态包含:include动作 98
4.7.3 使用<jsp:forward>动作 101
4.7.4 实例:使用包含设计页面布局 101
4.8 JavaBeans 103
4.8.1 JavaBeans规范 103
4.8.2 使用<jsp:useBean>动作 105
4.8.3 使用<jsp:setProperty>动作 106
4.8.4 使用<jsp:getProperty>动作 108
4.8.5 JavaBeans应用示例 108
4.8.6 实现MVC模式的一般步骤 110
小结 111
习题 112
第5章 表达式语言 115
5.1 理解表达式语言 115
5.1.1 表达式语言的调用 115
5.1.2 表达式语言的功能 115
5.1.3 表达式语言与JSP表达式的区别 116
5.2 使用EL运算符 116
5.2.1 算术运算符 116
5.2.2 关系与逻辑运算符 117
5.2.3 条件运算符 118
5.2.4 empty运算符 118
5.2.5 属性与集合元素访问运算符 118
5.3 使用EL访问数据 119
5.3.1 访问作用域变量 119
5.3.2 访问JavaBeans属性 120
5.3.3 访问集合元素 123
5.3.4 访问EL的隐含变量 125
小结 128
习题 128
第6章 JSP标签技术 130
6.1 自定义标签的开发 130
6.1.1 标签扩展API 130
6.1.2 自定义标签的开发步骤 130
6.1.3 SimpleTag接口及其生命周期 132
6.1.4 SimpleTagSupport类 133
6.2 理解TLD文件 134
6.2.1 <taglib>元素 134
6.2.2 <uri>元素 135
6.2.3 <tag>元素 136
6.2.4 <attribute>元素 137
6.2.5 <body-content>元素 137
6.3 几种类型标签的开发 138
6.3.1 空标签的开发 138
6.3.2 带属性标签的开发 139
6.3.3 带标签体的标签 141
6.3.4 迭代标签 143
6.3.5 在标签中使用EL 144
6.3.6 使用动态属性 147
6.3.7 编写协作标签 149
6.4 JSP标准标签库 151
6.4.1 JSTL概述 151
6.4.2 JSTL核心标签库 152
6.4.3 通用目的标签 152
6.4.4 条件控制标签 155
6.4.5 循环控制标签 156
6.4.6 URL相关的标签 160
小结 162
习题 162
第7章 JDBC数据库访问 167
7.1 JDBC技术概述 167
7.1.1 数据库访问的两层和三层模型 167
7.1.2 JDBC驱动程序 168
7.1.3 安装JDBC驱动程序 168
7.2 传统的数据库连接方法 169
7.2.1 加载驱动程序 169
7.2.2 建立连接对象 169
7.2.3 创建语句对象 171
7.2.4 获得SQL语句的执行结果 171
7.2.5 关闭建立的对象 171
7.2.6 简单的应用示例 171
7.3 JDBC API介绍 176
7.3.1 Connection接口 176
7.3.2 Statement接口 176
7.3.3 ResultSet接口 177
7.3.4 可滚动与可更新的ResultSet 178
7.4 预处理语句 180
7.4.1 创建PreparedStatement对象 180
7.4.2 使用PreparedStatement对象 181
7.5 连接池与数据源 182
7.5.1 连接池与数据源介绍 182
7.5.2 配置数据源 183
7.6 DAO设计模式 185
7.6.1 设计传输对象 185
7.6.2 设计DAO对象 186
7.6.3 使用DAO对象 188
小结 189
习题 189
第8章 Servlet高级应用 191
8.1 Web监听器 191
8.1.1 监听ServletContext事件 191
8.1.2 监听请求事件 194
8.1.3 监听会话事件 195
8.1.4 事件监听器的注册 199
8.2 Web过滤器 199
8.2.1 什么是过滤器 199
8.2.2 过滤器API 200
8.2.3 一个简单的过滤器 201
8.2.4 @WebFilter注解 202
8.2.5 在DD中配置过滤器 204
8.3 Servlet的多线程问题 206
8.4 Servlet的异步处理 209
8.4.1 概述 209
8.4.2 异步调用Servlet的开发 210
8.4.3 实现AsyncListener接口 211
小结 213
习题 213
第9章 Web安全性入门 216
9.1 Web安全性措施 216
9.1.1 理解验证机制 216
9.1.2 验证的类型 217
9.1.3 基本验证的过程 217
9.1.4 声明式安全与编程式安全 218
9.2 安全域模型 218
9.2.1 安全域概述 218
9.2.2 定义角色与用户 219
9.3 定义安全约束 220
9.3.1 安全约束定义 220
9.3.2 安全验证示例 222
9.4 编程式的安全 225
小结 227
习题 227
第10章 AJAX技术基础 230
10.1 Web 2.0与AJAX技术概述 230
10.1.1 什么是AJAX 230
10.1.2 AJAX相关技术简介 230
10.2 XMLHttpRequest对象 232
10.2.1 创建XMLHttpRequest对象 232
10.2.2 XMLHttpRequest的属性 233
10.2.3 XMLHttpRequest的方法 233
10.2.4 一个简单的示例 234
10.2.5 AJAX的交互模式 234
10.2.6 使用innerHTML属性创建动态内容 236
10.3 DOM和JavaScript 238
10.3.1 什么是DOM 238
10.3.2 DOM与JavaScript 238
10.3.3 使用DOM动态编辑页面 240
10.3.4 发送请求参数 243
10.4 AJAX的常用应用 244
10.4.1 表单数据验证 244
10.4.2 动态加载列表框 245
10.4.3 创建工具提示 248
10.4.4 动态更新Web页面 251
小结 255
习题 256
第11章 Hibernate框架基础 257
11.1 ORM与Hibernate 257
11.1.1 数据持久化与ORM 257
11.1.2 Hibernate软件包简介 257
11.2 第一个Hibernate程序 258
11.2.1 准备数据库表 258
11.2.2 定义持久化类 258
11.2.3 定义映射文件 260
11.2.4 编写配置文件 260
11.2.5 编写测试程序 261
11.2.6 Hibernate的自动建表技术 262
11.2.7 HibernateUtil辅助类 263
11.2.8 测试类的开发 264
11.3 Hibernate框架结构 265
11.3.1 Hibernate的体系结构 265
11.3.2 理解持久化对象 265
11.3.3 Hibernate的核心组件 265
11.3.4 持久化对象的状态 266
11.4 Hibernate核心API 266
11.4.1 Configuration类 266
11.4.2 SessionFactory接口 267
11.4.3 Session接口 267
11.4.4 Transaction接口 269
11.4.5 Query接口 269
11.5 映射文件详解 270
11.6 配置文件详解 272
11.6.1 hibernate.properties 272
11.6.2 hibernate.cfg.xml 273
11.7 关联映射 275
11.7.1 实体关联类型 275
11.7.2 单向关联和双向关联 275
11.7.3 关联方向与查询 275
11.7.4 一对多关联映射 275
11.7.5 一对一关联映射 279
11.7.6 多对多关联映射 281
11.8 组件属性映射 284
11.9 继承映射 286
11.9.1 所有类映射成一张表 286
11.9.2 每个子类映射成一张表 287
11.9.3 每个具体类映射成一张表 288
11.10 Hibernate数据查询 289
11.10.1 HQL查询概述 289
11.10.2 查询结果处理 289
11.10.3 HQL的from子句 290
11.10.4 HQL的select子句 290
11.10.5 HQL的聚集函数 291
11.10.6 HQL的where子句 291
11.10.7 HQL的order by子句 292
11.10.8 HQL的group by子句 292
11.10.9 带参数的查询 292
11.10.10 关联和连接 293
11.11 其他查询技术 293
11.11.1 条件查询 293
11.11.2 本地SQL查询 295
11.11.3 命名查询 295
小结 296
习题 296
第12章 Struts 2框架基础 297
12.1 Struts 2框架概述 297
12.1.1 Struts 2框架的组成 297
12.1.2 Struts 2开发环境的构建 298
12.1.3 Struts 2应用的开发步骤 299
12.1.4 一个简单的应用程序 300
12.1.5 动作类 303
12.1.6 配置文件 306
12.1.7 模型驱动和属性驱动 310
12.2 注册登录系统 310
12.2.1 定义持久化类 310
12.2.2 持久层实现 311
12.2.3 定义Action动作类 311
12.2.4 创建结果视图 312
12.2.5 修改struts.xml配置文件 314
12.2.6 运行应用程序 314
12.3 OGNL 315
12.3.1 ValueStack栈 315
12.3.2 读取Object Stack中对象的属性 316
12.3.3 读取Stack Context中对象的属性 317
12.3.4 使用OGNL访问数组元素 318
12.3.5 使用OGNL访问List类型的属性 318
12.3.6 使用OGNL访问Map类型的属性 318
12.4 Struts 2常用标签 319
12.4.1 常用数据标签 319
12.4.2 控制标签 324
12.4.3 表单UI标签 331
12.4.4 模板与主题 335
12.5 用户输入校验 336
12.5.1 使用Struts 2校验框架 336
12.5.2 使用客户端校验 339
12.5.3 编程实现校验 340
12.5.4 使用Java注解校验 341
12.6 Struts 2的国际化 341
12.6.1 国际化 342
12.6.2 属性文件 342
12.6.3 属性文件的级别 342
12.6.4 Action的国际化 343
12.6.5 JSP页面国际化 344
12.6.6 实例:Action属性文件应用 345
12.6.7 实例:全局属性文件应用 346
12.7 用Tiles实现页面布局 347
12.7.1 安装所需的工具和库 347
12.7.2 在web.xml中配置Tiles 347
12.7.3 创建模板页面 348
12.7.4 创建titles.xml定义文件 349
12.7.5 创建LoginAction类 350
12.7.6 创建struts.xml文件 350
12.7.7 创建JSP页面 351
12.7.8 运行应用程序 352
小结 352
习题 352
参考文献 354