标题：学通Java Web的24堂课
图书信息
学通Java Web的24堂课 明日科技 陈丹丹、卢瀚 编著
ISBN 9787302255390 　　
2011年6月出版 
定价：79.80元含（含光盘1张） 
16开  
内容简介
本书以24堂课的形式，从初中级用户的角度出发，科学合理地设计，突出学、练、用结合，全面讲述了学习Java Web程序开发必备的知识和技能。主要包括：搭建开发环境、JSP中的Java程序、HTML语言与CSS样式、JavaScript脚本语言、掌握JSP语法、使用JSP内置对象、JavaBean技术、Servlet技术、使用EL表达式、JSTL核心标签库、使用Ajax技术、Struts2基础、深入Struts2、Hibernate框架基础、Hibernate高级应用、Spring框架、Spring MVC框架、JSP操作XML、文件上传与下载、动态图表、Java Mail组件、博客系统、JSP+Hibernate实现留言模块、用户管理系统。 
本书适合有志于从事软件开发的初学者、高校计算机相关专业学生和毕业生，也可作为软件开发人员的参考手册，或者高校的教学参考书。
本书通过教学视频、实例训练、综合应用、项目实践、自我测试、行动指南逐步深入和强化训练等方式，并辅之以心理励志，来持续激发读者主动学习、自发学习。
本书给出了285个小型实例，196个综合应用，6个项目案例（部分在光盘中），各类技巧、试验200余个，测试题目210个，以方便读者训练、测试和快速提升。
本书DVD光盘给出了110集（281段）多媒体教学视频讲解，每个实例都给出了相应的源程序，可直接复制源码学习或应用。
前言
前  言
Java是Sun公司推出的能够跨越多平台的、可移植性最高的一种面向对象的编程语言，也是目前最先进、特征最丰富、功能最强大的计算机语言。利用Java可以编写桌面应用程序、Web应用程序、分布式系统、嵌入式系统应用程序等，从而使其成为应用范围最广泛的开发语言，特别是在Web程序开发方面。
目前，介绍Java Web开发领域的书籍有很多，但是能真正把技术讲透的却不多，尤其是结合项目实战来学习的书籍就更少了。本书将从初学者的角度，循序渐进地讲解使用Java语言和开源框架进行Web程序开发应该掌握的各项技术，其中主要包括JSP/Servlet技术、常用的Web开发框架和Web开发实用技术等，这些都是每一个Java Web开发程序员所必备的。
本书内容
学、练、用到精通只需24堂课。本书从初中级用户的角度，科学合理地设计，通过24堂课全面讲述了Java Web程序开发必备知识和技能，如下图所示。
第1部分  基础篇（第1～6堂课）：讲述了搭建开发环境、JSP中的Java程序、HTML语言与CSS样式、JavaScript脚本语言、掌握JSP语法、使用JSP内置对象等内容。在讲解过程中，为了便于理解，结合了大量的图示、举例、技巧、录像等，使读者能够快速掌握Java开发工具和JSP技术，为以后进行Java Web编程打下坚实的基础。
第2部分  提高篇（第7～11堂课）：讲述了JavaBean技术、Servlet技术、使用EL表达式、JSTL核心标签库和使用Ajax技术等，其中结合了大量的实例和图解，详细讲解了JSP程序开发所需的高级技术。通过对这一部分的学习，读者应该能够完全掌握JSP语言，并且拥有Java Web程序开发的能力。
第3部分  框架篇（第12～17堂课）：主要介绍了开发Java Web应用程序的流行框架技术，其中包括Struts2基础、深入Struts2、Hibernate框架基础、Hibernate高级应用、Spring框架、Spring的MVC框架。通过对这一部分的学习，读者将能够开发大型的网站程序。 
第4部分  实用技术篇（第18～21堂课）：主要介绍了Java?Web应用程序开发中的实用技术，其中包括JSP操作XML、文件上传与下载、动态图表和Java Mail组件等，这些都是Java Web程序开发所必需的技术和组件，是对前几部分知识的补充。通过对这一部分的学习，读者可以开发更加完整、美观和实用的Java Web网站。 
第5部分  实战篇（第22～24堂课）：通过3个完整的项目实例来介绍大型应用程序的设计过程，其中包括博客系统、JSP+Hibernate实现留言模块和用户管理系统。这3个项目是作者精心挑选的，涵盖了数据库、Struts、Hibernate、Spring多个框架及其整合技术。通过对这3个项目的介绍，读者可以巩固前面所学的知识和技术，积累项目开发经验。
本书特点
* 配备110集（281段）多媒体教学视频讲解。
本书DVD光盘提供了覆盖全书的语音视频讲解，读者可以通过视频快速、直观、轻松地学习。
* 每一堂课都结合“照猫画虎”、“情景应用”。
为了增强读者动手能力，激发学习兴趣，本书提供了“照猫画虎”和“情景应用”栏目，根据实例模仿着去做是学习编程的最快方式。
* 每一堂课都结合励志故事和“行动指南”，时刻激励和鼓舞。
我们认为学习中尤其是最初的一段时间非常有必要不断地对学习者以激励和鼓舞，让他们坚持下来是至关重要的，因此书中不间断地用一些励志故事和行动指南以鼓舞其信心。
* 光盘提供了本书的所有代码，即使只有一行。
本书光盘不仅提供了所有实例的源程序，还提供了书中所有示例的源代码，哪怕只有一行。读者可以直接复制，以提高学习效率。
* 本书所有习题和实战都给出了答案，部分习题还有解析，读者可以对照查阅。
读者对象
? 有志于从事软件开发的初学者
? 高等院校计算机相关专业的老师和学生
? 准备从事软件开发的求职者
? 参与毕业设计的学生    
? 初中级程序开发人员
? 程序测试及维护人员   
本书作者
本书由明日科技组织编写，参加编写的程序员有陈丹丹、卢瀚、朱晓、王春斌、王国辉、赛奎春、潘凯华、刘欣、李慧、高春艳、李伟、孙秀梅、杨丽、刘玲玲、刘燕、陈英、李鑫、李贺、肖鑫、张丽娜、沈博、刘冠男、曹飞飞、李丽、聂喜婷、王明昭、张英豪、王小科、赵会东、白伟明等。
由于水平有限，书中疏漏和不足之处在所难免，恳请广大读者朋友批评指正。
技术支持与服务
最后，感谢您选择本书，希望本书能成为您编程路上的领航者。
祝读书快乐！
特别提醒：
亲爱的读者朋友，由于近期纸张价格和印制成本大幅上涨，为不增加读者朋友的负担，又不减少书的内容，本书的最后几章内容不得不放在配书光盘中（参见目录），由此给您带来了不便，在此深表歉意。
编  者
图书目录
目  录
第1部分  基础篇
第1堂课  搭建开发环境 3
视频讲解：97分钟
1.1  Java Web应用的开发环境概述 4
1.1.1  开发工具包JDK 4
1.1.2  Web服务器 4
1.1.3  Web浏览器 5
1.2  JDK的安装与配置 5
1.2.1  下载JDK 5
1.2.2  安装JDK 6
1.2.3  Windows系统下配置和测试JDK 7
1.3  Tomcat的安装与配置 9
1.3.1  下载Tomcat 9
1.3.2  Tomcat的目录结构 11
1.3.3  修改Tomcat的默认端口 11
1.3.4  部署Web应用 11
1.4  Eclipse的安装与使用 12
1.4.1  Eclipse的下载与安装 12
1.4.2  启动Eclipse 13
1.4.3  Eclipse工作台 14
1.4.4  使用Eclipse开发Web应用 14
1.4.5  Eclipse的常用快捷键 18
1.5  照猫画虎——基本功训练 20
1.5.1  基本功训练1——配置JDK的环境变量 20
1.5.2  基本功训练2——在DOS环境中测试
JDK 21
1.5.3  基本功训练3——在DOS环境中编译
Java源文件 21
1.5.4  基本功训练4——在Tomcat中手动部署
Web应用 23
1.5.5  基本功训练5——手动启动与关闭
Tomcat服务器 24
1.6  情景应用——拓展与实践 25
1.6.1  情景应用1——在Eclipse中配置
Tomcat服务器 25
1.6.2  情景应用2——创建第一个Web项目 26
1.6.3  情景应用3——设置Eclipse工作空间
的字符编码 27
1.6.4  情景应用4——设置代码提示的快捷键 28
1.6.5  情景应用5——为项目导入所需的Jar包 29
1.7  自我测试 29
1.8  行动指南 30
1.9  成功可以复制——80后新贵、泡泡网
CEO李想 31
第2堂课  JSP中的Java程序 33
视频讲解：205分钟
2.1  Java数据类型 34
2.1.1  Java基本数据类型 34
2.1.2  变量与常量 34
2.1.3  对应基本数据类型的内置类 36
2.2  运算符和表达式 36
2.2.1  算术运算符 36
2.2.2  关系运算符 37
2.2.3  逻辑运算符 37
2.2.4  三元运算符 38
2.2.5  表达式 39
2.3  流程控制语句 39
2.3.1  条件语句 39
2.3.2  循环语句 42
2.3.3  跳转语句 44
2.4  面向对象编程基础 44
2.4.1  Java中的类和对象 44
2.4.2  Java中的修饰符 45
2.4.3  抽象类和接口 46
2.4.4  Java中的代码注释 49
2.4.5  异常处理技术 50
2.5  照猫画虎——基本功训练 52
2.5.1  基本功训练1——判断变量的奇偶性 52
2.5.2  基本功训练2——输出大于1的40个
素数 53
2.5.3  基本功训练3——定义包含属性和
方法的汽车类 54
2.5.4  基本功训练4——输出空心的菱形 55
2.5.5  基本功训练5——抛出“除数不能为
负数”异常信息 56
2.6  情景应用——拓展与实践 57
2.6.1  情景应用1——输出长方形的面积 57
2.6.2  情景应用2——switch语句实现生肖
查询 57
2.6.3  情景应用3——统计图书的销售量 59
2.6.4  情景应用4——输出数字对应的金字塔 60
2.6.5  情景应用5——实现温度单位转换 60
2.7  自我测试 61
2.8  行动指南 63
2.9  成功可以复制——Java技术之父James 
Gosling 63
第3堂课  HTML语言与CSS样式 65
视频讲解：51分钟
3.1  XHTML基础 66
3.1.1  XHTML语言的语法 66
3.1.2  XHTML文件的结构 68
3.1.3  编辑文字版面 70
3.1.4  插入图像与链接 72
3.1.5  编写XHTML表格 73
3.1.6  设计XHTML表单 74
3.2  CSS样式应用 78
3.2.1  将CSS样式嵌入到HTML中 78
3.2.2  CSS选择符 79
3.2.3  常见的CSS样式属性 81
3.3  设计页面布局 86
3.3.1  <div>和<span>标签 86
3.3.2  区块模型 87
3.3.3  区块浮动 87
3.4  照猫画虎——基本功训练 90
3.4.1  基本功训练1——制作可以输入密码的
文本框 90
3.4.2  基本功训练2——应用删除线样式标注
商品特价 91
3.4.3  基本功训练3——鼠标经过表格时显示
提示信息 91
3.4.4  基本功训练4——显示自定义的鼠标形状 92
3.4.5  基本功训练5——CSS控制绝对定位 94
3.5  情景应用——拓展与实践 95
3.5.1  情景应用1——编写用户注册表单页 95
3.5.2  情景应用2——为网页添加背景音乐 96
3.5.3  情景应用3——插入Flash动画 96
3.5.4  情景应用4——文字的发光特效 97
3.5.5  情景应用5——打造经典的导航栏 98
3.6  自我测试 100
3.7  行动指南 101
3.8  成功可以复制——杀毒王王江民 102
第4堂课  JavaScript脚本语言 105
视频讲解：239分钟
4.1  了解JavaScript 106
4.1.1  什么是JavaScript 106
4.1.2  JavaScript的主要特点 106
4.1.3  JavaScript与Java的区别 106
4.2  在Web页面中使用JavaScript 107
4.2.1  在页面中直接嵌入JavaScript 107
4.2.2  链接外部JavaScript 107
4.3  JavaScript语言基础 108
4.3.1  JavaScript的语法 108
4.3.2  JavaScript中的关键字 109
4.3.3  了解JavaScript的数据类型 110
4.3.4  变量的定义及使用 112
4.3.5  运算符的应用 113
4.3.6  应用流程控制语句 115
4.4  使用正则表达式 118
4.4.1  正则表达式的语法 118
4.4.2  创建正则表达式对象（RegExp） 120
4.4.3  应用RegExp对象执行模式匹配 121
4.5  函数 123
4.5.1  函数的定义 123
4.5.2  函数的调用 123
4.5.3  匿名函数 124
4.6  事件和事件处理程序 125
4.6.1  什么是事件和事件处理程序 125
4.6.2  JavaScript的常用事件 125
4.6.3  事件处理程序的调用 126
4.7  常用对象 127
4.7.1  String对象 127
4.7.2  Math对象 130
4.7.3  Date对象 131
4.7.4  window对象 134
4.8  DOM技术 137
4.8.1  DOM概述 137
4.8.2  DOM的分层结构 137
4.8.3  遍历文档 138
4.8.4  获取文档中的指定元素 140
4.8.5  操作文档 140
4.9  照猫画虎——基本功训练 142
4.9.1  基本功训练1——通过switch语句根据
当前日期弹出不同的提示信息 142
4.9.2  基本功训练2——通过for循环计算10
以内（不包括10）所有偶数的和 143
4.9.3  基本功训练3——验证用户输入的年龄
是否为数字 144
4.9.4  基本功训练4——去掉字符串左右空格 145
4.9.5  基本功训练5——限制输入字符串的
长度 145
4.10  情景应用——拓展与实践 147
4.10.1  情景应用1——验证E-mail是否正确 147
4.10.2  情景应用2——验证手机号码是否正确 148
4.10.3  情景应用3——计算两个日期相差
的天数 148
4.10.4  情景应用4——将某地区的人口总数
分位显示 150
4.10.5  情景应用5——实现可编辑的表格 151
4.11  自我测试 152
4.12  行动指南 154
4.13  成功可以复制——缔造华人的硅谷
传奇杨致远 155
第5堂课  掌握JSP语法 157
视频讲解：66分钟
5.1  JSP页面的基本构成 158
5.2  JSP指令标签 159
5.2.1  页码指令page 159
5.2.2  文件包含指令include 161
5.2.3  引用标签库指令taglib 162
5.3  嵌入Java代码 163
5.3.1  代码片段 163
5.3.2  JSP表达式 163
5.4  巧用注释 163
5.4.1  HTML注释 163
5.4.2  JSP注释 164
5.4.3  代码注释 164
5.4.4  动态注释 164
5.5  JSP动作标签 165
5.5.1  包含外部文件的<jsp:include>动作标签 165
5.5.2  请求转发的<jsp:forward>动作标签 166
5.5.3  设置参数的<jsp:param>动作标签 167
5.6  照猫画虎——基本功训练 167
5.6.1  基本功训练1——自定义错误提示页面 167
5.6.2  基本功训练2——在页面中动态添加
表格 167
5.6.3  基本功训练3——将请求转发至登录
页面 168
5.6.4  基本功训练4——导入版权信息页 170
5.6.5  基本功训练5——在JSP页面中输出
星号组成的金字塔 171
5.7  情景应用——拓展与实践 172
5.7.1  情景应用1——根据数据表动态生成
下拉列表 172
5.7.2  情景应用2——JSP脚本嵌入
JavaScript代码 173
5.7.3  情景应用3——定义可输入文字的
下拉列表 174
5.7.4  情景应用4——在页面中引入一个
HTML文件 175
5.7.5  情景应用5——将3个页面组成一个
新的页面 176
5.8  自我测试 178
5.9  行动指南 178
5.10  成功可以复制——全球最大中间件
公司BEA创始人之一庄思浩 179
第6堂课  使用JSP内置对象 181
视频讲解：91分钟
6.1  JSP内置对象概述 182
6.2  页面请求对象request 182
6.2.1  获取请求参数值 182
6.2.2  获取表单提交的信息 183
6.2.3  解决中文乱码 184
6.2.4  获取客户端信息 185
6.2.5  在作用域中管理属性 186
6.2.6  获取cookie 187
6.2.7  显示国际化信息 188
6.3  客户端响应对象response 189
6.3.1  重定向网页 189
6.3.2  设置输出缓冲 189
6.3.3  处理HTTP文件头 190
6.4  session会话对象 191
6.4.1  创建及获取session会话 191
6.4.2  从会话中移除指定的对象 192
6.4.3  设置会话的有效时间 192
6.4.4  销毁session 192
6.4.5  session对象的应用 193
6.5  application对象 195
6.5.1  应用程序初始化参数 195
6.5.2  管理应用程序环境属性 196
6.6  输出对象out 196
6.6.1  向客户端输出数据 196
6.6.2  管理相应缓冲区 196
6.7  其他内置对象 197
6.7.1  获取会话范围的pageContext对象 197
6.7.2  读取web.xml配置信息的config对象 197
6.7.3  应答或请求的page对象 198
6.7.4  获取异常信息的exception对象 198
6.8  照猫画虎——基本功训练 200
6.8.1  基本功训练1——application实现网页
计数器 200
6.8.2  基本功训练2——获取用户IP地址 201
6.8.3  基本功训练3——显示留言信息 201
6.8.4  基本功训练4——给出session超时提示 203
6.8.5  基本功训练5——获取传输数据的
协议名 204
6.9  情景应用——拓展与实践 205
6.9.1  情景应用1——在登录页面中添加
验证码 205
6.9.2  情景应用2——实现自动登录 207
6.9.3  情景应用3——定时刷新页面 208
6.9.4  情景应用4——统计用户在某页停留
时间 209
6.9.5  情景应用5——将表单请求提交至本页 210
6.10  自我测试 212
6.11  行动指南 213
6.12  成功可以复制——让下载迅雷不及
掩耳邹胜龙 213
第2部分  提高篇
第7堂课  JavaBean技术 217
视频讲解：75分钟
7.1  JavaBean技术介绍 218
7.1.1  JavaBean简介 218
7.1.2  JavaBean规范 219
7.2  JavaBean在JSP中的应用 220
7.2.1  <jsp:useBean>标签 220
7.2.2  <jsp:setProperty>标签 221
7.2.3  <jsp:getProperty>标签 223
7.2.4  JavaBean的作用域 225
7.3  照猫画虎——基本功训练 226
7.3.1  基本功训练1——定义获取当前年
份方法 226
7.3.2  基本功训练2——判断用户是否输入
指定字符开头的字符串 228
7.3.3  基本功训练3——定义数据查询方法 230
7.3.4  基本功训练4——将长整型数字分位
显示 232
7.3.5  基本功训练5——判断字符串是否
包含数字 234
7.4  情景应用——拓展与实践 236
7.4.1  情景应用1——应用JavaBean处理
中文 236
7.4.2  情景应用2——将用户选择内容转换
为字符串 239
7.4.3  情景应用3——小写金额转换成大写
金额 241
7.4.4  情景应用4——过滤非法字符 244
7.4.5  情景应用5——实现数据分页 246
7.5  自我测试 249
7.6  行动指南 249
7.7  成功可以复制——软件业的华人教父
王嘉廉 250
第8堂课  Servlet技术 253
视频讲解：90分钟
8.1  Servlet基础 254
8.1.1  初步认识Servlet 254
8.1.2  Servlet技术功能 254
8.1.3  Servlet技术特点 255
8.2  Servlet开发 256
8.2.1  创建Servlet 256
8.2.2  配置Servlet的相关元素 256
8.3  Servlet核心API 258
8.3.1  Servlet接口 258
8.3.2  GenericServlet抽象类 258
8.3.3  HttpServlet抽象类 259
8.3.4  HttpServletRequest接口 259
8.3.5  HttpServletResponse接口 260
8.3.6  ServletConfig接口 261
8.4  理解Servlet的生命周期 261
8.5  Servlet过滤器 262
8.5.1  过滤器概述 263
8.5.2  过滤器API 263
8.5.3  配置过滤器 264
8.5.4  编写字符编码过滤器 265
8.6  照猫画虎——基本功训练 267
8.6.1  基本功训练1——在Servlet中实现
请求转发 267
8.6.2  基本功训练2——在Servlet中处理
表单提交的数据 269
8.6.3  基本功训练3——在Servlet中实现
页面重定向 270
8.6.4  基本功训练4——动态生成HTML文档 271
8.6.5  基本功训练5——在Servlet中向
客户端写Cookie信息 272
8.7  情景应用——拓展与实践 274
8.7.1  情景应用1——统计网站的访问量 274
8.7.2  情景应用2——生成网站表单的验证码 275
8.7.3  情景应用3——将用户信息导出到
Excel 277
8.7.4  情景应用4——利用Servlet实现个人
所得税计算器 278
8.7.5  情景应用5——过滤用户输入的
敏感文字 280
8.8  自我测试 283
8.9  行动指南 284
8.10  成功可以复制——图文世界的缔造者
约翰·沃洛克 285
第9堂课  使用EL表达式 287
视频讲解：61分钟
9.1  EL概述 288
9.1.1  使用EL表达式的前提条件 288
9.1.2  EL表达式的基本语法 289
9.1.3  EL表达式的特点 289
9.2  EL表达式的存取范围 289
9.3  EL表达式的运算符 290
9.3.1  存取数据运算符 290
9.3.2  算术运算符 291
9.3.3  关系运算符 291
9.3.4  逻辑运算符 292
9.3.5  empty运算符 293
9.3.6  条件运算符 293
9.3.7  运算符的优先级 293
9.4  EL表达式中的保留字 294
9.5  EL表达式中的隐含对象 295
9.5.1  pageContext对象的应用 295
9.5.2  param和paramValues对象的应用 295
9.5.3  header和headerValues对象的应用 296
9.5.4  访问作用域范围的隐含对象 296
9.5.5  cookie对象的应用 297
9.5.6  initParam对象的应用 297
9.6  照猫画虎——基本功训练 297
9.6.1  基本功训练1——实现计算卡 297
9.6.2  基本功训练2——EL实现数字比较卡 298
9.6.3  基本功训练3——网页中获取cookie
的值 298
9.6.4  基本功训练4——显示表单信息 299
9.6.5  基本功训练5——访问JavaBean
的属性 300
9.7  情景应用——拓展与实践 302
9.7.1  情景应用1——如何禁用EL表达式 302
9.7.2  情景应用2——显示客户端使用的
浏览器 303
9.7.3  情景应用3——显示客户端能接收的
内容类型 303
9.7.4  情景应用4——判断用户是否登录，并
显示不同提示信息 304
9.7.5  情景应用5——判断用户名和密码是否
为空，空则显示相应提示信息 305
9.8  自我测试 305
9.9  行动指南 306
9.10  成功可以复制——微型博客Twitter 
创始人埃文·威廉姆斯 307
第10堂课  JSTL核心标签库 309
视频讲解：100分钟
10.1  JSTL技术简介 310
10.2  表达式标签 310
10.2.1  <c:out>输出标签 310
10.2.2  <c:set>设置标签 311
10.2.3  <c:remove>移除标签 313
10.2.4  <c:catch>捕获异常标签 314
10.3  流程控制标签 314
10.3.1  <c:if>条件判断标签 314
10.3.2  <c:choose>、<c:when>和<c:otherwise>
标签 316
10.4  循环标签 317
10.4.1  <c:forEach>循环标签 317
10.4.2  <c:forTokens>迭代标签 318
10.5  URL操作标签 319
10.5.1  <c:import>文件导入标签 320
10.5.2  <c:redirect>重定向标签 321
10.5.3  <c:url>生成URL地址标签 322
10.5.4  <c:param>参数传递标签 323
10.6  照猫画虎——基本功训练 323
10.6.1  基本功训练1——<c:forEach>标签遍历
数组 323
10.6.2  基本功训练2——<c:redirect>标签实现
重定向页面 324
10.6.3  基本功训练3——应用JSTL标签显示
数据库中商品信息 324
10.6.4  基本功训练4——<c:set>设置对象
属性值 327
10.6.5  基本功训练5——<c:choose>保留登录
信息 328
10.7  情景应用——拓展与实战 329
10.7.1  情景应用1——JSTL标签实现国际化 329
10.7.2  情景应用2——应用JSTL导入网站
注册协议 330
10.7.3  情景应用3——JSTL标签实现网站
计数器 331
10.7.4  情景应用4——<c:if>标签判断用户
最喜爱的水果 332
10.7.5  情景应用5——屏蔽页面中出现的
错误 333
10.8  自我测试 333
10.9  行动指南 334
10.10  成功可以复制——不断挑战自己的
成功徐少春 335
第11堂课  使用Ajax技术 337
视频讲解：88分钟
11.1  Ajax简介 338
11.1.1  什么是Ajax 338
11.1.2  Ajax开发模式 338
11.1.3  Ajax的优点 338
11.2  Ajax基础知识 339
11.2.1  XMLHttpRequest对象 339
11.2.2  JavaScript脚本语言 341
11.2.3  文档对象模型DOM 342
11.2.4  XML语言 342
11.2.5  CSS样式表 342
11.3  发送请求与处理响应 342
11.3.1  发送请求 342
11.3.2  处理服务器响应 343
11.3.3  一个完整的实例 345
11.4  Ajax重构 347
11.5  Ajax开发需要注意的几个问题 348
11.5.1  浏览器兼容性问题 348
11.5.2  性能问题 348
11.5.3  中文编码问题 349
11.5.4  安全问题 349
11.6  照猫画虎——基本功训练 350
11.6.1  基本功训练1——显示公告信息 350
11.6.2  基本功训练2——验证用户身份 351
11.6.3  基本功训练3——创建工具提示 353
11.6.4  基本功训练4——在网页中添加实时
走动的系统时钟 354
11.6.5  基本功训练5——实现自动保存草稿 355
11.7  情景应用——拓展与实战 356
11.7.1  情景应用1——自动提交考卷 356
11.7.2  情景应用2——Ajax验证用户名是否
被注册 360
11.7.3  情景应用3——Ajax实现聊天室 362
11.7.4  情景应用4——仿百度搜索引擎 364
11.7.5  情景应用5——级联选择框 366
11.8  自我测试 370
11.9  行动指南 371
11.10  可功可以复制——为编程事业而
奋斗终生安德斯·海尔斯伯格 371
第3部分  框架篇
第12堂课  Struts2基础 375
视频讲解：55分钟
12.1  Struts2简介 376
12.1.1  Struts2的产生 376
12.1.2  Struts2的结构 376
12.2  第一个Struts2实例 377
12.2.1  获取Struts2以及相关类库 377
12.2.2  JSP登录页面的创建 377
12.2.3  Action的实现 378
12.2.4  Struts2的配置文件 378
12.2.5  web.xml的配置 379
12.3  Struts2的配置文件 379
12.3.1  全局配置文件struts.properties 380
12.3.2  核心配置文件struts.xml 380
12.3.3  配置Package和名称空间 381
12.4  Action的应用 381
12.4.1  Action简介 381
12.4.2  Action中的方法 382
12.4.3  Action中方法的执行 382
12.5  Struts2的零配置 383
12.5.1  通过@注解实现零配置 383
12.5.2  零配置时web.xml中的配置 383
12.6  照猫画虎——基本功训练 384
12.6.1  基本功训练1——通过URL执行
Action方法 384
12.6.2  基本功训练2——在Action中配置
执行方法 385
12.6.3  基本功训练3——通过Struts2注解
实现的零配置 386
12.6.4  基本功训练4——零配置下访问Action 387
12.7  情景应用——拓展与实践 387
12.7.1  情景应用1——实现用户登录 387
12.7.2  情景应用2——实现简单计算器 389
12.7.3  情景应用3——实现成绩显示器 390
12.7.4  情景应用4——实现简单投票器 391
12.8  自我测试 392
12.9  行动指南 393
12.10  成功可以复制——因特网的点火人
安德森 393
第13堂课  深入Struts2 395
视频讲解：58分钟
13.1  Struts2标签 396
13.1.1  控制标签 396
13.1.2  数据标签 399
13.1.3  表单UI标签 403
13.2  Struts2数据验证机制 406
13.2.1  手动验证的实现 407
13.2.2  validate()方法的使用 407
13.2.3  Struts2验证框架 409
13.2.4  验证文件的命名规则 410
13.2.5  了解Struts2的内置验证器 411
13.3  数据类型转换器 414
13.3.1  配置转换器 414
13.3.2  在struts.xml中配置转换器 414
13.4  Struts2拦截器 415
13.4.1  了解拦截器 415
13.4.2  内置拦截器 416
13.4.3  拦截器的配置 417
13.4.4  拦截器API 417
13.4.5  带有参数的拦截器 418
13.5  照猫画虎——基本功训练 419
13.5.1  基本功训练1——数据转换器 419
13.5.2  基本功训练2——使用数据标签进行
日期输出 420
13.5.3  基本功训练3——表单标签实现数据
提交 421
13.5.4  基本功训练4——XML中配置的
数据检验器 422
13.6  情景应用——拓展与实践 423
13.6.1  情景应用1——显示注册时间 423
13.6.2  情景应用2——用户信息的表格输出 424
13.6.3  情景应用3——联动选择框 425
13.6.4  情景应用4——防止网页数据的
重复提交 425
13.7  自我测试 426
13.8  行动指南 427
13.9  成功可以复制——知识改变命运、
科技改变生活李彦宏 428
第14堂课  Hibernate框架基础 429
视频讲解：102分钟
14.1  Hibernate简介 430
14.1.1  JDBC劣势 430
14.1.2  ORM中间件 430
14.1.3  Hibernate结构体系 430
14.2  Hibernate入门 431
14.2.1  Hibernate配置文件解析 431
14.2.2  编写持久化类 432
14.2.3  编写映射文件 433
14.2.4  Hibernate基本数据类型的映射 435
14.3  自动建表技术 435
14.4  Hibernate持久化对象 436
14.4.1  编写Hibernate的初始化类 437
14.4.2  添加数据 438
14.4.3  删除数据 439
14.4.4  修改数据 440
14.4.5  查询数据 441
14.5  Hibernate缓存及延迟加载 442
14.5.1  一级缓存 442
14.5.2  二级缓存 443
14.5.3  Lazy策略 444
14.6  照猫画虎——基本功训练 444
14.6.1  基本功训练1——录入图书信息 444
14.6.2  基本功训练2——应用get()方法查询
商品信息 446
14.6.3  基本功训练3——应用load()方法查询
药品信息 447
14.6.4  基本功训练4——删除编号为1的学生
信息 448
14.7  情景应用——拓展与实践 449
14.7.1  情景应用1——延迟加载查询药品
信息 449
14.7.2  情景应用2——Hibernate实现用户
注册 450
14.7.3  情景应用3——修改学生信息 451
14.7.4  情景应用4——批量添加药品信息 453
14.8  自我测试 454
14.9  行动指南 454
14.10  成功可以复制——中国通信设备
行业的领跑者任正非 455
第15堂课  Hibernate高级应用 457
视频讲解：117分钟
15.1  关联关系映射 458
15.1.1  单向关联与双向关联 458
15.1.2  多对一单向关联映射 458
15.1.3  多对一双向关联映射 459
15.1.4  一对一主键关联映射 460
15.1.5  一对一外键关联映射 461
15.1.6  多对多关联映射 462
15.2  继承映射 464
15.2.1  类继承树映射成一张表 464
15.2.2  每个具体类映射成一张表 465
15.2.3  每个子类映射成一张表 466
15.3  HQL检索方式 467
15.3.1  HQL基本语法 467
15.3.2  实例对象与动态实例化对象查询 468
15.3.3  HQL语句的动态赋值 468
15.3.4  条件查询与使用别名 469
15.4  照猫画虎——基本功训练 469
15.4.1  基本功训练1——HQL排序查询订单
信息 469
15.4.2  基本功训练2——HQL查询订单
总金额 471
15.4.3  基本功训练3——HQL实现统计各
部门人数 471
15.4.4  基本功训练4——查询某日期出生的
用户 472
15.5  情景应用——拓展与实践 473
15.5.1  情景应用1——多对一映射添加与查询
图书信息 473
15.5.2  情景应用2——模糊查询药品信息 476
15.5.3  情景应用3——内连接查询图书信息 478
15.5.4  情景应用4——利用多态查询判断
用户登录身份 480
15.6  自我测试 482
15.7  行动指南 483
15.8  成功可以复制——通往成功的桥梁
陈天桥 483
第16堂课  Spring框架 485
视频讲解：172分钟
16.1  Spring概述 486
16.1.1  初识Spring 486
16.1.2  Spring的获取 487
16.1.3  简单配置Spring 487
16.1.4  使用BeanFactory管理Bean 488
16.1.5  ApplicationContext的应用 488
16.2  依赖注入 489
16.2.1  控制反转与依赖注入 489
16.2.2  Bean的配置 490
16.2.3  Setter注入 491
16.2.4  构造器注入 492
16.2.5  引用其他的Bean 493
16.2.6  匿名内部JavaBean的创建 494
16.3  Spring AOP概述 495
16.3.1  了解AOP 495
16.3.2  AOP的简单实现 496
16.4  Spring的切入点 497
16.4.1  静态切入点与动态切入点 498
16.4.2  深入静态切入点 499
16.4.3  深入切入点底层 499
16.4.4  Spring中其他切入点 500
16.5  Aspect对AOP的支持 500
16.5.1  了解Aspect 500
16.5.2  Spring中的Aspect 501
16.5.3  DefaultPointcutAdvisor切入点
配置器 501
16.5.4  NameMatchMethodPointcutAdvisor
切入点配置器 502
16.6  Spring持久化 502
16.6.1  DAO模式介绍 502
16.6.2  Spring的DAO理念 503
16.6.3  事务应用的管理 505
16.6.4  应用JdbcTemplate操作数据库 506
16.6.5  与Hibernate整合 507
16.7  照猫画虎——基本功训练 508
16.7.1  基本功训练1——应用IoC实现的
第一个Spring实例 508
16.7.2  基本功训练2——验证用户登录 510
16.7.3  基本功训练3——登录页面国际化 512
16.7.4  基本功训练4——利用TransactionTemplate
实现编程式事务管理 513
16.7.5  基本功训练5——
TransactionProxyFactoryBean
实现声明式事务管理 515
16.8  情景应用——拓展与实践 516
16.8.1  情景应用1——在Spring中利用DAO
模式向商品信息表中添加数据 516
16.8.2  情景应用2——Spring AOP实现用户
注册 518
16.8.3  情景应用3——利用JdbcTemplate
向员工信息表中添加数据 521
16.8.4  情景应用4——整合Spring和Hibernate
向员工信息表添加数据 523
16.8.5  情景应用5——整合Spring和Hibernate
操作商品库存表 525
16.9  自我测试 531
16.10  行动指南 532
16.11  成功可以复制——中国第一程序员
求伯君 533
第17堂课  Spring MVC框架 535
视频讲解：72分钟
17.1  Spring MVC简介 536
17.1.1  Spring MVC的特点 536
17.1.2  Spring MVC的不足 536
17.2  Spring MVC中的组件 536
17.2.1  核心控制器 536
17.2.2  业务控制器 537
17.2.3  控制器映射 537
17.2.4  模型与视图 537
17.2.5  视图解析器 537
17.2.6  Command对象 537
17.3  Spring MVC核心控制器 537
17.4  Spring MVC控制器映射 538
17.4.1  配置BeanNameUrlHandlerMapping 538
17.4.2  配置SimpleUrlHandlerMapping 539
17.4.3  多个控制器映射 539
17.5  Spring MVC业务控制器 539
17.5.1  简单控制器 540
17.5.2  参数映射控制器 542
17.5.3  文件名映射控制器 542
17.5.4  表单控制器 543
17.5.5  多动作控制器 545
17.6  视图解析器 548
17.6.1  视图解析器介绍 548
17.6.2  配置InternalResourceViewResolver 549
17.7  常见的其他第三方MVC框架 549
17.7.1  Struts 549
17.7.2  JSF 550
17.7.3  Struts2 550
17.8  照猫画虎——基本功训练 550
17.8.1  基本功训练1——参数映射控制器
映射JSP页面 550
17.8.2  基本功训练2——利用命令控制器获取
URL中的参数查询信息 551
17.8.3  基本功训练3——利用表单控制器实现
添加数据的操作 554
17.8.4  基本功训练4——利用表单控制器实现
验证处理 555
17.8.5  基本功训练5——Spring编码过滤器
解决中文乱码 557
17.9  情景应用——拓展与实践 558
17.9.1  情景应用1——利用Spring生成Excel
工作表 558
17.9.2  情景应用2——利用Spring生成PDF
文件 561
17.9.3  情景应用3——利用Spring的多动作
控制器实现数据查询和删除操作 562
17.9.4  情景应用4——利用Spring向导控制器
实现分步用户注册 565
17.9.5  情景应用5——使用Spring MVC编写
在线通讯录 567
17.10  自我测试 573
17.11  行动指南 574
17.12  成功可以复制——征途巨人
史玉柱 575
第4部分  实用技术篇
第18堂课  JSP操作XML 579
视频讲解：72分钟
18.1  XML简介 580
18.1.1  XML文档结构 580
18.1.2  XML语法要求 581
18.1.3  为XML文档中的元素定义属性 581
18.2  dom4j创建XML文档 582
18.2.1  创建XML文档对象 582
18.2.2  创建根节点 582
18.2.3  添加注释 583
18.2.4  创建子节点 583
18.2.5  添加属性 583
18.2.6  设置节点内容 584
18.2.7  设置输出格式 584
18.2.8  设置编码 584
18.2.9  输出XML文档 585
18.3  解析XML文件 585
18.3.1  构建XML文档对象 586
18.3.2  获取根节点 586
18.3.3  获取子节点 586
18.3.4  删除节点 587
18.4  照猫画虎——基本功训练 587
18.4.1  基本功训练1——在控制台上显示
XML文档内容 587
18.4.2  基本功训练2——在浏览器上显示
XML文档内容 588
18.4.3  基本功训练3——修改XML文件中
的公告信息 589
18.4.4  基本功训练4——删除公告信息 592
18.5  情景应用——拓展与实践 594
18.5.1  情景应用1——保存公告信息到
XML文件 594
18.5.2  情景应用2——将数据表导入到
XML文件 596
18.5.3  情景应用3——以XML文档显示
JSP文件 599
18.5.4  情景应用4——使用SAX读取
XML文件 600
18.6  自我测试 601
18.7  行动指南 602
18.8  成功可以复制——创造互联网搜索时代
谢尔盖·布林 603
第19堂课  文件上传与下载 605
视频讲解：97分钟
19.1  文件上传 606
19.2  Common-FileUpload组件核心 608
19.2.1  添加表单及表单元素 608
19.2.2  创建上传对象 608
19.2.3  解析上传请求 608
19.3  文件下载 609
19.3.1  文件类 609
19.3.2  文件字节输入流 610
19.3.3  字节输出流 610
19.4  照猫画虎——基本功训练 611
19.4.1  基本功训练1——文件的简单上传 611
19.4.2  基本功训练2——读取表单信息 612
19.4.3  基本功训练3——限制上传文件的
类型 615
19.4.4  基本功训练4——文件的简单下载 616
19.5  情景应用——拓展与实践 618
19.5.1  情景应用1——隐藏文件下载真实
路径 618
19.5.2  情景应用2——显示上传文件的格式 619
19.5.3  情景应用3——文件的下载 620
19.5.4  情景应用4——批量文件上传 623
19.6  自我测试 624
19.7  行动指南 625
19.8  成功可以复制——初中站长的创业
故事李兴平 626
第20堂课  动态图表 627
视频讲解：112分钟
20.1  JFreeChart简介 628
20.1.1  认识JFreeChart组件 628
20.1.2  JFreeChart的下载与使用 628
20.2  JFreeChart的核心对象 629
20.2.1  制图对象 629
20.2.2  制图工厂对象 630
20.2.3  数据集合对象 630
20.2.4  绘图区对象 631
20.2.5  坐标轴对象 633
20.2.6  图片渲染对象 634
20.3  JFreeChart的应用 635
20.3.1  如何获取图片 635
20.3.2  创建数据集合与JFreeChart实例 636
20.3.3  图表相关属性的设置 638
20.3.4  JFreeChart内置JDBC的使用 639
20.3.5  中文乱码的解决方案 641
20.4  照猫画虎——基本功训练 642
20.4.1  基本功训练1——绘制饼状图 642
20.4.2  基本功训练2——生成柱状图 643
20.4.3  基本功训练3——绘制折线图 644
20.4.4  基本功训练4——生成区域图表 646
20.4.5  基本功训练5——生成时序图表 647
20.5  情景应用——拓展与实践 649
20.5.1  情景应用1——利用柱状图显示某
网站的访问量 649
20.5.2  情景应用2——利用饼图显示不同
编程语言的市场占有率 650
20.5.3  情景应用3——利用折线图显示气温
变化情况 652
20.5.4  情景应用4——利用区域图对比分析
员工业绩 653
20.5.5  情景应用5——利用时序图分析商品
月销售收益 655
20.6  自我测试 656
20.7  行动指南 657
20.8  成功可以复制——暴雪公司的领航者
迈克·莫汉 658
第21堂课  Java Mail组件 659
视频讲解：103分钟
21.1  电子邮件协议简介 660
21.1.1  SMTP简单邮件传输 660
21.1.2  POP3邮局协议 660
21.1.3  IMAP接收邮件协议 660
21.1.4  MIME邮件扩充协议 660
21.2  建立Java Mail开发环境 661
21.2.1  获取Java Mail API 661
21.2.2  获取Java Mail API的激活框架 661
21.2.3  安装和配置邮件服务器 661
21.3  发送邮件的API 663
21.3.1  Session类 664
21.3.2  Message类中与发送邮件相关的方法 665
21.3.3  Address类 667
21.3.4  Authenticator类 667
21.3.5  Transport类 667
21.4  接收邮件的API 669
21.4.1  Store类 669
21.4.2  Folder类 669
21.4.3  Flags类 670
21.4.4  Message类中与接收邮件相关的
方法 671
21.5  照猫画虎——基本功训练 671
21.5.1  基本功训练1——实现邮箱登录的功能 671
21.5.2  基本功训练2——发送普通文本邮件 672
21.5.3  基本功训练3——发送HTML格式的
邮件 674
21.5.4  基本功训练4——邮件群发 677
21.6  情景应用——拓展与实践 678
21.6.1  情景应用1——发送带附件的邮件 678
21.6.2  情景应用2——群发HTML格式的
邮件 681
21.6.3  情景应用3——获取邮件总数 683
21.6.4  情景应用4——通过邮箱激活用户注册 684
21.7  自我测试 687
21.8  行动指南 688
21.9  成功可以复制——IT大王王志东 689
第5部分  实战篇
第22堂课  博客系统 693
视频讲解：73分钟
22.1  系统概述 694
22.1.1  开发背景 694
22.1.2  系统功能结构 694
22.1.3  系统流程 695
22.2  技术要点 695
22.2.1  整合Struts2与Hibernate3 695
22.2.2  应用JavaScript对复选框进行操作 696
22.3  设计数据库 697
22.3.1  设计E-R图 697
22.3.2  设计数据库表 698
22.4  设计公共模块 699
22.4.1  编写Hibernate配置文件 699
22.4.2  编写数据持久化类 700
22.5  设计首页面 703
22.5.1  首页操作实现类 703
22.5.2  首页显示的实现 704
22.6  设计用户管理模块 705
22.6.1  用户实体类 705
22.6.2  用户的实现类 706
22.6.3  实现用户注册 706
22.6.4  推荐博客操作 709
22.7  设计文章模块 710
22.7.1  文章实体类 710
22.7.2  文章的实现类 711
22.7.3  操作文章类型 711
22.7.4  添加文章 713
22.7.5  查询文章 714
22.7.6  文章的详细查询 716
22.7.7  推荐文章的操作 716
22.8  疑难问题 717
22.8.1  Struts2的中文乱码问题 717
22.8.2  关于重写模板的问题 718
22.9  本堂课小结 718
特别提醒：
亲爱的读者朋友，由于近期纸张价格和印制成本大幅上涨，为不增加读者朋友的负担，又不减少书的内容，本书以下章节内容不得不放在配书光盘中，由此给您带来了不便，在此深表歉意。
第23堂课  JSP+Hibernate实现留言模块 719
视频讲解：72分钟
（本章内容在配书光盘中）
23.1  项目说明 720
23.1.1  实现功能 720
23.1.2  系统流程 720
23.1.3  逻辑分层结构 721
23.2  技术要点 721
23.2.1  确定实体及关系 721
23.2.2  ThreadLocal的使用 722
23.3  实现过程 722
23.3.1  搭建开发环境 723
23.3.2  实体类与映射 724
23.3.3  注册模块 727
23.3.4  用户登录 730
23.3.5  实现留言 732
23.3.6  分页查看留言信息 734
23.3.7  管理员相关操作 739
23.4  本堂课小结 743
第24堂课  用户管理系统 745
视频讲解：62分钟
（本章内容在配书光盘中）
24.1  系统功能模块设计 746
24.2  设计数据库 746
24.3  文件夹结构设计 747
24.4  实体映射 747
24.4.1  部门信息 747
24.4.2  用户信息 748
24.5  设计操作数据的接口与类 749
24.5.1  部门信息DAO接口IDeptInfoDao 749
24.5.2  部门信息DAO实现类DeptInfoDao 750
24.5.3  用户信息DAO接口IUserInfoDao 750
24.5.4  用户信息DAO实现类IUserInfoDao 751
24.6  登录子模块 751
24.6.1  登录子模块控制器 752
24.6.2  登录子模块JSP页面 753
24.7  部门管理子模块 755
24.7.1  部门管理子模块控制器 756
24.7.2  部门管理子模块JSP页面 757
24.8  用户管理子模块 759
24.8.1  用户管理子模块文件上传类 760
24.8.2  用户管理子模块控制器类 761
24.8.3  用户管理子模块JSP页面 763
24.9  配置文件 765
24.9.1  创建Spring配置文件
applicationContext.xml 766
24.9.2  配置web.xml 768
24.10  本堂课小结 769
附录A  Java程序编码规范 771
（本章内容在配书光盘中）
A.1  命名规则 771
A.1.1  数据类型简写规则 771
A.1.2  变量及常量名称命名规则 771
A.1.3  类命名规则 771
A.1.4  成员变量命名规则 772
A.1.5  方法命名规则 772
A.1.6  接口命名规则 772
A.2  代码版式 772
A.2.1  统一代码缩进 772
A.2.2  合理使用空行 772
A.2.3  代码换行 773
A.2.4  空格的使用 773
A.3  代码注释 773
A.3.1  注释的目的 773
A.3.2  代码注释规范 773
A.4  数据库编程命名规范 774
A.4.1  数据库命名规范 774
A.4.2  数据表命名规范 774
A.4.3  字段命名规范 774
A.4.4  视图命名规范 775
A.4.5  存储过程命名规范 775
A.4.6  触发器命名规范 775