标题：Java Web开发学习手册
图书信息
明日科技 朱晓 卢瀚 王国辉 等编著  ISBN 978-7-121- 13068-7
2011年4月出版
定价：65.00元(含DVD光盘1张)
16开
548页
宣传语
编程成功之路从此开始！
内 容 简 介
本书以初学者为对象，全面介绍了使用Java Web开发程序的相关技术。在内容安排上由浅入深，让读者循序渐进地掌握编程技术；在内容讲解上结合丰富的图解和形象的比喻，帮助读者理解晦涩难懂的技术；在内容形式上附有大量的提示、技巧、说明、情景应用和实战练习等栏目，夯实读者编程技术，丰富编程经验。全书共分为4篇，21章，包括JavaWeb概述、搭建开发环境、Java语言基础、JavaScript语言、XML基础、JSP语法、JSP内置对象、JavaBean技术、Servlet技术、EL表达式、JSTL标签库、数据库应用开发、文件上传下载管理、解析XML、Ajax技术、Struts2框架技术、Hibernate技术和Spring技术。最后两章为项目实战练习，分别为论坛和网上商城，它们都应用了目前最流行的3大框架技术。通过这两个练习，希望读者能够更加深刻的理解和运用Struts2、Hibernate和Spring技术。
本书的随附光盘中包括本书所有程序的源代码和重点难点内容的视频录像，其中的源代码全部经过精心测试，能够在Windows 2000、Windows XP、Windows 2003和Windows 7操作系统中编译和运行。
本书适用于JavaWeb的爱好者、初学者和中级开发人员，也可以作为大中专院校和培训机构的教材。
前 言
让想要学习编程的人员都能够学会编程!
我可以学会编程吗？
当然可以！即使你没有基础，即使你是非计算机专业毕业，即使你已过而立之年，甚至是只有初中毕业。我国最早的计算机反病毒专家、江民杀毒软件创始人王江民，初中毕业，38岁开始学习计算机，因为英语基础不好，很多人认为他根本没有学会编程的可能。但王江民没有感觉自己不行，硬是克服各种困难，成为我国最成功的程序开发人员之一。
王江民学习编程的诀窍是什么？
是实践。王江民说：“计算机是实践性非常强的学科。我搞计算机是用计算机，不是学计算机。” 王江民首先学的是BASIC语言。当时，为了辅导上小学的孩子，对软件一片空白的王江民竟然决定编写程序代替家长辅导。短短3个月，王江民就边学边实践，编好了一套数学语文教学软件，试过后效果奇佳，参加电脑报软件交流，被评为第2名，誉为“教育软件第一”。因为这次成功，极大激发了王江民对编程的兴趣，使他从此把精力转到了软件领域。
所以说：实践，是学习编程的最好方法，也是培养编程乐趣、捕获发展机遇的最佳途径。值得注意的是，不要等学完全部知识才去实践，要随时学习，随时实践，哪怕只学了一点点。
这本书适合我吗？
非常适合！本书是学习JavaWeb编程的最佳选择。所讲内容通俗易懂，易于学习，贴近实践。对于学习中的难点、重点，注意结合实际开发，采用情景应用的方式进行介绍和练习。本书光盘提供了完整的视频讲座，可以对照本书内容循序渐进进行学习。利用本书，不但可以学会编程，更能激发学习者理论联系实际的热情，开发出符合市场需求的软件和项目。
本书内容
本书分为基础篇、核心篇、高级篇和实战篇，共计21章。内容安排按照从零起步，循序渐进的学习顺序，全面提高读者学、练和用的能力。本书的知识结构如下图所示。
  
本书特色
 通易俗懂
为了让初学者易于学习，本书力求内容通俗易懂，讲解寓教于乐。对于初学者较难理解的专业术语，本书都进行了形象的解释，有些还提供了例图。附录中单独将术语解释提炼出来，供读者学习时参考。例如，在讲解Servlet工作流程时，首先详细讲解每一个步骤，并说明每一步中涉及的技术。然后配有图形，如下图所示。
  

视频讲座
为了方便读者学习，随附光盘中提供了14小时视频讲座。其讲解细腻、层次清楚且互动性强，不但可以加深对书中内容的理解，还可以引导学习者掌握“是什么”、“为什么”、“怎么办”和“应注意些什么”的编程思维能力。视频讲座不仅详细讲解了书中的内容，还有效扩展了相关技术，并且提出了开发过程中易犯的各种错误。
 注重实用性
初学者经常会遇到这样的情况，即书中讲解的技术能够理解，但不知道如何应用。例如，在学习JSP指令标记时候弄懂指令标记的作用和指令中包含的属性是一个繁杂的过程。书中通过讲解真实的实例，使读者真正明白指令标记和属性的作用。本书在介绍技术时，注意强调技术的实用性，并且通过实例突出技术的应用价值。对于一些典型的应用，书中通过“情景应用”栏目进行重点介绍。
 实战互动练习
要掌握一项技术，最佳的方式就是多练习和多实践。通过各章提供的多个实例任务，读者可以检验知识的掌握程度。每个实例任务分为“题目描述”、“技术指导”和“紧急救援”3个部分，其中“题目描述”给出了实例功能的详细描述和效果图；“技术指导”给出了开发思路和关键技术；“紧急救援”提供了下载实例源码和开发文档的地址链接。
随附光盘
为了帮助读者学习和使用书中的实例，本书附赠DVD光盘。其中不仅提供了书中所有实例项目的源代码、素材和光盘使用说明书，还提供了14小时视频专题录像及5个项目源码。该光盘的目录如下图所示。
  
本书适用人群
本书是一部零基础编程图书，非常适合以下人员阅读：
 零基础的初学编程人员  初中级程序开发人员
 编程爱好者  想学习编程的在职人员
 大中专院校的老师和学生  相关培训机构的老师和学员
本书参与作者
本书由明日科技组织编写，参加编写的有朱晓、卢瀚、王国辉、赛奎春、陈丹丹、李钟尉、李伟、杨丽、顾丽丽、刘玲玲、孟范胜、董大永、李继业、尹强和张磊等。由于作者水平有限，疏漏和不足之处在所难免，欢迎广大读者提出宝贵意见。
非学无以广才，非志无以成学。
祝大家读书快乐！
明日科技
2010年10月
目 录
第1篇 起 步 篇
第1章 JavaWeb概述 2
1.1 初识Java Web 19
1.1.1 概述 19
1.1.2 Java语言的主要特点 19
1.1.3 Java Web 20
1.1.4 Java Web成功案例 20
1.2 Web应用技术 21
1.2.1 客户端应用技术 21
1.2.2 服务器端应用技术 23
1.3 Web应用程序的工作原理 23
1.4 网络程序开发体系结构 24
1.4.1 C/S结构 24
1.4.2 B/S结构 25
1.4.3 B/S与C/S的区别 25
1.5 Java Web网站的基本构建流程 26
1.6 常用网上资源 26
1.6.1 常用资源下载网 26
1.6.2 技术社区 27
1.7 本章小结 27
第2章 搭建开发环境 12
2.1 Java Web开发环境概述 29
2.1.1 开发工具包JDK 29
2.1.2 Web服务器 29
2.1.3 数据库 30
2.1.4 Web浏览器 30
2.2 JDK 30
2.2.1 下载JDK 30
2.2.2 安装JDK 32
2.2.3 配置和测试JDK 33
2.3 安装和配置Tomcat 34
2.3.1 获取Tomcat 34
2.3.2 熟悉Tomcat 35
2.4 Eclipse 36
2.4.1 获取Eclipse 36
2.4.2 运行Eclipse 37
2.4.3 打造中文版Eclipse 37
2.5 做好项目开发的准备工作 38
2.5.1 集成Eclipse与Tomcat 39
2.5.2 完善Web项目开发所需配置 40
2.6 本章小结 40
第3章 数据库基础 25
3.1 初识SQL Server数据库 42
3.1.1 安装SQL Server数据库 42
3.1.2 安装SQL Server SP4补丁 44
3.1.3 创建数据库 45
3.1.4 创建数据表 46
3.2 初识MySQL数据库 47
3.2.1 安装并配置MySQL 47
3.2.2 安装MySQL GUI Tool 49
3.2.3 连接MySQL Administrator 50
3.2.4 创建数据库 51
3.2.5 创建数据表 51
3.2.6 编辑数据表中的数据 51
3.3 本章小结 52
第4章 Java语言基础 37
4.1 面向对象程序设计 54
4.1.1 类和对象 54
4.1.2 定义类 54
4.1.3 定义成员方法 55
4.1.4 定义成员变量与局部变量 56
4.1.5 使用构造方法 57
4.1.6 创建与使用Java对象 58
4.1.7 使用包 59
4.2 数据类型 60
4.2.1 基本数据类型 60
4.2.2 类型之间的转换 60
4.3 常量与变量 61
4.3.1 定义常量 61
4.3.2 定义变量 62
4.4 运算符的应用 62
4.4.1 赋值运算符 62
4.4.2 算术运算符 62
4.4.3 比较运算符 63
4.4.4 逻辑运算符 64
4.4.5 位运算符 64
4.4.6 条件运算符 66
4.4.7 自增自减运算符 66
4.4.8 运算符的优先级 67
4.4.9 情景应用：简单的加密操作 67
4.5 流程控制语句 68
4.5.1 分支语句 68
4.5.2 循环语句 71
4.5.3 合理使用循环语句 74
4.5.4 使用break和continue语句实现程序跳转 74
4.5.5 情景应用：判断数的奇偶性 75
4.6 字符串处理 75
4.6.1 创建字符串对象 76
4.6.2 连接字符串 76
4.6.3 判断字符串对象是否相等 77
4.6.4 字符串替换 78
4.6.5 获取子字符串 78
4.6.6 将字符串转换为数值类型 79
4.6.7 情景应用：格式化当前日期 79
4.7 创建并使用数组 80
4.7.1 数组及其应用 81
4.7.2 创建及遍历一维数组 81
4.7.3 创建及遍历二维数组 82
4.8 应用集合类 82
4.8.1 ArrayList类 83
4.8.2 Vector类 84
4.9 实战练习 85
4.9.1 判断某年是否是闰年 85
4.9.2 在控制台输出杨辉三角形 86
4.10 本章小结 86
第5章 JavaScrip语言 71
5.1 初识JavaScript 88
5.1.1 JavaScript功能 88
5.1.2 在Web页面中引入JavaScript 89
5.1.3 解决浏览器不能执行JavaScript的问题 90
5.2 JavaScript语言基础 92
5.2.1 变量 92
5.2.2 数据类型 92
5.2.3 应用运算符 94
5.2.4 流程控制语句 96
5.3 使用函数 99
5.3.1 定义函数 99
5.3.2 调用函数 100
5.4 事件处理 100
5.4.1 事件 100
5.4.2 指定事件处理程序的方法 101
5.5 DOM常用技术 102
5.5.1 文档的层次结构 103
5.5.2 情景应用：遍历文档树 103
5.6 与DHTML相对应的DOM 105
5.6.1 innerHTML和innerText属性 106
5.6.2 outerHTML和outerText属性 106
5.7 窗口对象 107
5.7.1 有效利用资源——控制状态栏文本 107
5.7.2 打开新的浏览器窗口 108
5.7.3 情景应用：关闭浏览器窗口 109
5.8 使用Date对象 109
5.9 实战练习 111
5.9.1 验证电话号码是否正确 111
5.9.2 将小写金额转换为大写金额 112
5.10 本章小结 112
第6章 初识XML 97
6.1 XML介绍 114
6.1.1 XML文档结构 114
6.1.2 XML语法 115
6.1.3 XML声明 115
6.1.4 元素 115
6.1.5 属性 116
6.1.6 注释 116
6.1.7 字符和实体引用 116
6.2 XML的两种语法规则 117
6.2.1 DTD文档类型定义 117
6.2.2 Schema文档规则 121
6.3 XML的3种显示格式 121
6.3.1 CSS样式表 122
6.3.2 XSL样式语言 122
6.3.3 XML数据岛技术 122
6.3.4 情景应用一：使用CSS显示XML文档内容 122
6.3.5 情景应用二：使用XSL显示XML文档内容 123
6.3.6 情景应用三：应用XML数据岛技术显示XML文档内容 125
6.4 实战练习 126
6.4.1 组合运用XML与CSS 126
6.4.2 组合运用XML与XSL 126
6.5 本章小结 127
第7章 JSP语法 112
7.1 JSP概述 129
7.2 使用JSP指令标识 130
7.2.1 使用页面指令page 130
7.2.2 使用文件包含指令include 132
7.2.3 使用引用标签库指令taglib 133
7.2.4 情景应用： 应用include指令包含其他页面 133
7.3 使用JSP脚本 134
7.3.1 在JSP中应用代码片段 134
7.3.2 使用JSP表达式 135
7.3.3 使用声明标识 136
7.3.4 情景应用：应用JSP声明实现访问统计 136
7.4 注释 137
7.4.1 基本HTML注释 137
7.4.2 隐藏注释 137
7.4.3 代码片段中的注释 138
7.5 常用JSP动作标识 138
7.5.1 使用包含动作标识<jsp:include> 139
7.5.2 使用请求转发的动作标识<jsp:forward> 141
7.5.3 使用子动作标识<jsp:param> 142
7.5.4 使用动作标识<jsp:useBean> 143
7.5.5 使用动作标识<jsp:getProperty> 148
7.5.6 使用动作标识<jsp:setProperty> 149
7.5.7 情景应用：应用JavaBean保存图片信息 150
7.6 实战练习 153
7.6.1 应用Java程序片段动态生成表格 153
7.6.2 将页面转发到用户登录页面 154
7.6.3 在同一页面中提交多个表单 155
7.7 本章小结 155 
第2篇 核 心 篇
第8章 JSP内置对象 142
8.1 JSP内置对象概述 159
8.1.1 内置对象的作用 159
8.1.2 内置对象及其应用场合 159
8.2 request请求对象 160
8.2.1 获取请求参数 160
8.2.2 解决中文乱码问题 161
8.2.3 获取客户端数据 162
8.2.4 应用request对象域 163
8.3 response响应对象 164
8.3.1 操作HTTP头信息 165
8.3.2 设置MIME类型 165
8.3.3 实现页面重定向 165
8.4 out输出对象 166
8.4.1 向客户端输出数据 167
8.4.2 管理缓冲区 167
8.5 session会话对象 168
8.5.1 session的生命周期 168
8.5.2 创建与获取会话 168
8.5.3 移除对话中的数据 169
8.5.4 设置会话的有效时间 169
8.5.5 情景应用：应用session对象模拟用户登录 170
8.6 应用application对象 171
8.6.1 application对象的生命周期 171
8.6.2 操作application对象中数据 171
8.6.3 配置Web应用的初始化参数 172
8.6.4 情景应用：实现网页计数器 173
8.7 其他内置对象 174
8.7.1 应答与请求的page对象 174
8.7.2 页面上下文的pageContext对象 174
8.7.3 获取web.xml配置信息的config对象 174
8.7.4 获取异常信息的exception对象 175
8.8 实战练习 175
8.8.1 通过application对象实现网站计数器 175
8.8.2 统计用户在站点的停留时间 176
8.9 本章小结 176
第9章 JavaBean技术 161
9.1 JavaBean概述 178
9.1.1 JavaBean产生背景 178
9.1.2 JavaBean的作用 178
9.1.3 JavaBean的规范 178
9.1.4 Eclipse对JavaBean方法的支持 179
9.2 JavaBean的属性 180
9.2.1 Simple属性 180
9.2.2 Indexed属性 181
9.2.3 Bound属性 181
9.2.4 Constrained属性 182
9.3 JavaBean与JSP的完美结合 182
9.3.1 更加对象化的JSP开发 182
9.3.2 应用<jsp:useBean>标识 184
9.3.3 应用<jsp:getProperty>标识 185
9.3.4 应用<jsp:setProperty>标识 187
9.3.5 情景应用：应用JavaBean录入档案 188
9.4 实战练习 190
9.4.1 判断用户名是否有效 190
9.4.2 计算两个日期相差的天数 191
9.5 本章小结 191
第10章 Servlet技术 176
10.1 Servlet技术 193
10.1.1 Servlet概述 193
10.1.2 Servlet功能 193
10.1.3 Servlet特点 194
10.1.4 Servlet的生命周期 194
10.2 Servlet技术开发 195
10.2.1 Servlet在Java EE中的结构体系 195
10.2.2 Servlet核心API 195
10.2.3 创建第1个Servlet类 196
10.2.4 解析Servlet配置 198
10.2.5 使用Servlet处理业务逻辑 198
10.2.6 Servlet处理流程 200
10.2.7 使用Eclipse快速创建Servlet 200
10.3 Servlet的典型应用 202
10.3.1 处理表单数据 202
10.3.2 页面转发 206
10.3.3 获取当前页的绝对路径 207
10.3.4 操作Cookie 207
10.3.5 情景应用：利用JavaBean由Servlet向JSP传递数据 209
10.4 配置并使用Servlet过滤器 210
10.4.1 过滤器的处理方式 211
10.4.2 过滤器的核心对象 211
10.4.3 创建并配置过滤器 212
10.4.4 字符编码过滤器 215
10.4.5 情景应用一：验证用户身份 219
10.4.6 情景应用二：统计网站流量 221
10.4.7 情景应用三：过滤敏感字符 222
10.5 Servlet监听器 223
10.5.1 Servlet监听器简介 223
10.5.2 Servlet监听器的工作原理 223
10.5.3 监听Servlet上下文 224
10.5.4 监听HTTP会话 224
10.5.5 监听Servlet请求 225
10.5.6 情景应用一：使用监听器查看在线用户 225
10.5.7 情景应用二：利用监听器使服 务器端免登录 228
10.6 实战练习 229
10.6.1 记录用户访问次数 229
10.6.2 将数据导出到Excel表 230
10.7 本章小结 230
第11章 EL表达式 215
11.1 EL概述 232
11.1.1 EL的基本语法 232
11.1.2 EL的特点 232
11.2 与低版本的环境兼容——禁用EL 233
11.2.1 使用斜杠“\”符号 233
11.2.2 使用page指令 233
11.2.3 在web.xml文件中配置<el-ignored>元素 233
11.3 保留关键字 234
11.4 EL运算符及其优先级 234
11.4.1 通过EL访问数据 235
11.4.2 在EL中执行算术运算 236
11.4.3 在EL中判断对象是否为空 236
11.4.4 在EL中执行逻辑关系运算 237
11.4.5 在EL中执行条件运算 238
11.5 EL的隐含对象 239
11.5.1 页面上下文对象 239
11.5.2 访问作用域范围的隐含对象 240
11.5.3 情景应用：读取page范围内的JavaBean属性值 241
11.5.4 访问环境信息的隐含对象 241
11.6 定义和使用EL函数 244
11.6.1 定义和使用函数 244
11.6.2 情景应用：定义EL函数处理字符串中的回车换行符和空格符 245
11.6.3 定义和使用EL函数时常见的错误 247
11.7 实战练习 248
11.7.1 访问JavaBean属性的典型应用 248
11.7.2 通过EL表达式访问Servlet中的作用域 249
11.8 本章小结 250
第12章 JSTL标签库 235
12.1 JSTL标签库 252
12.2 下载与配置JSTL 253
12.2.1 下载JSTL标签库 253
12.2.2 配置JSTL 254
12.3 表达式标签 255
12.3.1 <c:out>标签 255
12.3.2 <c:set>标签 256
12.3.3 <c:remove>标签 258
12.3.4 <c:catch>标签 259
12.4 URL相关标签 260
12.4.1 <c:import>标签 260
12.4.2 <c:url>标签 262
12.4.3 <c:redirect>标签 263
12.4.4 <c:param>标签 264
12.4.5 情景应用：应用<c:redirect>和 <c:param>标签重定向页面并传递参数 264
12.5 流程控制标签 265
12.5.1 <cif>标签 265
12.5.2 <c:choose>标签 266
12.5.3 <c:when>标签 267
12.5.4 <c:otherwise>标签 268
12.5.5 情景应用：幸运大抽奖 268
12.6 循环标签 269
12.6.1 <c:forEach>标签 269
12.6.2 <c:forTokens>标签 271
12.7 实战练习 272
12.7.1 利用JSTL标签导入用户注册协议 272
12.7.2 根据参数请求显示不同的页面 273
12.8 本章小结 273
第13章 数据库应用开发 258
13.1 JDBC技术 275
13.1.1 JDBC简介 275
13.1.2 JDBC连接数据库的开发流程 275
13.2 JDBC核心API 277
13.2.1 驱动程序管理器DriverManager 277
13.2.2 代表数据库连接的Connection接口 278
13.2.3 执行SQL语句的Statement接口 279
13.2.4 预编译执行SQL语句的PreparedStatement接口 280
13.2.5 结果集ResultSet接口 280
13.2.6 及时关闭连接 282
13.2.7 情景应用：JDBC连接SQL Server 2005数据库 282
13.3 JDBC操作数据库 283
13.3.1 添加数据 283
13.3.2 查询数据 286
13.3.3 修改数据 289
13.3.4 删除数据 291
13.3.5 批处理 293
13.3.6 情景应用：调用存储过程 296
13.4 JDBC在Java Web中的应用 299
13.4.1 开发模式 299
13.4.2 分页查询 299
13.5 实战练习 305
13.5.1 应用存储过程操作数据 305
13.5.2 网站用户注册 306
13.6 本章小结 306 
第3篇 高 级 篇
第14章 文件上传组件 292
14.1 jspSmartUpload组件简介 309
14.2 jspSmartUpload组件的核心类 309
14.2.1 保存信息的File类 309
14.2.2 存储文件的Files类 311
14.2.3 提供表单信息的Request类 311
14.2.4 组件的核心SmartUpload类 312
14.2.5 情景应用：采用jspSmartUpload组件操作文件 313
14.3 commons-fileload组件简介 317
14.4 commons-fileupload组件的核心类 317
14.4.1 上传的核心类DiskFileUpload 317
14.4.2 处理的核心类ServletFileUpload 319
14.4.3 限制文件类型的SuffixFvileFilter类 319
14.4.4 情景应用：限制上传文件的类型 320
14.5 实战练习 321
14.5.1 上传中文名文件 321
14.5.2 获取表单的元素值 322
14.6 本章小结 322
第15章 解析XML 307
15.1 DOM技术 324
15.2 DOM编程 324
15.2.1 DOM接口 324
15.2.2 使用DOM读取XML文件 326
15.3 SAX技术 328
15.4 SAX编程 328
15.4.1 SAX常用接口 328
15.4.2 SAX实现方法 331
15.4.3 情景应用：使用SAX解析XML 332
15.5 SAX和DOM比较 335
15.6 选择DOM和SAX 335
15.7 实战练习 336
15.7.1 DOM解析XML 336
15.7.2 SAX解析XML 336
15.8 本章小结 337
第16章 应用Ajax技术 322
16.1 Ajax 简介 339
16.1.1 Ajax概述 339
16.1.2 Ajax的开发模式 339
16.1.3 Ajax的优点 339
16.2 Ajax使用的技术 340
16.2.1 JavaScript脚本语言 340
16.2.2 XMLHttpRequest 340
16.2.3 XML语言 342
16.2.4 DOM技术 342
16.2.5 CSS技术 342
16.3 搭建Ajax开发框架 342
16.4 Ajax的MVC架构设计 343
16.5 Ajax开发需要注意的问题 347
16.5.1 浏览器兼容性问题 347
16.5.2 封装XMLHttpRequest对象 347
16.5.3 性能问题 347
16.5.4 中文编码问题 347
16.6 Ajax技术的典型应用 348
16.6.1 情景应用一：检测用户名 348
16.6.2 情景应用二：级联下拉列表框 350
16.7 实战练习 351
16.7.1 实现无刷新分页 351
16.7.2 检查用户名是否重复 352
16.8 本章小结 353
第17章 Struts 2框架 338
17.1 Struts 2框架 355
17.1.1 理解MVC的原理 355
17.1.2 Struts 2框架的产生 355
17.1.3 Struts 2的结构体系 356
17.2 Struts 2 入门 356
17.2.1 获取与配置Struts 2 356
17.2.2 创建第1个Struts 2程序 357
17.3 Action对象 359
17.3.1 认识Action对象 359
17.3.2 请求参数的注入原理 360
17.3.3 Action的基本流程 360
17.3.4 动态Action 361
17.3.5 应用动态Action 361
17.4 Struts 2的配置文件 364
17.4.1 Struts 2的配置文件类型 364
17.4.2 配置Struts 2包 364
17.4.3 配置名称空间 364
17.4.4 Action的相关配置 365
17.4.5 使用通配符简化配置 366
17.4.6 配置返回结果 367
17.5 Struts 2的开发模式 367
17.5.1 实现与Servlet API的交互 367
17.5.2 域模型DomainModel 368
17.5.3 驱动模型ModelDriven 369
17.6 Struts 2的标签库 370
17.6.1 应用数据标签 370
17.6.2 应用控制标签 372
17.6.3 应用表单标签 374
17.7 Struts 2的拦截器 375
17.7.1 拦截器概述 375
17.7.2 拦截器API 376
17.7.3 情景应用：使用拦截器 377
17.8 数据验证机制 378
17.8.1 手动验证 378
17.8.2 验证文件的命名规则 379
17.8.3 验证文件的编写风格 379
17.9 实战练习 380
17.9.1 Struts 2处理表单数据 380
17.9.2 Struts 2标签下的用户注册 380
17.10 本章小结 381
第18章 Hibernate技术 366
18.1 初识Hibernate 383
18.1.1 ORM原理 383
18.1.2 Hibernate简介 383
18.2 Hibernate入门 384
18.2.1 获取Hibernate 384
18.2.2 Hibernate配置文件 384
18.2.3 编写持久化类 385
18.2.4 Hibernate映射 386
18.2.5 Hibernate主键策略 387
18.3 Hibernate数据持久化 388
18.3.1 Hibernate实例状态 388
18.3.2 Hibernate初始化类 388
18.3.3 保存数据 390
18.3.4 查询数据 391
18.3.5 删除数据 393
18.3.6 修改数据 393
18.3.7 延迟加载 394
18.4 使用Hibernate的缓存 395
18.4.1 情景应用一：使用一级缓存 395
18.4.2 情景应用二：配置和使用二级缓存 396
18.5 实体关联关系映射 397
18.5.1 数据模型与领域模型 398
18.5.2 理解并配置多对一单向关联 398
18.5.3 理解并配置多对一双向关联 399
18.5.4 理解并配置一对一主键关联 401
18.5.5 理解并配置一对一外键关联 403
18.5.6 理解并配置多对多关联关系 404
18.5.7 级联操作 406
18.6 实体继承关系映射 407
18.6.1 类继承树映射为一个表 407
18.6.2 每个子类映射为一个表 409
18.6.3 每个具体类映射为一个表 410
18.7 Hibernate查询语言 411
18.7.1 HQL语言 411
18.7.2 查询实体对象 412
18.7.3 条件查询 413
18.7.4 HQL参数绑定机制 413
18.7.5 排序查询 413
18.7.6 应用聚合函数 414
18.7.7 分组方法 414
18.7.8 联合查询 415
18.7.9 情景应用：利用子查询获取ID值最小的员工信息并显示结果 416
18.8 实战练习 416
18.8.1 修改员工信息 416
18.8.2 员工信息的模糊查询 417
18.9 本章小结 418
第19章 Spring技术 403
19.1 Spring概述 420
19.1.1 Spring组成 420
19.1.2 获取Spring 421
19.1.3 配置Spring 421
19.1.4 使用BeanFactory管理Bean 422
19.1.5 应用ApllicationContext 422
19.2 依赖注入 423
19.2.1 控制反转与依赖注入 423
19.2.2 配置Bean 424
19.2.3 Setter注入 424
19.2.3 构造器注入 425
19.2.5 引用其他Bean 427
19.2.6 创建匿名内部JavaBean 428
19.3 自动装配 428
19.3.1 按Bean名称装配 428
19.3.2 按Bean类型装配 429
19.3.3 自动装配的其他方式 430
19.4 Bean的作用域 431
19.4.1 Spring中的Bean 431
19.4.2 Singleton的作用域 431
19.4.3 Prototype的作用域 432
19.5 bean的特殊处理 432
19.5.1 初始化与销毁 432
19.5.2 自定义属性编辑器 433
19.6 AOP概述 435
19.6.1 AOP术语 435
19.6.2 情景应用：AOP的简单实现 436
19.7 Spring的切入点 437
19.7.1 静态与动态切入点 438
19.7.2 深入静态切入点 439
19.7.3 深入切入点底层 439
19.7.4 Spring中的其他切入点 440
19.8 Aspect对AOP的支持 440
19.8.1 Aspect概述 440
19.8.2 Spring中的Aspect 441
19.8.3 DefaultPointcutAdvisor切入点配置器 441
19.8.4 NameMatchMethodPointcutAdvisor切入点配置器 442
19.9 Spring持久化 442
19.9.1 DAO模式 442
19.9.2 Spring的DAO理念 443
19.9.3 事务管理 445
19.9.4 应用JdbcTemplate操作数据库 448
19.9.5 与Hibernate整合 449
19.9.6 情景应用：整合Spring与Hibernate在tb_user表中添加信息 450
19.10 实战练习 451
19.10.1 登录页面国际化 451
19.10.2 Spring与Hibernate整合批量添加数据 452
19.11 本章小结 452 
第4篇 实 战 篇
第20章 技术交流平台——论坛 438
20.1 模块概述 455
20.1.1 开发背景 455
20.1.2 功能结构 455
20.1.3 系统流程 456
20.2 技术攻关 456
20.2.1 Struts 2、Spring 2及Hibernate 3整合流程 456
20.2.2 jQuery常用操作 456
20.3 数据库设计 457
20.3.1 设计E-R图 457
20.3.2 数据库表设计 458
20.4 公共模块设计 459
20.4.1 Spring+Hibernate组合实现持久层 460
20.4.2 使用Struts 2标签分页 461
20.5 主页面设计 463
20.5.1 首页设计 463
20.5.2 论坛页设计 464
20.6 文章维护模块设计 465
20.6.1 添加文章模块 465
20.6.2 浏览文章 467
20.6.3 文章回复 468
20.6.4 修改文章 469
20.6.5 删除文章 469
20.7 文章搜索模块设计 470
20.7.1 搜索我的文章 470
20.7.2 根据关键字搜索文章 471
20.7.3 热门搜索 473
20.7.4 搜索文章作者的所有文章 474
20.7.5 搜索回复作者的所有文章 475
20.8 开发总结 476
20.8.1 文章回复的异步提交难点 476
20.8.2 系统当前位置动态设置的难点 478
第21章 GO购网络商城 465
21.1 GO购网络商城概述 482
21.1.1 开发背景 482
21.1.2 需求分析 482
21.1.3 可行性分析 482
21.1.4 功能结构 482
21.1.5 系统流程 483
21.1.6 系统预览 483
21.2 系统整体设计 484
21.2.1 逻辑分层设计 484
21.2.2 系统文件夹结构 484
21.2.3 页面结构设计 485
21.2.4 开发环境 486
21.3 数据库设计 486
21.3.1 E-R图设计 486
21.3.2 创建数据库及数据表 487
21.4 搭建项目环境 489
21.4.1 配置Struts 2 489
21.4.2 配置Hibernate 491
21.4.3 配置Spring 492
21.4.4 配置web.xml 493
21.5 公共模块设计 494
21.5.1 Hibernate的Session初始化类 494
21.5.2 泛型工具类 496
21.5.3 数据持久化类 496
21.5.4 分页设计 498
21.5.5 字符串工具类 501
21.6 实体映射 502
21.6.1 实体对象设计 502
21.6.2 会员信息 503
21.6.3 订单信息 503
21.6.4 订单条目信息 504
21.6.5 商品信息 505
21.6.6 商品类别信息 506
21.7 登录注册模块设计 507
21.7.1 模块概述 507
21.7.2 实现注册模块 507
21.7.3 实现登录模块 510
21.7.4 单元测试 512
21.8 前台商品信息查询模块设计 513
21.8.1 模块概述 513
21.8.2 实现商品类别分级查询 513
21.8.3 实现商品搜索 515
21.8.4 实现前台查询其他商品 516
21.8.5 单元测试 518
21.9 购物车模块设计 520
21.9.1 模块概述 520
21.9.2 实现购物车的基本功能 520
21.9.3 实现订单的相关功能 523
21.9.4 单元测试 526
21.10 后台商品管理模块设计 526
21.10.1 模块框架 526
21.10.2 实现商品管理功能 526
21.10.3 实现商品类别管理功能 531
21.10.4 单元测试 534
21.11 后台订单管理模块设计 534
21.11.1 模块框架 534
21.11.2 实现后台订单查询 534
21.11.3 实现后台订单状态管理 536
21.11.4 单元测试 538
21.12 系统发布 538
21.12.1 配置Tomcat服务器 538
21.12.2 配置DNS服务器 539
21.13 开发总结 542
附录 术语解释 543
第1章 JavaWeb概述 543
第2章 搭建开发环境 544
第3章 数据库的安装与创建 544
第4章 Java语言基础 544
第5章 JavaScript语言 545
第6章 初识XML 545
第7章 JSP语法 546
第8章 JSP内置对象 546
第10章 Servlet技术 546
第11章 EL表达式 546
第12章 JSTL标签库 546
第13章 数据库应用开发 547
第14章 文件上传组件 547
第15章 解析XML 547
第16章 Ajax简介 547
第18章 邂逅Hibernate技术 548
第19章 解密Spring技术 548