第一篇 起步篇 2
第1章 开启Jave Web之门 2
1.1 初识Java Web 2
1.1.1 Java概述 2
1.1.2 Java语言的主要特点 3
1.1.3 JavaWeb概述 3
1.1.4 JavaWeb成功案例 4
1.2 Web 应用技术 5
1.2.1 客户端应用技术 5
1.2.2 服务器端应用技术 7
1.3 Web应用程序的工作原理 8
1.4 网络程序开发体系结构 8
1.4.1 什么是C/S结构 9
1.4.2 什么是B/S结构 9
1.4.3 B/S与C/S的区别 9
1.5 JavaWeb网站的基本构建流程 10
1.6 常用网上资源 10
1.6.1 常用资源下载网 10
1.6.2 技术社区 11
1.7 小结 11
1.8 习题 11
第2章 不可不知的客户端应用技术 12
2.1 构建页面内容的HTML 5标记语言 12
2.1.1 了解HTML 5文档结构 12
2.1.2 HTML文字排版标记 14
2.1.3 图片与超链接标记 16
2.1.4 HTML 5新增的语义元素 18
2.1.5 制作表格 21
2.1.6 播放音频和视频 22
2.1.7 表单标记 24
2.2 美化页面的CSS样式表 28
2.2.1 样式表的定义与引用 28
2.2.2 CSS规则 30
2.2.3 CSS选择器 30
2.2.4 CSS常用属性 32
2.3 客户端交互的JavaScript 34
2.3.1 JavaScript的语言基础 34
2.3.2 JavaScript的流程控制语句 38
2.3.3 JavaScript函数的定义及调用 41
2.3.4 事件处理 41
2.3.5 常用对象 43
2.3.6 DOM技术 46
2.4 上机实践 49
2.4.1 使用删除线样式标注商品特价 49
2.4.2 将小写金额转换为大写金额 49
2.4.3 验证用户注册信息的合法性 50
2.5 小结 51
2.6 习题 51
第3章 驾驭Java Web开发环境 53
3.1 Java Web所需要的开发环境 53
3.1.1 开发工具包JDK 53
3.1.2 Web服务器 54
3.1.3 数据库 54
3.1.4 Web浏览器 55
3.2 安装和配置JDK 55
3.2.1 下载JDK 55
3.2.2 安装JDK 56
3.2.3 在Windows系统下配置和测试JDK 57
3.3 安装和配置Tomcat 58
3.3.1 获取Tomcat 59
3.3.2 熟悉Tomcat 60
3.3.3 修改Tomcat的默认端口 61
3.4 Eclipse 开发工具的安装与使用 62
3.4.1 Eclipse的下载与安装 62
3.4.2 启动Eclipse 62
3.4.3 安装Eclipse中文语言包 63
3.4.4 Eclipse 工作台 63
3.5 做好项目开发的准备工作 64
3.5.1 集成Eclipse与Tomcat 64
3.5.2 完善Web项目开发所需配置 65
3.6 使用Eclipse开发一个JSP网站 66
3.7 小结 68
3.8 习题 69
第4章 Java Web开发必修课之JSP语法 70
4.1 了解JSP页面的基本构成 70
4.2 使用JSP指令标识 71
4.2.1 使用页面指令page 72
4.2.2 使用文件包含指令include 74
4.2.3 使用引用标签库指令taglib 75
4.3 使用JSP脚本 76
4.3.1 在JSP中应用代码片段 76
4.3.2 使用JSP表达式 77
4.3.3 使用声明标识 77
4.4 巧用注释 78
4.4.1 基本HTML注释 78
4.4.2 隐藏注释 79
4.4.3 代码片段中的注释 79
4.5 常用JSP动作标识 80
4.5.1 使用包含动作标识<jsp:include> 81
4.5.2 使用请求转发的动作标识<jsp:forward> 83
4.5.3 使用子动作标识<jsp:param> 84
4.5.4 使用动作标识<jsp:useBean> 85
4.5.5 使用动作标识<jsp:getProperty> 91
4.5.6 使用动作标识<jsp:setProperty> 91
4.6 上机实践 93
4.6.1 应用Java程序片段动态生成表格 93
4.6.2 将页面转发到用户登录页面 94
4.6.3 应用JavaBean保存图片信息 95
4.7 小结 96
4.8 习题 96
第二篇 核心篇 98
第5章 程序开发效率之利器——内置对象 98
5.1 JSP内置对象概述 98
5.1.1 内置对象的作用 98
5.1.2 置对象及其应用场合 98
5.2 request请求对象 99
5.2.1 获取请求参数 99
5.2.2 解决中文乱码问题 101
5.2.3 获取客户端数据 101
5.2.4 应用request 对象域 103
5.3 response 响应对象 104
5.3.1 操作HTTP头信息 104
5.3.2 设置MIME类型 105
5.3.3 实现页面重定向 105
5.4 out输出对象 106
5.4.1 客户端输出数据 106
5.4.2 管理缓冲区 107
5.5 session会话对象 107
5.5.1 session的生命周期 108
5.5.2 创建与获取会话 108
5.5.3 移除对话中的数据 108
5.5.4 设置会话的有效时间 109
5.5.5 应用session 对象模拟用户登录 109
5.6 应用application对象 111
5.6.1 application对象的生命周期 111
5.6.2 操作application 对象中数据 111
5.6.3 配置Web应用的初始化参数 113
5.6.4 用application 对象实现网页计数器 114
5.7 其他内置对象 114
5.7.1 应答与请求的 page对象 114
5.7.2 页面上下文的pageContext对象 115
5.7.3 获取web.xml配置信息的config对象 115
5.7.4 获取异常信息的exception 对象 116
5.8 上机实践 116
5.8.1 通过request对象获取用户注册信息 116
5.8.2 防止表单在网站外部提交 117
5.8.3 通过cookie保存并读取用户登录信息 118
5.9 小结 119
5.10 习题 119
第6章 完美的“咖啡豆”——JavaBean技术 120
6.1 JavaBean概述 120
6.1.1 JavaBean的产生背景 120
6.1.2 JavaBean的作用 120
6.1.3 JavaBean的规范 121
6.1.4 JavaBean的种类 121
6.2 Eclipse对JavaBean方法的支持 122
6.3 JavaBean的应用 124
6.3.1 获取JavaBean的属性 124
6.3.2 对JavaBean的属性赋值 126
6.3.3 如何在JSP页面中应用JavaBean 127
6.4 上机实践 130
6.4.1 判断用户名是否有效 130
6.4.2 计算两个日期相差的天数 131
6.4.3 随机生成指定位数的验证码 131
6.5 小结 132
6.6 习题 132
第7章 Web应用的缔造者——Servlet 134
7.1 Servlet技术 134
7.1.1 Servlet概述 134
7.1.2 Servlet功能 134
7.1.3 Servlet特点 135
7.1.4 Servlet的生命周期 136
7.2 Servlet技术开发 136
7.2.1 Servlet在Java EE中的结构体系 136
7.2.2 Servlet核心API 137
7.2.3 创建第一个Servlet类 138
7.2.4 Servlet配置 139
7.2.5 使用Servlet处理业务逻辑 140
7.2.6 使用Eclipse快速创建Servlet 141
7.3 Servlet的典型应用 144
7.3.1 处理表单数据 144
7.3.2 页面转发 147
7.3.3 获取当前页的绝对路径 148
7.4 配置并使用Servlet过滤器 149
7.4.1 过滤器的处理方式 149
7.4.2 过滤器的核心对象 149
7.4.3 创建并配置过滤器 150
7.4.4 字符编码过滤器 153
7.5 Servlet监听器 157
7.5.1 Servlet监听器简介 157
7.5.2 Servlet监听器的工作原理 158
7.5.3 监听Servlet上下文 158
7.5.4 监听HTTP会话 158
7.5.5 监听Servlet请求 159
7.5.6 使用监听器查看在线用户 160
7.6 上机实践 162
7.6.1 记录用户访问次数 162
7.6.2 防盗链过滤器 162
7.6.3 敏感词过滤器 163
7.7 小结 164
7.8 习题 164
第8章 使用表达式语言(EL) 165
8.1 EL概述 165
8.1.1 EL的基本语法 165
8.1.2 EL的特点 166
8.2 与低版本的环境兼容——禁用EL 166
8.2.1 使用斜杠符号“\” 166
8.2.2 使用page指令 166
8.2.3 在web.xml文件中配置<el-ignored>元素 167
8.3 保留关键字 167
8.4 EL运算符及其优先级 168
8.4.1 通过EL访问数据 168
8.4.2 在EL 中执行算术运算 170
8.4.3 在EL中判断对象是否为空 170
8.4.4 在 EL 中执行逻辑关系运算 171
8.4.5 在EL中执行条件运算 172
8.5 EL的隐含对象 173
8.5.1 页面上下文对象 173
8.5.2 访问作用域范围的隐含对象 175
8.5.3 访问环境信息的隐含对象 176
8.6 定义和使用EL函数 179
8.6.1 定义和使用函数 179
8.6.2 定义和使用EL函数时常见的错误 181
8.7 上机实践 182
8.7.1 应用EL访问JavaBean属性 182
8.7.2 应用EL表达式显示投票结果 183
8.7.3 应用EL显示用户的登录状态 184
8.8 小结 184
8.9 习题 185
第9章 页面控制利器——JSTL标签库 186
9.1 JSTL标签库简介 186
9.2 JSTL的下载与配置 187
9.2.1 下载JSTL标签库 188
9.2.2 配置JSTL 188
9.3 表达式标签 190
9.3.1 <c:out>输出标签 190
9.3.2 <c:set>变量设置标签 192
9.3.3 <c:remove>变量移除标签 194
9.3.4 <c:catch>捕获异常标签 195
9.4 URL相关标签 197
9.4.1 <c:import>导入标签 197
9.4.2 <c:url>动态生成URL标签 199
9.4.3 <c:redirect>重定向标签 200
9.4.4 <e:param>传递参数标签 201
9.5 流程控制标签 202
9.5.1 <c:if>条件判断标签 202
9.5.2 <c:choose>条件选择标签 203
9.5.3 <c:when>条件测试标签 204
9.5.4 <c:otherwise>其他条件标签 205
9.6 循环标签 206
9.6.1 <c:forEach>循环标签 207
9.6.2 <c:forTokens>迭代标签 209
9.7 上机实践 210
9.7.1 利用JSTL标签导入用户注册协议 210
9.7.2 根据参数请求显示不同的页面 211
9.7.3 JSTL在电子商城中的应用 211
9.8 小结 213
9.9 习题 213
第10章 数据库应用开发 214
10.1 Web开发时常用的数据库 214
10.1.1 MySQL数据库 214
10.1.2 SQL Server 2008 219
10.1.3 Oracle数据库 219
10.2 JDBC技术 219
10.2.1 JDBC简介 219
10.2.2 JDBC连接数据库的开发流程 220
10.3 JDBC核心API 221
10.3.1 驱动程序管理器DriverManager 221
10.3.2 代表数据库连接的Connection接口 223
10.3.3 执行SQL语句的 Statement接口 223
10.3.4 预编译执行SQL语句的PreparedStatement接口 225
10.3.5 结果集ResultSet接口 226
10.3.6 及时关闭连接 227
10.4 通过JDBC操作数据库 228
10.4.1 添加数据 228
10.4.2 查询数据 230
10.4.3 修改数据 233
10.4.4 删除数据 235
10.4.5 批处理 237
10.4.6 调用存储过程 240
10.5 JDBC在JavaWeb中的应用 242
10.5.1 干发模式 242
10.5.2 分页查询 243
10.6 上机实践 248
10.6.1 批量删除数据 248
10.6.2 网站用户注册 249
10.6.3 插入用户登录日志信息 250
10.7 小结 251
10.8 习题 251
第三篇 高级篇 254
第11章 在互联网中操作文件资源 254
11.1 使用Servlet 3.0的新特性实现文件上传 254
11.2 使用Commons-FileUpload组件实现文件上传 255
11.2.1 添加表单及表单元素 256
11.2.2 创建上传对象 256
11.2.3 解析上传请求 256
11.3 实现文件下载 259
11.3.1 文件类 259
11.3.2 文件字节输入流 260
11.3.3 字节输出流 261
11.4 上机实践 262
11.4.1 获取表单的元素值 262
11.4.2 限制文件上传的类型 263
11.4.3 批量文件上传 264
11.5 小结 265
11.6 习题 265
第12章 利用JFreeChart实现动态图表 267
12.1 JFreeChart简介 267
12.1.1 认识JFreeChart组件 267
12.1.2 JFreeChart的下载与使用 268
12.2 JFreeChart的核心对象 269
12.2.1 制图对象 269
12.2.2 制图工厂对象 269
12.2.3 数据集合对象 270
12.2.4 绘图区对象 271
12.2.5 坐标轴对象 273
12.2.6 图片渲染对象 274
12.3 JFreeChart的应用 275
12.3.1 如何获取图片 275
12.3.2 创建数据集合与JFreeChart实例 276
12.3.3 图表相关属性的设置 278
12.3.4 JFreeChart内置JDBC的使用 280
12.3.5 中文乱码的解决方案 283
12.4 上机实践 284
12.4.1 利用JFreeChart绘制折线图 284
12.4.2 利用JFreeChart绘制区域图 285
12.4.3 利用JFreeChart绘制时序图 286
12.5 小结 288
12.6 习题 288
第13章 在JSP中操作XML 289
13.1 XML简介 289
13.1.1 XML文档结构 289
13.1.2 XML语法要求 291
13.1.3 为XML文档中的元素定义属性 291
13.1.4 XML的注释 291
13.1.5 处理字符数据 291
13.2 dom4j概述 293
13.2.1 dom4j简介 293
13.2.2 dom4j的下载与配置 293
13.3 创建XML文件 295
13.3.1 创建XML文档对象 295
13.3.2 创建根节点 296
13.3.3 添加注释 296
13.3.4 添加属性 297
13.3.5 创建子节点 297
13.3.6 设置节点的内容 297
13.3.7 设置编码 298
13.3.8 设置输出格式 298
13.3.9 输出XML文件 298
13.4 解析XML文档 300
13.4.1 构建XML文档对象 300
13.4.2 获取根节点 301
13.4.3 获取子节点 301
13.5 修改XML文档 302
13.5.1 修改节点 302
13.5.2 删除节点 303
13.6 上机实践 304
13.6.1 保存公告信息到XML文件 304
13.6.2 遍历XML文档 305
13.6.3 管理保存在XML文件中的公告信息 307
13.7 小结 307
13.8 习题 308
第14章 完美体验Ajax技术 309
14.1 了解Ajax 309
14.1.1 什么是Ajax 309
14.1.2 Ajax 开发模式与传统开发模式的比较 309
14.1.3 Ajax 的优点 310
14.2 使用XMLHttpRequest.对象 310
14.2.1 初始化XMLHttpRequest对象 310
14.2.2 XMLHttpRequest对象的常用方法 311
14.2.3 XMLHttpRequest 对象的常用属性 313
14.3 传统Ajax的工作流程 314
14.3.1 发送请求 314
14.3.2 处理服务器响应 316
14.3.3 一个完整的实例——检测用户名是否唯一 317
14.4 利用jQuery实现Ajax 319
14.4.1 jQuery简介 320
14.4.2 应用load()方法发送请求 322
14.4.3 发送GET和POST请求 324
14.4.4 服务器返回的数据格式 329
14.4.5 使用$.ajax()方法 332
14.5 需要注意的几个问题 334
14.5.1 安全问题 334
14.5.2 性能问题 335
14.5.3 浏览器兼容性问题 335
14.5.4 中文编码问题 336
14.6 上机实践 336
14.6.1 实时显示公告信息 336
14.6.2 实现无刷新分页 337
14.6.3 多级联动下拉列表 338
14.7 小结 338
14.8 习题 339
第15章 MVC架构实现者——Struts 2框架 340
15.1 Struts 2框架概述 340
15.1.1 理解MVC的原理 340
15.1.2 Struts 2框架的产生 341
15.1.3 Struts 2的结构体系 341
15.2 Struts 2入门 342
15.2.1 获取与配置Struts 2 342
15.2.2 创建第1个Struts 2程序 343
15.3 Action 对象 345
15.3.1 认识Action对象 345
15.3.2 请求参数的注入原理 346
15.3.3 Action的基本流程 346
15.3.4 动态Action 347
15.3.5 应用动态Action 347
15.4 Struts 2的配置文件 349
15.4.1 Struts 2的配置文件类型 349
15.4.2 配置Struts 2包 350
15.4.3 配置名称空间 350
15.4.4 Action的相关配置 351
15.4.5 使用通配符简化配置 352
15.4.6 配置返回结果 353
15.5 Struts 2的标签库 354
15.5.1 应用数据标签 354
15.5.2 应用控制标签 356
15.5.3 应用表单标签 358
15.6 Struts 2的开发模式 359
15.6.1 实现与ServletAPI的交互 359
15.6.2 域模型DomainModel 360
15.6.3 驱动模型ModelDriven 361
15.7 Struts 2的拦截器 363
15.7.1 拦截器概述 363
15.7.2 拦截器API 363
15.7.3 使用拦截器 364
15.8 数据验证机制 366
15.8.1 手动验证 366
15.8.2 验证文件的命名规则 366
15.8.3 验证文件的编写风格 367
15.9 上机实践 368
15.9.1 应用Struts 2处理表单数据 368
15.9.2 Struts 2标签下的用户注册 368
15.9.3 通过Struts 2实现简单投票器 369
15.10 小结 369
15.11 习题 369
第16章 数据库持久化利器——Hibernate技术 371
16.1 初识Hibernate 371
16.1.1 ORM原理 371
16.1.2 Hibernate简介 372
16.2 Hibernate入门 372
16.2.1 获取Hibernate 372
16.2.2 Hibernate配置文件 373
16.2.3 编写持久化类 374
16.2.4 Hibernate映射 375
16.2.5 Hibernate主键策略 376
16.3 使用Hibernate进行数据持久化 376
16.3.1 Hibernate实例状态 377
16.3.2 Hibernate初始化类 377
16.3.3 保存数据 379
16.3.4 查询数据 381
16.3.5 删除数据 382
16.3.6 修改数据 383
16.3.7 延迟加载 383
16.4 使用Hibernate的缓存 384
16.4.1 使用一级缓存 384
16.4.2 配置和使用二级缓存 385
16.5 实体关联关系映射 387
16.5.1 数据模型与领域模型 387
16.5.2 解并配置多对一单向关联 388
16.5.3 理解并配置多对一双向关联 389
16.5.4 理解并配置一对一主键关联 391
16.5.5 级联操作 393
16.6 Hibernate查询语言 394
16.6.1 HQL语言 394
16.6.2 查询实体对象 395
16.6.3 条件查询 396
16.6.4 HQL参数绑定机制 396
16.6.5 排序查询 397
16.6.6 应用聚合函数 397
16.6.7 分组方法 397
16.6.8 联合查询 398
16.7 上机实践 399
16.7.1 修改员工信息 399
16.7.2 员工信息的模糊查询 400
16.7.3 按年龄升序显示公民信息 400
16.8 小结 401
16.9 习题 401
第17章 简化企业开发瑰宝——Spring技术 402
17.1 Spring概述 402
17.1.1 Spring的组成 402
17.1.2 获取Spring 403
17.1.3 配置Spring 403
17.1.4 使用BeanFactory管理Bean 405
17.1.5 应用ApllicationContext 406
17.2 依赖注入 407
17.2.1 控制反转与依赖注入 407
17.2.2 配置Bean 408
17.2.3 Setter注入 408
17.2.4 构造器注入 409
17.2.5 引用其他Bean 411
17.2.6 创建匿名内部JavaBean 412
17.3 AOP概述 412
17.3.1 AOP术语 413
17.3.2 AOP的简单实现 414
17.4 Spring的切入点 415
17.4.1 静态与动态切入点 415
17.4.2 深入静态切入点 416
17.4.3 深入切入点底层 417
17.4.4 Spring中的其他切入点 417
17.5 Aspect对AOP的支持 418
17.5.1 Aspect概述 418
17.5.2 Spring中的Aspect 418
17.5.3 DefaultPointcutAdvisor切入点配置器 419
17.5.4 NameMatchMethodPointcutAdvisor切入点配置器 420
17.6 Spring的持久化 420
17.6.1 DAO模式 420
17.6.2 Spring的DAO理念 421
17.6.3 事务管理 423
17.6.4 应用JdbcTemplate操作数据库 426
17.6.5 与Hibernate整合 428
17.6.6 整合Spring与Hibernate 429
17.7 上机实践 430
17.7.1 登录页面国际化 430
17.7.2 利用Spring整合Hibernate来批量添加数据 431
17.7.3 利用AOP实现用户注册 431
17.8 小结 431
17.9 习题 432
第四篇 项目实战篇 434
第18章 基于Ajax的聊天室 434
18.1 需求分析 434
18.2 系统设计 434
18.2.1 系统目标 434
18.2.2 系统功能结构 434
18.2.3 系统流程图 435
18.3 系统开发及运行环境 435
18.4 系统文件夹组织结构 435
18.5 公共类设计 436
18.5.1 编写并配置字符编码过滤器 436
18.5.2 编写聊天室相关的Servlet实现类 437
18.6 用户登录模块设计 438
18.7 聊天室主体功能模块设计 441
18.7.1 设计聊天室主页面 441
18.7.2 实时获取并显示在线人员列表 442
18.7.3 实现用户发言 443
18.7.4 实时显示聊天内容 446
18.8 退出聊天室模块 449
18.8.1 实现安全退出聊天室功能 450
18.8.2 处理非正常退出聊天室 451
18.9 开发常见问题与解决方法 452
18.10 小结 452
第19章 基于SSH2的网络商城 453
19.1 需求分析 453
19.2 系统设计 453
19.2.1 系统目标 453
19.2.2 系统功能结构 454
19.2.3 系统业务流程图 454
19.2.4 系统编码规范 455
19.3 系统开发及运行环境 455
19.4 数据库与数据表设计 456
19.4.1 E-R图设计 456
19.4.2 创建数据库及数据表 457
19.5 系统文件夹组织结构 458
19.6 搭建项目环境 459
19.6.1 配置Struts 2 459
19.6.2 配置Hibernate 462
19.6.3 配置Spring 463
19.6.4 配置web.xml 463
19.7 公共类设计 464
19.7.1 Hibernate的Session初始化类 464
19.7.2 泛型工具类 466
19.7.3 数据持久化类 466
19.7.4 分页设计 468
19.8 登录注册模块设计 471
19.8.1 实现注册模块 472
19.8.2 实现登录模块 474
19.9 前台商品信息查询模块设计 475
19.9.1 实现商品分类查询 476
19.9.2 实现商品搜索 477
19.9.3 实现前台查询其他商品 478
19.10 购物车模块设计 480
19.10.1 实现购物车的基本功能 480
19.10.2 实现订单的相关功能 483
19.11 后台商品管理模块设计 485
19.11.1 实现商品管理功能 485
19.11.2 实现商品类别管理功能 489
19.12 后台订单管理模块设计 492
19.12.1 实现后台订单查询 492
19.12.2 实现后台订单状态管理 494
19.13 网站发布 496
19.13.1 配置Tomcat服务器 496
19.13.2 配置DNS服务器 497
19.14 开发常见问题与解决 500
19.14.1 页面中出现中文乱码 500
19.14.2 自定义查询时,当订单号为空会出错 500
19.15 小结 501