本书详细介绍了基于Java的Web编程技术,主要内容包括:Web技术基础;Servlet技术模型和Servlet容器模型;JSP的各种元素、生命周期、作用域对象等;Web应用开发中组件重用技术;表达式语言的使用,标准标签库和自定义标签以及标签文件的使用等;Web应用的事件处理与过滤器的应用以及安全性等问题;最后介绍了Struts框架和Ajax技术。 本书较全面地介绍了应用Java技术开发Web应用的发展特性,涉及了当前应用广泛的开发规范,结构清晰,应用实例丰富,实现了理论学习和实际应用的充分结合。本书每章提供了一定数量的习题,供读者复习参考。 本书可作为高等学校计算机及相关专业Web编程技术课程的教材,也可供从事基于Java的Web应用开发技术人员学习参考,同时也可作Java Web开发员国际认证考试的备考材料和培训教材。
目录
- 第1章 Web应用概述 1
- 1.1 Web应用体系结构 1
- 1.1.1 WWW概述 1
- 1.1.2 服务器和浏览器 2
- 1.2 服务器的安装与配置 2
- 1.2.1 安装Tomcat 3
- 1.2.2 查看Tomcat的安装目录 3
- 1.2.3 测试Tomcat 5
- 1.2.4 修改Tomcat的端口 6
- 1.2.5 打开Servlet重新载入功能 6
- 1.2.6 Tomcat服务器的启动和停止 6
- 1.3 HTTP基础 7
- 1.3.1 理解HTTP协议 7
- 1.3.2 URL和URI 8
- 1.3.3 HTML概述 9
- 1.4 动态Web文档技术 13
- 1.4.1 静态Web文档和动态Web文档 13
- 1.4.2 服务器端动态Web文档技术 14
- 1.4.3 客户端动态Web文档技术 15
- 1.5 Servlet与JSP入门 17
- 1.5.1 什么是Servlet 17
- 1.5.2 什么是Servlet容器 18
- 1.5.3 Servlet的开发 18
- 1.5.4 错误处理 21
- 1.5.5 Servlet的优缺点 21
- 1.5.6 什么是JSP页面 22
- 1.5.7 使用Servlet还是JSP 23
- 1.6 小结 24
- 习题 24
- 第2章 Servlet技术模型 26
- 2.1 Servlet API 26
- 2.1.1 javax.servlet包 26
- 2.1.2 javax.servlet.http包 28
- 2.2 Servlet的执行过程和生命周期 30
- 2.2.1 Servlet的执行过程 30
- 2.2.2 Servlet的生命周期 30
- 2.3 分析请求 32
- 2.3.1 HTTP请求结构 32
- 2.3.2 发送请求 34
- 2.3.3 处理HTTP请求 34
- 2.3.4 分析请求 35
- 2.3.5 请求转发 44
- 2.3.6 使用请求对象存储数据 45
- 2.4 发送响应 46
- 2.4.1 HTTP响应结构 46
- 2.4.2 理解ServletResponse 47
- 2.4.3 理解HttpServletResponse 50
- 2.4.4 发送状态码和错误消息 54
- 2.5 小结 55
- 习题 55
- 第3章 Servlet容器模型 59
- 3.1 Web应用的结构和部署 59
- 3.1.1 Web应用程序 59
- 3.1.2 应用服务器 59
- 3.1.3 Web应用程序的目录结构 60
- 3.2 部署描述文件 62
- 3.2.1 一个简单的DD 62
- 3.2.2 DD文件的定义 63
- 3.2.3 <servlet>元素 64
- 3.2.4 <servlet-mapping>元素 65
- 3.2.5 <welcome-file-list>元素 67
- 3.3 ServletConfig接口 68
- 3.4 ServletContext接口 71
- 3.4.1 得到ServletContext引用 71
- 3.4.2 获取应用程序的初始化参数 71
- 3.4.3 通过ServletContext对象获得资源 72
- 3.4.4 登录日志 73
- 3.4.5 使用RequestDispatcher实现请求转发 73
- 3.4.6 使用ServletContext对象存储数据 74
- 3.4.7 检索Servlet容器的信息 74
- 3.5 Servlet的多线程问题 75
- 3.6 一个综合实例 78
- 3.7 小结 83
- 习题 83
- 第4章 会话管理 86
- 4.1 会话管理 86
- 4.1.1 理解状态与会话 86
- 4.1.2 会话管理机制 87
- 4.1.3 HttpSession接口 88
- 4.1.4 使用HttpSession对象 89
- 4.1.5 会话超时与失效 91
- 4.2 通过Cookie支持会话 94
- 4.2.1 Cookie API 94
- 4.2.2 向客户端发送Cookie 94
- 4.2.3 从客户端读取Cookie 95
- 4.2.4 Cookie的安全问题 97
- 4.3 URL重写与隐藏表单域 100
- 4.3.1 URL重写 100
- 4.3.2 隐藏表单域 102
- 4.4 小结 102
- 习题 102
- 第5章 JSP技术模型 106
- 5.1 JSP语法概述 106
- 5.1.1 JSP脚本元素 107
- 5.1.2 指令 109
- 5.1.3 JSP动作 110
- 5.1.4 表达式语言EL 111
- 5.1.5 JSP注释 111
- 5.2 JSP页面生命周期 112
- 5.2.1 JSP页面也是Servlet 112
- 5.2.2 理解转换单元 112
- 5.2.3 JSP生命周期阶段 112
- 5.2.4 JSP生命周期方法示例 115
- 5.3 理解page指令属性 117
- 5.3.1 import属性 117
- 5.3.2 contentType与pageEncoding属性 118
- 5.3.3 session属性 118
- 5.3.4 errorPage与isErrorPage属性 119
- 5.3.5 在DD中配置错误页面 120
- 5.3.6 language与extends属性 121
- 5.3.7 buffer与autoFlush属性 121
- 5.3.8 info属性 121
- 5.4 JSP进阶 122
- 5.4.1 理解页面转换过程 122
- 5.4.2 使用脚本元素 122
- 5.4.3 使用条件和循环语句 124
- 5.4.4 请求时属性表达式的使用 126
- 5.5 JSP隐含变量 127
- 5.5.1 request与response变量 128
- 5.5.2 out变量 128
- 5.5.3 application变量 129
- 5.5.4 session变量 129
- 5.5.5 pageContext变量 130
- 5.5.6 page变量 130
- 5.5.7 config变量 131
- 5.5.8 exception变量 132
- 5.6 理解作用域对象 132
- 5.6.1 应用作用域 133
- 5.6.2 会话作用域 133
- 5.6.3 请求作用域 134
- 5.6.4 页面作用域 135
- 5.7 小结 136
- 习题 137
- 第6章 Web组件重用与JavaBeans 143
- 6.1 静态包含 143
- 6.1.1 使用include指令 143
- 6.1.2 从被包含的页面中访问变量 144
- 6.1.3 静态包含的限制 145
- 6.1.4 使用包含设计页面布局 145
- 6.2 动态包含 147
- 6.2.1 使用<jsp:include>动作 147
- 6.2.2 使用<jsp:param>传递参数 149
- 6.2.3 与动态包含的组件共享对象 149
- 6.2.4 使用<jsp:forward>动作 150
- 6.3 在JSP中包含Java Applet 152
- 6.3.1 使用<jsp:plugin>动作 152
- 6.3.2 使用<jsp:param>和<jsp:params>动作 153
- 6.3.3 使用<jsp:fallback>动作 153
- 6.4 JavaBeans概述 156
- 6.4.1 什么是JavaBeans 156
- 6.4.2 序列化JavaBeans 158
- 6.5 在JSP中使用JavaBeans 160
- 6.5.1 使用<jsp:useBean>动作 160
- 6.5.2 使用<jsp:setProperty>动作 164
- 6.5.3 使用<jsp:getProperty>动作 166
- 6.6 在Servlet中使用JavaBeans 167
- 6.7 在JSP脚本中使用JavaBeans 169
- 6.8 MVC设计模式 170
- 6.8.1 Model 1体系结构 170
- 6.8.2 Model 2体系结构 171
- 6.8.3 实现MVC模式的一般步骤 172
- 6.9 小结 173
- 习题 174
- 第7章 JDBC数据库访问 177
- 7.1 PostgreSQL数据库简介 177
- 7.1.1 PostgreSQL的下载和安装 177
- 7.1.2 使用pgAdmin Ⅲ操作数据库 179
- 7.1.3 使用psql工具操作数据库 182
- 7.2 Java数据库技术概述 184
- 7.2.1 数据库访问的两层和三层模型 184
- 7.2.2 JDBC驱动程序 185
- 7.2.3 安装JDBC驱动程序 185
- 7.3 传统的数据库连接方法 186
- 7.3.1 加载驱动程序 186
- 7.3.2 建立连接对象 187
- 7.3.3 创建语句对象 189
- 7.3.4 获得SQL语句的执行结果 189
- 7.3.5 关闭建立的对象 189
- 7.3.6 简单的应用示例 189
- 7.4 JDBC API介绍 193
- 7.4.1 Connection接口 194
- 7.4.2 Statement接口 194
- 7.4.3 ResultSet接口 195
- 7.4.4 可滚动与可更新的ResultSet 196
- 7.5 访问数据库元数据 199
- 7.5.1 获取数据库的信息 199
- 7.5.2 获取结果集的信息 199
- 7.6 预处理语句 200
- 7.6.1 创建PreparedStatement对象 200
- 7.6.2 使用PreparedStatement对象 200
- 7.7 使用数据源连接数据库 202
- 7.7.1 数据源与连接池介绍 202
- 7.7.2 配置数据源 203
- 7.8 DAO设计模式介绍 207
- 7.8.1 设计传输对象 207
- 7.8.2 设计DAO对象 208
- 7.8.3 DAO对象应用 211
- 7.9 可调用语句 212
- 7.9.1 存储过程和函数 212
- 7.9.2 创建可调用语句 213
- 7.9.3 调用存储过程 215
- 7.10 数据库事务处理 217
- 7.10.1 事务的基本概念 217
- 7.10.2 JDBC事务管理API 218
- 7.10.3 事务的并发操作与隔离 219
- 7.11 小结 221
- 习题 221
- 第8章 使用表达式语言 223
- 8.1 理解表达式语言 223
- 8.1.1 表达式语言的调用 223
- 8.1.2 表达式语言的功能 224
- 8.1.3 表达式语言与JSP表达式的区别 224
- 8.2 使用EL运算符 225
- 8.2.1 EL算术运算符 225
- 8.2.2 EL关系与逻辑运算符 226
- 8.2.3 条件运算符 226
- 8.2.4 empty运算符 227
- 8.2.5 属性与集合元素访问运算符 227
- 8.3 使用EL访问数据 229
- 8.3.1 访问作用域变量 229
- 8.3.2 访问JavaBeans属性 231
- 8.3.3 访问集合元素 234
- 8.3.4 在EL中访问隐含变量 236
- 8.4 在EL中使用函数 240
- 8.4.1 创建静态(static)方法 240
- 8.4.2 创建标签库描述文件 241
- 8.4.3 在JSP中访问EL函数 242
- 8.5 在JSP页面中禁用EL 243
- 8.5.1 禁用整个Web应用的EL 243
- 8.5.2 禁用多个页面使用EL 244
- 8.5.3 禁用个别页面使用EL 244
- 8.6 小结 244
- 习题 245
- 第9章 自定义标签的开发 247
- 9.1 简单标签的开发 247
- 9.1.1 标签扩展API 247
- 9.1.2 自定义标签的开发步骤 248
- 9.1.3 SimpleTag接口及其生命周期 251
- 9.1.4 SimpleTagSupport类 252
- 9.2 理解TLD文件 253
- 9.2.1 <taglib>元素 253
- 9.2.2 <uri>元素 254
- 9.2.3 <tag>元素 255
- 9.2.4 <attribute>元素 256
- 9.2.5 <body-content>元素 256
- 9.3 几种类型标签的开发 258
- 9.3.1 空标签的开发 258
- 9.3.2 带属性标签的开发 260
- 9.3.3 带标签体的标签 262
- 9.3.4 迭代的标签和EL的使用 265
- 9.3.5 使用动态属性 268
- 9.3.6 编写协作标签 270
- 9.4 传统的自定义标签 274
- 9.4.1 理解Tag接口的方法 274
- 9.4.2 一个简单示例 276
- 9.5 IterationTag接口与TagSupport类 279
- 9.5.1 IterationTag接口 279
- 9.5.2 TagSupport类 280
- 9.6 BodyTag接口与BodyTagSupport类 280
- 9.6.1 BodyTag接口 280
- 9.6.2 BodyTagSupport类 282
- 9.7 小结 283
- 习题 283
- 第10章 JSTL与标签文件 287
- 10.1 JSP标准标签库 287
- 10.2 核心标签库 288
- 10.2.1 通用目的标签 289
- 10.2.2 条件控制标签 292
- 10.2.3 循环控制标签 293
- 10.2.4 URL相关的标签 297
- 10.3 其他JSTL标签库 301
- 10.3.1 SQL标签库 301
- 10.3.2 国际化和格式化库 305
- 10.3.3 XML标签库 305
- 10.3.4 函数库 305
- 10.4 使用标签文件 306
- 10.4.1 标签文件介绍 307
- 10.4.2 使用标签文件指令 308
- 10.4.3 使用标签文件动作 312
- 10.5 小结 315
- 习题 315
- 第11章 Web事件处理与过滤器 317
- 11.1 Web应用的事件模型 317
- 11.1.1 事件与监听器接口 317
- 11.1.2 监听Servlet上下文事件 317
- 11.1.3 监听请求事件 321
- 11.1.4 监听会话事件 323
- 11.1.5 事件监听器的注册 328
- 11.2 Web应用的过滤器 328
- 11.2.1 什么是过滤器 328
- 11.2.2 过滤器API 330
- 11.2.3 一个简单的过滤器 331
- 11.2.4 配置过滤器 334
- 11.3 小结 337
- 习题 337
- 第12章 Web应用的安全性 340
- 12.1 理解验证机制 340
- 12.1.1 Web安全性措施 340
- 12.1.2 验证的类型 341
- 12.1.3 基本验证的过程 342
- 12.1.4 声明式安全与程序式安全 343
- 12.2 安全域模型 343
- 12.2.1 安全域概述 343
- 12.2.2 定义角色与用户 344
- 12.3 定义安全约束 347
- 12.3.1 安全约束定义 347
- 12.3.2 安全验证示例 350
- 12.4 程序式的安全 354
- 12.5 小结 357
- 习题 358
- 第13章 Struts框架基础 360
- 13.1 Struts框架入门 360
- 13.1.1 安装Struts库文件 360
- 13.1.2 Struts框架组成 360
- 13.1.3 Struts框架中的MVC 361
- 13.1.4 在DD中配置ActionServlet 362
- 13.1.5 Struts请求处理过程 363
- 13.2 一个简单的Struts应用 363
- 13.2.1 模型组件的开发 364
- 13.2.2 视图组件的开发 364
- 13.2.3 控制器Action类的开发 366
- 13.2.4 Struts配置文件 369
- 13.3 使用表单bean验证数据 371
- 13.3.1 创建资源文件 371
- 13.3.2 创建表单bean 371
- 13.3.3 ActionErrors类与ActionMessage类 373
- 13.3.4 创建Action动作类 373
- 13.3.5 修改配置文件 374
- 13.3.6 开发视图JSP页面 376
- 13.3.7 运行应用程序 377
- 13.4 使用Struts上传文件 378
- 13.5 使用Tiles框架设计页面布局 381
- 13.5.1 创建布局页面 382
- 13.5.2 使用布局页面创建JSP页面 383
- 13.5.3 使用定义文件 385
- 13.5.4 定义文件的继承 389
- 13.6 小结 390
- 习题 390
- 第14章 Ajax技术基础 392
- 14.1 Web 2.0与Ajax技术概述 392
- 14.1.1 什么是Ajax 392
- 14.1.2 Ajax相关技术简介 393
- 14.2 XMLHttpRequest对象 394
- 14.2.1 创建XMLHttpRequest对象 394
- 14.2.2 XMLHttpRequest的属性 395
- 14.2.3 XMLHttpRequest的方法 396
- 14.2.4 一个简单的示例 396
- 14.2.5 Ajax的交互模式 397
- 14.2.6 使用innerHTML属性创建动态内容 400
- 14.3 XML和DOM 402
- 14.3.1 什么是XML 402
- 14.3.2 什么是DOM 403
- 14.3.3 DOM与JavaScript 403
- 14.3.4 使用DOM动态编辑页面 406
- 14.3.5 发送请求参数 410
- 14.4 Ajax的常用应用 410
- 14.4.1 实现表单数据验证 410
- 14.4.2 动态加载列表框 413
- 14.4.3 创建工具提示 417
- 14.4.4 动态更新Web页面 421
- 14.5 小结 427
- 习题 428
- 参考文献 429
- XIV
- Java Web编程技术
- XIII