第1章 Java Web编程基础 1
1.1 HTML基础 2
1.2 〈HEAD〉中常用的标记 3
1.3 〈BODY〉中常用的标记 3
1.3.1 〈BODY〉标记 3
1.3.2 〈FONT〉标记 4
1.3.3 标题字体 4
1.3.4 〈IMG〉标记 4
1.3.5 〈A〉标记 5
1.3.6 列表标记 5
1.3.7 表格定义标记 6
1.3.8 表单(FORM)定义 8
1.3.9 文本组件 9
1.3.10 下拉列表 10
1.3.11 单选框 11
1.3.12 多选框 11
1.3.13 按钮 12
1.3.14 隐藏域 13
1.3.15 文件上载组件 13
1.4 JavaScript编程入门 13
1.4.1 JavaScript基础知识 14
1.4.2 JavaScript常用内置对象 17
1.4.3 JavaScript中的方法 19
1.4.4 JavaScript中的事件处理 22
1.4.5 使用JavaScript进行表单验证 27
1.5 配置JSP/Servlet开发环境 28
1.5.1 Tomcat的安装和使用 28
1.5.2 建立应用目录 29
本章小结 30
课后练习题 30
第2章 JDBC编程 33
2.1 JDBC简介 34
2.1.1 JDBC的概念及特点 34
2.1.2 如何通过Web存取数据库 34
2.1.3 JDBC的结构 35
2.1.4 JDBC的种类 35
2.1.5 JDBC URL 36
2.1.6 手动建立ODBC数据源 37
2.1.7 设置和Oracle相关的环境 38
2.2 通过JDBC操纵数据库 39
2.2.1 JDBC访问数据库的基本步骤 39
2.2.2 常用的JDBC类与方法 41
2.2.3 可滚动和可更新的结果集 48
2.2.4 CallableStatement 52
2.2.5 事务处理 54
2.2.6 批处理 56
2.2.7 操作Oracle中的BLOB/CLOB类型数据 57
2.2.8 获得数据库元数据 61
2.3 数据库连接池 63
2.3.1 连接池的概念 63
2.3.2 连接池的分配与释放 64
2.3.3 连接池的配置与维护 64
2.3.4 Tomcat数据库连接池的配置 64
2.4 防止SQL注入攻击 67
本章小结 68
课后练习题 69
第3章 Java Servlet编程 71
3.1 Servlet基础知识 72
3.2 编写第一个简单的Servlet程序 72
3.2.1 配置servlet invoker 73
3.2.2 配置Servlet映射 74
3.2.3 Servlet的运行机制 75
3.3 HttpServlet中的方法 75
3.3.1 doGet()/doPost()方法 75
3.3.2 init()方法 76
3.3.3 service()方法 76
3.3.4 destroy()方法 76
3.4 Servlet的生命周期 76
3.5 利用Servlet读取HTML表单数据 77
3.5.1 客户端传递数据的方式 77
3.5.2 在Servlet中读取客户端发送的数据 77
3.6 处理HTTP报头 82
3.6.1 在Servlet中取得HTTP请求报头 82
3.6.2 读取CGI变量 85
3.6.3 在Servlet中设置HTTP响应头 88
3.6.4 通过HTTP报头解决中文问题 94
3.7 处理Cookie 97
3.7.1 Cookie基础 97
3.7.2 在Servlet中处理Cookie 98
3.8 会话跟踪 101
3.8.1 会话的意义和用途 101
3.8.2 Servlet中跟踪会话状态 102
3.9 ServletContext接口 105
3.10 编写线程安全的Servlet 109
3.10.1 编写线程安全的Servlet 109
3.10.2 Servlet 2.4中被废弃的SingleThreadModel接口 112
本章小结 112
课后练习题 112
第4章 JSP编程初步 115
4.1 JSP基础知识 116
4.2 编写一个简单的JSP程序 116
4.2.1 编写JSP代码 116
4.2.2 将JSP程序部署到Tomcat中 117
4.3 JSP程序基本架构 117
4.3.1 JSP注释 117
4.3.2 JSP表达式 119
4.3.3 JSP Scriptlet 119
4.3.4 JSP声明 121
4.4 JSP和Servlet的关系 122
4.5 在JSP/Servlet中使用JDBC访问数据库 126
4.6 使用数据库访问类访问数据库 128
本章小结 133
课后练习题 133
第5章 JSP指令和动作 135
5.1 指令 136
5.1.1 指令基本概述 136
5.1.2 page指令 136
5.1.3 include指令 142
5.2 JSP动作 144
5.2.1 JSP动作概述 144
5.2.2 include动作 145
5.2.3 forward动作 146
本章小结 147
课后练习题 147
第6章 JSP隐含对象 149
6.1 JSP隐含对象概述 150
6.2 out对象 150
6.3 request对象 153
6.4 response对象 154
6.5 session对象 154
6.6 application对象 157
6.7 exception对象 159
6.8 pageContext对象 161
6.9 page对象 163
6.10 config对象 163
本章小结 163
课后练习题 163
第7章 JSP和JavaBean 165
7.1 JavaBean简介 166
7.2 使用JavaBean 166
7.3 将Bean属性和request参数关联 172
7.3.1 使用表达式设置属性 172
7.3.2 使用setProperty的param属性 175
7.3.3 将所有的属性与请求参数关联 176
7.4 JavaBean的范围 176
7.4.1 page 177
7.4.2 request 177
7.5 JSP和Servlet的通信 180
7.6 MVC设计模式 181
本章小结 187
课后练习题 187
第8章 表达式语言 189
8.1 EL(表达式语言)基础 190
8.2 访问作用域属性(attribute) 191
8.3 使用EL访问JavaBean 193
8.4 使用EL访问集合对象 196
8.5 EL隐含对象 197
8.6 EL中的.与[]运算符 199
8.7 EL运算符 199
8.7.1 EL运算中的算术运算符 200
8.7.2 EL运算中的关系运算符 201
8.7.3 EL运算中的逻辑运算符 202
8.7.4 EL运算中其他常用运算符 202
8.7.5 EL运算符优先级 202
8.8 自动类型转换 203
本章小结 203
课后练习题 203
第9章 JSTL核心标签库 205
9.1 概述 206
9.2 安装使用JSTL 206
9.3 核心标签库(Core tag library) 207
9.3.1 一般用途的标签 207
9.3.2 条件标签 211
9.3.3 迭代标签 213
9.3.4 URL操作 216
9.4 其他标签库 218
9.4.1 I18N标签库 218
9.4.2 SQL标签库 219
9.4.3 XML的标签库 219
9.4.4 Functions标签库 219
本章小结 219
课后练习题 219
第10章 Filter和Listener 221
10.1 Filter 222
10.1.1 Filter概述 222
10.1.2 Filter的实现 222
10.1.3 用Filter处理权限控制 224
10.1.4 和Filter相关的一些注意点 227
10.2 Listener 228
10.2.1 ServletContextListener 229
10.2.2 ServletContextAttributeListener 231
10.2.3 HttpSessionListener 231
10.2.4 HttpSessionAttributeListener 233
本章小结 233
课后练习题 233
第11章 JSP/Servlet的综合应用 235
11.1 网站计数器 236
11.2 Java Mail 237
11.3 分页显示 242
11.3.1 基于缓存的分页策略 242
11.3.2 基于查询的分页策略 247
11.4 文件上载 254
11.5 Web应用程序的国际化 258
11.6 DAO(Data Access Object)模式 261
11.6.1 DAO模式 261
11.6.2 Factory/Abstract Factory模式 262
11.6.3 DAO+Abstract Factory模式的实例 264
11.7 中文乱码问题 271
11.7.1 字符编码 271
11.7.2 乱码产生的原因 272
11.7.3 乱码解决方案 273
本章小结 275
课后练习题 275
第12章 基于Ajax的程序开发 277
12.1 Ajax的历史由来 278
12.2 B/S结构的用户体验问题 278
12.3 采用Ajax技术提升用户体验 283
12.4 Ajax原理解析 285
12.5 使用XMLHttpRequest对象与服务器端通信 287
12.5.1 使用open方法创建一个请求 287
12.5.2 使用send方法发送一个请求 288
12.5.3 使用onreadystatechange事件捕获请求状态变化 288
12.5.4 使用readyState属性判断请求状态变化 288
12.5.5 使用status属性判断请求的结果 289
12.5.6 使用responseText获得返回的文本 289
12.6 JavaScript开源框架Prototype简介 291
12.6.1 Prototype常用方法 291
12.6.2 Ajax对象 292
本章小结 294
课后练习题 294
第13章 Java Web综合实例 295
13.1 需求说明 296
13.2 总体设计 296
13.3 数据库设计 297
13.4 PO类 298
13.4.1 用于表示支出分类的类 298
13.4.2 用于表示支出的类 298
13.4.3 用于表示收入的类 300
13.4.4 用于统计支出的类 302
13.5 辅助类 303
13.5.1 数据库操作相关的类 303
13.5.2 数字和字符之间转换的类 305
13.5.3 读取配置文件中的数据库相关参数设置 305
13.5.4 其他辅助功能 307
13.6 DAO层 307
13.6.1 DAO工厂类 307
13.6.2 操作“支出分类”表的DAO接口及实现 309
13.6.3 操作“每日支出”的DAO接口和实现 311
13.6.4 操作“每月收入”的DAO接口和实现 320
13.6.5 处理统计功能的DAO接口和实现 323
13.7 功能实现 328
13.7.1 新增每日支出 328
13.7.2 新增收入 338
13.7.3 按层级列出支出 339
13.7.4 按照不同周期的收支统计分析 348
本章小结 366
课后练习题 366