第1章 JDBC入门 1
1.1 JDBC概述 1
1.1.1 什么是JDBC 1
1.1.2 JDBC常用API 2
1.1.3 实现第一个JDBC程序 5
1.1.4 PreparedStatement对象 9
1.1.5 CallableStatement对象 11
1.1.6 ResultSet对象 13
1.2 案例——JDBC的基本操作 15
1.3 JDBC批处理 24
1.3.1 Statement批处理 24
1.3.2 PreparedStatement批处理 25
1.4 大数据处理 26
1.4.1 处理CLOB数据 27
1.4.2 处理BLOB数据 28
小结 30
第2章 JDBC处理事务与数据库连接池 31
2.1 JDBC处理事务 31
2.2 数据库连接池 34
2.2.1 什么是数据库连接池 34
2.2.2 DataSource接口 35
2.2.3 DBCP数据源 35
2.2.4 C3P0数据源 39
小结 45
第3章 DBUtils工具 47
3.1 API介绍 47
3.1.1 DBUtils类 47
3.1.2 QueryRunner类 48
3.1.3 ResultSetHandler接口 49
3.2 ResultSetHandler实现类 49
3.2.1 ArrayHandler和ArrayListHandler 50
3.2.2 BeanHandler、BeanListHandler和BeanMapHandler 53
3.2.3 MapHandler和MapListHandler 56
3.2.4 ColumnListHandler 57
3.2.5 ScalarHandler 58
3.2.6 KeyedHandler 59
3.3 DBUtils实现增删改查 60
3.4 DBUtils处理事务 65
小结 70
第4章 过滤器 72
4.1 Filter入门 72
4.1.1 什么是Filter 72
4.1.2 实现第一个Filter程序 73
4.1.3 Filter映射 75
4.1.4 Filter链 78
4.1.5 FilterConfig接口 81
4.2 应用案例——Filter实现用户自动登录 83
4.3 Filter高级应用 89
4.3.1 装饰设计模式 90
4.3.2 Filter实现统一全站编码 91
4.3.3 Filter实现页面静态化 95
小结 104
第5章 Servlet事件监听器 106
5.1 Servlet事件监听器概述 106
5.2 监听域对象的生命周期 107
5.2.1 ServletContextListener接口 107
5.2.2 HttpSessionListener接口 108
5.2.3 ServletRequestListener接口 108
5.2.4 阶段案例——监听域对象的生命周期 109
5.3 监听域对象中的属性变更 115
5.3.1 监听对象属性变更的接口 115
5.3.2 阶段案例——监听域对象的属性变更 117
5.4 感知被HttpSession绑定的事件监听器 119
5.4.1 HttpSessionBindingListener接口 119
5.4.2 HttpSessionActivationListener接口 121
小结 132
第6章 文件上传与下载 134
6.1 如何实现文件上传 134
6.2 文件上传的相关API 136
6.2.1 FileItem接口 136
6.2.2 DiskFileItemFactory类 137
6.2.3 ServletFileUpload类 138
6.3 应用案例——文件上传 140
6.4 文件下载 143
6.4.1 文件下载原理 143
6.4.2 文件下载编码实现 144
小结 147
第7章 EL表达式 148
7.1 初识EL 148
7.2 EL语法 150
7.2.1 EL中的标识符 150
7.2.2 EL中的保留字 150
7.2.3 EL中的变量 151
7.2.4 EL中的常量 151
7.2.5 EL中的运算符 152
7.3 EL隐式对象 155
7.3.1 pageContext对象 156
7.3.2 Web域相关对象 157
7.3.3 param和paramValues对象 159
7.3.4 header和headerValues对象 160
7.3.5 Cookie对象 161
7.3.6 initParam对象 162
7.4 自定义EL函数 163
7.4.1 HTML注入 163
7.4.2 案例——自定义EL函数防止HTML注入 165
小结 168
第8章 JSP标准标签库 169
8.1 JSTL入门 169
8.1.1 什么是JSTL 169
8.1.2 安装和测试JSTL 170
8.2 JSTL中的Core标签库 171
8.2.1 〈c:out〉标签 171
8.2.2 〈c: set〉标签 175
8.2.3 〈c: remove〉标签 178
8.2.4 〈c: catch〉标签 179
8.2.5 〈c: if〉标签 180
8.2.6 〈c :choose〉标签 181
8.2.7 〈c:forEach〉标签 183
8.2.8 〈c:forTokens〉标签 188
8.2.9 〈c: param〉标签 189
8.2.10 〈c:url〉标签 190
8.2.11 〈c: redirect〉标签 192
8.3 JSTL中的Functions标签库 193
8.3.1 fn: toLowerCase函数与fn: toUpperCase函数 193
8.3.2 fn: trim函数 195
8.3.3 fn: escapeXml函数 195
8.3.4 fn:length函数 196
8.3.5 fn: split函数 197
8.3.6 fn:join函数 198
8.3.7 fn: indexOf函数 199
8.3.8 fn:contains函数 201
8.3.9 fn:containsIgnoreCase函数 202
8.3.10 fn: startsWith函数与fn: endsWith函数 203
8.3.11 fn:replace函数 204
8.3.12 fn: substring、fn:substringAfter与fn: substringBefore函数 205
小结 206
第9章 自定义标签 208
9.1 自定义标签入门 208
9.1.1 什么是自定义标签 208
9.1.2 自定义标签的开发步骤 209
9.2 传统标签 211
9.2.1 Tag接口 211
9.2.2 IterationTag接口 212
9.2.3 BodyTag接口 214
9.2.4 案例——实现一个传统自定义标签 218
9.3 简单标签 220
9.3.1 简单标签API 220
9.3.2 案例——实现一个自定义简单标签 222
9.3.3 控制是否执行标签体内容 229
9.3.4 控制是否执行JSP页面的内容 231
9.3.5 简单标签的属性 233
小结 239
第10章 国际化 240
10.1 什么是国际化 240
10.2 实现国际化的API 242
10.2.1 Locale类 242
10.2.2 ResourceBundle类 245
10.2.3 DateFormat类 248
10.2.4 NumberFormat类 250
10.2.5 MessageFormat类 252
10.3 开发国际化的Web应用 255
10.3.1 获取Web应用中的本地信息 255
10.3.2 案例——开发国际化的Web应用 257
10.4 国际化标签库 260
10.4.1 设置全局信息的标签 261
10.4.2 信息显示标签 262
10.4.3 数字及日期格式化标签 265
小结 270
第11章 综合项目一网上书城(上) 271
11.1 项目概述 271
11.1.1 需求分析 271
11.1.2 功能结构 272
11.1.3 项目预览 272
11.2 数据库设计 274
11.2.1 E-R图设计 274
11.2.2 创建数据库和数据表 275
11.3 项目前期准备 278
11.4 用户注册和登录模块 283
11.4.1 用户注册 284
11.4.2 用户登录 288
11.5 购物车模块 293
11.5.1 模块概述 293
11.5.2 实现购物车的基本功能 294
11.5.3 实现订单的相关功能 298
11.6 图书信息查询模块 300
11.6.1 商品分类导航栏 301
11.6.2 搜索功能 303
11.6.3 公告板和本周热卖 304
小结 307
第12章 综合项目一网上书城(下) 308
12.1 后台管理系统概述 308
12.2 商品管理模块 310
12.2.1 商品管理模块简介 310
12.2.2 实现查询商品列表功能 310
12.2.3 实现添加商品信息功能 315
12.2.4 实现编辑商品信息功能 318
12.2.5 实现删除商品信息功能 322
12.3 销售榜单模块 324
12.4 订单管理模块 328
12.4.1 订单管理模块简介 328
12.4.2 实现查询订单列表功能 329
12.4.3 实现查看订单详情功能 334
12.4.4 实现删除订单功能 339
小结 342