标题：Java Web开发实战1200例（第Ⅱ卷）
图书信息
Java Web开发实战1200例（第Ⅱ卷） 
明日科技 卢瀚 王春斌 等编著  Java Web开发实战1200例（第Ⅱ卷）ISBN 9787302254867
2011年6月出版 　
定价：99.00元含（含光盘1张） 
16开
内容简介
本书以开发人员在项目开发中经常遇到的问题和必须掌握的技术为核心，介绍了应用Java Web进行程序开发的各个方面的知识和技巧，主要内容包括流行组件应用、数据库应用、图表统计、Ajax框架应用、流行框架、网站安全与架构模式、综合应用等。全书分为7篇23章，共计600个实例，并附带600个技巧。书中每个实例都是作者精心筛选的，具有很强的实用性，其中一些实例是开发人员难于寻觅的解决方案。本书附带有配套DVD光盘，光盘中提供有书中全部实例的源代码，这些源代码都是经过作者精心调试通过的，保证能够在Windows XP、Windows 2003及Windows 7操作系统下编译和运行。
本书非常适合Java Web项目开发人员、Java Web初学者及编程爱好者使用，同时也可以作为培训机构、大中专院校老师和学生的实践参考用书。
前言
前 言
特别说明：
《Java Web开发实战1200例》包括第I卷、第II卷共计1200个例子，本书是第II卷，包含600个例子。
程序开发是一项艰辛的工作，不仅考验着开发人员的智力，更考验着开发人员的体力。纵观国内的软件企业，内部开发团队挑灯夜战、连续加班是常有的事情。笔者曾“有幸”参加过十几个项目的开发工作，对编程有深刻的体会。编程是一项复杂的创造性工作，它不仅需要开发人员掌握各方面的知识，还需要开发人员积累丰富的开发经验。项目开发中的一个问题可能会占用团队几天甚至十几天的时间，但是如果开发人员遇到过类似的问题，也许几分钟就可以解决。这就体现了编程经验的重要性，也是许多软件企业用人时选择有项目开发经验人员的主要原因。
本书作者精选了项目开发中的600个实例，涵盖了操作XML文件、发送与接收邮件、数据库操作技术、SQL语句应用技术、复杂查询技术、数据库高级应用、JFreeChart绘图基础、基础图表技术、扩展图表技术、基于Cewolf组件的图表编程、Prototype框架、jQuery框架、Dojo框架、Struts2框架应用、Struts2框架标签应用、Hibernate框架基础、Hibernate高级话题、Spring框架基础、Spring的 Web MVC 框架、网站性能优化与安全策略、设计模式与架构、网站设计与网页配色、Java Web典型项目开发案例等各方面的内容，每一个知识点下还提供了针对性强、实用性高的经验技巧，帮助开发人员快速解决疑难问题。希望本书能够成为编程人员身边的必备参考书，为读者学习编程和从事项目开发起到推波助澜的作用。
本书内容
本书分为7篇23章，共计600个实例。所选实例均来源于一线开发人员的实际项目开发，囊括了开发中经常使用和需要解决的热点、难点问题。通过本书的学习，读者可以快速地解决开发中的难题，提高编程效率。本书亮点内容导航如下图所示。
为了方便读者学习书中实例，积累开发经验，本书在讲解实例时按照 “实例说明”、“关键技术”、“设计过程”和“秘笈心法”4个阶段进行讲解。
* 实例说明
实例说明部分利用图文结合的方式，介绍实例的特点、功能和运行效果，使读者可以快速了解实例的作用和从实例中可学到的技能。
* 关键技术
关键技术部分剖析了实例使用的核心技术。这样，读者在不必查看设计过程和源代码的情况下就可以快速掌握实例关键技术，甚至直接做出实例。
* 设计过程
设计过程部分详细介绍了实例的开发过程，读者可以按照该部分内容做出自己的实例程序。
* 秘笈心法
秘笈心法部分给出了与实例相关的技巧、注意事项或经验总结，丰富读者的编程经验。
下图展示了一个实例文档缩略图。
本书特色 
* 实例丰富，经验超值
本书精选了600个实例和600条经验技巧，涵盖了编程多个方面的各种应用，用户开发中所需的技术、技巧、解决方案几乎都可找到。
* 易查、易学、易用
可以通过目录查找任意实例的实例说明、关键技术、设计过程、秘笈心法等内容。
* 特点突出，功能完善，实用性强
书中所选实例均是项目开发中经常需要使用或实现的技术，有许多实例是开发人员梦寐以求的。
* 赠送所有实例源码
书中所有实例均提供有源代码，用户在开发中可以快速借鉴或应用。
* 段落工整、简洁，图文结合，更容易学习
* 编码规范，注释详尽
为了提高用户的实际开发能力，书中代码都是经过严格审查的，可以与商业源码媲美。此外，为了方便用户阅读代码，几乎所有代码都提供有详细注释。
超值DVD光盘
为了帮助读者学习和使用书中的实例，本书附赠有DVD光盘，里面不仅提供有书中所有实例项目的源代码、素材，还提供了关键实例的开发视频讲解及Java Web学习资料。光盘目录如下图所示。
本书约定
* 实例使用方法
用户在学习本书过程中，可以从光盘中复制实例，去掉实例的只读属性。有些实例需要使用相应的数据库或第三方资源，这些实例在使用前需要进行相应配置，详细使用方法请参考本书光盘使用说明书。此外，如果用户直接将本书实例用于商业用途，由此产生的不良后果由用户自己承担。
* 实例及录像位置
书中实例在光盘中的存储格式为“MR\章号\实例序号”。例如，“MR\11\267”表示实例267，位于第11章。
* 部分实例只给出关键代码
由于篇幅有限，书中有些实例只给出了关键代码，完整代码参见配书光盘实例程序。
读者人群
本书非常适合以下人员阅读：
* 从事Java Web编程行业的开发人员
* 有一定语言基础，想进一步提高技能的人员
* 大中专院校的老师和学生
* 即将从事软件开发工作的大学毕业生
* 相关培训机构的老师和学员
* Java Web编程爱好者
本书作者
本书由明日科技组织编写，参加编写的程序员人卢瀚、陈丹丹、朱晓、王国辉、白伟明、李文斌、李继业、张磊、赛奎春、高春艳、宋坤、刘锐宁、梁水、李伟明、刘彬彬、安剑、孙秀梅、巩建华、房大伟、吕双、刘云峰、李钟尉、张振坤、李鑫、李伟、潘凯华、杨明、刘欣、李慧、梁晓岚、杨丽、顾丽丽、肖鑫、刘龄龄、王乐乐、陈英、刘莹、李贺等。
由于作者水平有限，书中疏漏和不足之处在所难免，肯请广大读者朋友批评指正。
特别提醒：
亲爱的读者朋友，由于近期纸张价格和印制成本大幅上涨，为不增加读者朋友的负担，又不减少书的内容，本书的最后几章内容不得不放在配书光盘中（参见目录），由此给您带来了不便，在此深表歉意。
编 者
图书目录
第1篇 流行组件应用篇
第1章 操作XML文件 2
1.1 XML基础操作 3
实例001 CSS格式化XML布局 3
实例002 CSS改变XML中鼠标指针形状 5
实例003 CSS在XML中添加背景图 7
实例004 CSS制作XML表格 8
实例005 XML中的提取节点字符串值 10
实例006 在XML内部定义DTD 12
实例007 在XML外部引用DTD 14
实例008 验证XML是否符合DTD的定义 15
实例009 在DTD中声明元素 16
实例010 在DTD中声明重复元素 17
实例011 在DTD中声明选择性元素 19
实例012 在DTD中使用ENTITY 20
1.2 应用XML Schema 21
实例013 验证XML是否符合Schema的描述 21
实例014 XSD文档根元素的引用 24
实例015 在XSD中设定元素的出现顺序 25
实例016 在XSD中使用扩展数据类型 26
实例017 在XSD中使用元素的条理化 29
实例018 XSD中的多属性打包 30
实例019 XSD中对元素的限定 32
实例020 在XSD中使用取值范围的限定 34
实例021 在XSD中声明元素属性 36
实例022 在XSD中对字符进行限制 38
实例023 在XSD中对数值进行限制 39
1.3 XML解析 41
实例024 使用DOM组件从文件中读取XML 41
实例025 使用DOM组件从数据流中读取XML 42
实例026 使用JDOM组件从文件中读取XML 44
实例027 使用JDOM组件读取XML 45
实例028 使用SAX组件从文件中读取XML 48
实例029 使用SAX组件从数据流中读取XML 50
实例030 使用DOM组件解析XML元素名称 52
实例031 使用DOM组件解析XML元素名称和
内容 54
实例032 使用SAX组件解析XML元素名称 56
实例033 使用SAX组件解析XML元素名称和内容 58
实例034 使用SAX组件解析XML元素属性和
属性值 61
实例035 使用DOM组件解析XML元素属性和
属性值 62
实例036 使用SAX验证DTD 64
实例037 使用dom4j解析XML文件 66
第2章 发送与接收邮件 69
2.1 配置邮件服务器 70
实例038 在Windows Server 2003系统下安装和
配置邮件服务器 70
实例039 配置开源邮件服务器Apache James Server 72
实例040 安装和配置Magic Winmail邮件服务器 73
2.2 应用JavaMail组件发送邮件 75
实例041 发送普通格式的邮件 76
实例042 发送HTML格式的邮件 78
实例043 发送带附件的邮件 80
实例044 群发普通邮件 82
实例045 群发HTML格式的邮件 84
实例046 群发带附件的邮件 85
实例047 通过邮箱激活用户的注册 86
2.3 应用JavaMail组件接收邮件 89
实例048 应用POP3协议接收未读邮件和已读邮件 89
实例049 应用POP3协议接收带附件的邮件 94
实例050 应用IMAP协议接收未读邮件和已读邮件 100
实例051 应用IMAP协议接收带附件的邮件 103
2.4 应用Apache commons-email组件
发送邮件 106
实例052 发送普通格式的邮件 106
实例053 发送带多个附件的邮件 108
实例054 群发普通邮件 110
实例055 群发HTML格式的邮件 111
实例056 群发带附件的邮件 112
实例057 通过邮箱激活用户的注册 113
2.5 应用Spring的E-mail抽象层发送邮件 116
实例058 发送普通文本邮件 116
实例059 发送HTML格式的邮件 118
实例060 发送带附件的邮件 121
实例061 群发普通文本邮件 123
第2篇 数据库应用篇
第3章 数据库操作技术 126
3.1 建立Connection数据库连接 127
实例062 建立Access数据库连接 127
实例063 建立与MySQL数据库的连接 128
实例064 建立与SQL Server 2000数据库的连接 129
实例065 建立与SQL Server 2005数据库的连接 130
实例066 建立与Oracle数据库的连接 131
实例067 建立与Java DB数据库的连接 132
3.2 数据库与数据表 133
实例068 列举SQL Server数据库中的数据表 133
实例069 列举MySQL数据库中的数据表 134
实例070 查看数据表结构 135
实例071 动态维护投票数据库 136
实例072 SQL Server数据库的备份 139
实例073 SQL Server数据库的恢复 142
实例074 MySQL数据库的备份 145
实例075 MySQL数据库的恢复 147
3.3 数据库的添加、删除与更新操作 148
实例076 将员工信息添加到员工表 148
实例077 在添加数据时进行数据验证 149
实例078 插入用户登录日志信息 150
实例079 生成有规律的编号 151
实例080 生成没有规律的编号 153
实例081 在插入数据时过滤掉危险字符 154
实例082 将用户选择的爱好信息以字符串形式
保存到数据库 155
实例083 实现跨数据库的表内容复制 156
实例084 使用UNION ALL语句批量插入数据 156
实例085 更新指定记录 157
实例086 将数据表清空 159
第4章 SQL语句应用技术 160
4.1 聚集函数与日期查询 161
实例087 利用SUM函数实现数据汇总 161
实例088 利用AVG函数实现计算平均值 162
实例089 利用MIN函数求数据表中的最小数据 163
实例090 应用MAX函数求数据表中的最大值 164
实例091 COUNT函数求销售额大于某值的
图书种类 165
实例092 查询与张静同一天入司的员工信息 166
实例093 使用IN谓词查询某几个时间的数据 167
实例094 对数据进行降序排序查询 169
实例095 数据的多条件排序查询 170
实例096 对统计结果进行排序 171
实例097 查询SQL Server数据表中的前3条数据 174
实例098 查询SQL Server数据表中的后3条数据 175
实例099 查询MySQL数据表中的前3条数据 176
实例100 查询MySQL数据表中的后3条数据 177
4.2 排序与分组函数的应用 178
实例101 按照字母顺序对留学生表进行排序 178
实例102 按姓氏笔画排序 180
实例103 将汉字按音序排序 181
实例104 按列的编号排序 182
实例105 从表中随机返回记录 183
实例106 使用GROUP BY子句实现数据的
分组统计 184
实例107 利用GROUP BY函数实现多表分组
统计 185
4.3 比较大小与逻辑应用 187
实例108 在查询结果中不显示重复记录 187
实例109 使用NOT查询不满足条件的记录 188
实例110 使用BETWEEN进行区间查询 190
实例111 使用关系运算符查询某一时间段的
数据 191
实例112 计算两个日期间的月份数 192
第5章 复杂查询技术 194
5.1 使用子查询 195
实例113 将子查询作为表达式 195
实例114 用子查询作为派生表 196
实例115 通过子查询关联数据 197
实例116 使用IN谓词限定查询范围 198
实例117 使用NOT IN子查询实现差集运算 200
实例118 使用NOT IN子查询实现反向查询 201
实例119 实现笛卡儿乘积查询 202
实例120 比较运算符引入子查询 203
实例121 在查询中使用聚合函数 204
实例122 在删除数据时使用子查询 205
5.2 多表连接查询 206
实例123 使用UNION运算符使学生档案归档 206
实例124 内连接查询指定课程的教师信息 207
实例125 左外连接查询员工信息 208
实例126 右外连接查询员工信息 210
实例127 多表外连接查询 211
实例128 完全连接查询 212
5.3 嵌套查询 213
实例129 查询平均成绩在85分以上的学生信息 213
实例130 多表统计本科学历部门经理的月收入
情况 214
实例131 在嵌套中使用exists关键字 215
实例132 动态指定查询条件 216
5.4 常见谓词的使用 217
实例133 应用patindex谓词进行模糊查询 217
实例134 在查询中使用四舍五入谓词ROUND 218
实例135 查询比质量部所有员工工资都高的
员工信息 219
实例136 查询工资高于质量部任意一名员工的
员工信息 220
实例137 应用UNION谓词消除重复的行 221
实例138 应用UNION ALL谓词保留重复行 222
实例139 查询各商品销售额所占的百分比 223
第6章 数据库高级应用 225
6.1 在JavaWeb程序中调用存储过程 226
实例140 调用存储过程实现用户身份的验证 226
实例141 调用存储过程添加数据 227
实例142 调用加密存储过程 228
实例143 获取数据库中所有存储过程 229
实例144 修改存储过程 231
实例145 删除存储过程 232
6.2 使用触发器 233
实例146 应用触发器添加日志信息 233
实例147 应用触发器级联删除数据 235
实例148 调用UPDATE触发器修改数据 236
实例149 获取数据库中所有触发器名称 238
实例150 创建带有触发条件的触发器 238
6.3 使用批处理 240
实例151 使用批处理删除数据 240
实例152 批量提高员工工资 243
实例153 将教师表中数据全部添加到选课表 244
实例154 在批处理中使用事务 246
6.4 使用视图 247
实例155 通过Java Web程序创建视图 247
实例156 应用视图查询数据 250
实例157 使用视图计算数据 251
实例158 使用视图格式化检索出来的数据 252
实例159 获取数据库中的全部用户视图 253
实例160 修改视图 254
实例161 删除视图 255
第3篇 图表统计篇
第7章 JFreeChart绘图基础 260
7.1 图表的基础 261
实例162 基本饼图 261
实例163 显示图例 263
实例164 工具栏提示 264
实例165 乱码问题 265
实例166 显示数值 267
实例167 抗锯齿设置 268
7.2 设置图表的背景 270
实例168 设置背景图 270
实例169 设置背景图片透明度 271
实例170 设置背景色 273
7.3 处理图表的边框 274
实例171 隐藏图表边框 274
实例172 图表边框颜色和笔触 275
7.4 修改图表的图例 277
实例173 设置图例背景色 277
实例174 设置图例边框 278
实例175 设置图例边缘间距 279
实例176 设置图例字体颜色 281
实例177 设置图例位置 282
第8章 基础图表技术 284
8.1 普通饼图 285
实例178 分离饼图 285
实例179 椭圆形饼图 286
实例180 饼图的阴影 287
实例181 加粗饼图分类边框 288
实例182 设置饼图颜色 289
实例183 饼图旋转角度和顺序 291
实例184 隐藏分类标签连接线 292
8.2 3D饼图 294
实例185 创建3D饼图 294
实例186 3D饼图透明度 295
实例187 3D饼图的Z轴 296
8.3 多饼图 297
实例188 实现多饼图 297
实例189 多饼图乱码 299
实例190 3D多饼图 301
8.4 基本柱形图 302
实例191 简单柱形图 302
实例192 柱形图角度 304
实例193 柱形图负值 306
8.5 X坐标轴 307
实例194 X轴字体 307
实例195 X轴标签字体 308
实例196 X轴标签角度 310
实例197 X轴尺度线颜色 312
实例198 隐藏X轴尺度线 313
实例199 X轴尺度线笔触 315
实例200 X轴尺度标签 317
实例201 X轴分类的间距 318
实例202 X轴分类与原点的间距 320
实例203 X轴的显示位置 321
8.6 Y坐标轴 323
实例204 Y轴字体 323
实例205 Y轴标签字体 324
实例206 Y轴显示情况 326
实例207 Y轴尺度线颜色和笔触 327
实例208 隐藏Y轴尺度线 329
实例209 Y轴尺度标签角度 331
实例210 Y轴起始值 332
实例211 Y轴箭头 333
实例212 隐藏Y轴主要刻度线 335
实例213 Y轴主要刻度线长度 336
实例214 设置Y轴最大值 338
实例215 设置Y轴数据范围 339
实例216 Y轴的显示位置 341
8.7 高级柱形图 342
实例217 设置网格竖线 342
实例218 设置网格竖线颜色 344
实例219 设置柱形图文本注解 345
实例220 设置柱形图文本注解字体 347
实例221 设置柱形图文本注解锚点 349
实例222 设置柱形图文本注解的类别锚点 350
实例223 设置柱形图文本注解旋转锚点 352
实例224 设置柱形图线条注解 354
实例225 绘制柱形效果 355
实例226 柱形图阴影 357
实例227 柱形图阴影偏移 358
实例228 设置柱形的颜色 360
实例229 绘制3D柱形图 361
实例230 标记柱形图区间 363
实例231 多系列柱形图 365
实例232 多系列3D柱形图 367
第9章 扩展图表技术 369
9.1 区域图 370
实例233 基本区域图 370
实例234 显示多分类区域图 371
实例235 设置区域图透明度 373
实例236 添加说明文字 375
实例237 设置说明文字位置 377
实例238 设置区域图X轴显示位置 379
实例239 设置区域图X轴标签角度 381
实例240 设置区域图X轴尺度标签角度 383
实例241 设置区域颜色 384
9.2 折线图 386
实例242 创建基本折线图 386
实例243 创建多条折线图 388
实例244 创建水平折线图 390
实例245 隐藏折线图中指定系列的折线 392
实例246 加粗折线 393
实例247 显示折线节点 395
实例248 生成节点图 397
实例249 绘制虚线折线图 399
实例250 设置折线颜色 401
实例251 3D折线图 402
实例252 XY折线图 405
实例253 排序折线图 407
9.3 时序图 408
实例254 基本时序图 408
实例255 设置时间显示格式 410
实例256 添加双时间轴 412
实例257 设置双时间轴位置 413
实例258 动态显示十字标记 415
实例259 添加Y轴标记 417
实例260 添加X轴标记 419
实例261 设置刻度单位 420
实例262 设置时间轴范围 422
9.4 联合分类图 423
实例263 生成线形图与柱形图 423
实例264 设置图表高度 425
实例265 设置图表位置 427
9.5 图表的综合应用 429
实例266 利用饼图分析不同编程语言的市场
占有率 429
实例267 利用柱形图显示某Ajax网站不同框架的
年下载量 431
实例268 利用折线图分析不同城市气温变化
情况 432
实例269 利用区域图分析不同学生的成绩变化 433
实例270 利用时序图分析股票价格走势 434
实例271 利用时序图分析2009年国际原油价格
走势 436
实例272 利用组合图表分析学生零用钱收支
情况 437
第10章 基于Cewolf组件的图表编程 440
10.1 生成基于DefaultCategoryDataset
数据集的图表 441
实例273 生成水平直方图 441
实例274 生成水平堆栈图 443
实例275 绘制3D垂直直方图 445
实例276 生成垂直堆栈图 446
实例277 生成区域图 447
10.2 绘制饼状图表 448
实例278 生成普通饼图 448
实例279 生成3D饼图 450
10.3 绘制基于XYDataset数据集的图表 451
实例280 生成线段图（折线图） 451
实例281 生成区域图 453
实例282 生成散列图 454
实例283 生成时序图 455
实例284 生成直方图 457
10.4 绘制基于OHLCDataset数据集的
图表 458
实例285 生成K线图 458
实例286 生成高低图（HighLow） 460
10.5 生成组合图表 461
实例287 生成水平组合图表 461
实例288 生成垂直组合图表 463
10.6 绘制其他类型的图表 464
实例289 生成甘特图 464
实例290 生成罗盘图 466
实例291 生成速度图 467
10.7 综合图表的应用 469
实例292 利用柱形图对比不同城市的房价 469
实例293 利用饼图显示投票结果 470
实例294 利用折线图分析某城市蔬菜价格走势 472
实例295 利用区域图对比分析员工业绩 473
实例296 利用时序图分析商品月销售收益 475
实例297 利用组合图表分析国际原油价格走势 477
第4篇 Ajax框架应用篇
第11章 Prototype框架 480
11.1 使用Prototype基本函数 481
实例298 使用$()函数获取页面元素 481
实例299 使用$A()函数实现将参数转换为数组 482
实例300 使用$F()函数获取表单输入控件的值 483
实例301 使用Try.these()函数获取返回值 484
11.2 Prototype自定义对象和类 485
实例302 在HTML元素中增加CSS样式 485
实例303 利用Enumerable对象在页面中显示
数组元素 486
实例304 使用Field对象操作表单域 488
实例305 通过Form对象实现让表单元素失效 489
实例306 使用Form.Element对象返回特定表
单域的值 491
11.3 对Ajax的支持 492
实例307 Ajax.Request对象发送请求 492
实例308 注册全局的事件处理器 493
实例309 定时刷新时间 495
第12章 jQuery框架 497
12.1 DOM技术 498
实例310 获取文本框中的文本 498
实例311 利用jQuery实现查找节点 500
实例312 动态为表格追加样式 501
实例313 动态为表格移除样式 502
实例314 实现表格的样式切换 504
12.2 表单处理 505
实例315 实现表单文本域的放大和缩小 505
实例316 实现复选框的全选与反选 506
实例317 列表框的综合应用 507
实例318 实现表单验证 509
实例319 密码强度检测 510
实例320 文本框提示标签 511
12.3 操作表格 512
实例321 表格隔行变色 512
实例322 通过单选按钮控制表格的行高亮显示 513
实例323 通过复选框控制表格的行高亮显示 515
实例324 表格的展开与关闭 516
实例325 利用文本框的值实现对表格内容的筛选 517
12.4 其他特效 518
实例326 制作网页选项卡 518
实例327 日期拾取器 519
实例328 网页软键盘 520
实例329 图片幻灯片 521
实例330 颜色拾取器 522
实例331 广告轮显 523
实例332 图片放大镜 525
实例333 文本编辑器 526
实例334 右键菜单 527
实例335 结合jQuery实现在线剪裁 529
12.5 对Ajax的支持 532
实例336 检测用户名是否被占用 532
实例337 验证用户登录 534
实例338 基于JQuery的Ajax聊天室 536
第13章 Dojo框架 538
13.1 Dojo的常用widget 539
实例339 实现网页按钮 539
实例340 实现网页对话框 540
实例341 实现日历功能 542
实例342 实现网页的多页面 543
13.2 Dojo的基本应用 544
实例343 鼠标单击事件处理 544
实例344 访问被监听方法的参数 546
实例345 页面HTML元素的任意移动 547
实例346 页面元素的相对移动 548
实例347 带手柄的移动 550
13.3 Dojo对Ajax的支持 551
实例348 基本请求的发送 551
实例349 请求队列的发送 553
实例350 对象的字符串化 554
实例351 表单请求发送 556
第5篇 流行框架篇
第14章 Struts2框架应用 560
14.1 Struts2的基本配置与零配置 561
实例352 成绩统计器 561
实例353 成绩排序 562
实例354 用户的直接登录 564
实例355 实现用户的中间退出 565
14.2 Struts2数据校验与拦截器 566
实例356 日期转换器 566
实例357 实现空表单信息的提示 567
实例358 计时拦截器 569
实例359 等待拦截器 569
实例360 权限验证拦截器 570
14.3 文件上传与下载 572
实例361 单文件的上传 572
实例362 上传错误信息的提示 573
实例363 特定文件格式的上传 574
实例364 限定上传文件的大小 575
实例365 多文件的上传 575
实例366 文件下载 577
14.4 Struts2对Ajax的支持 578
实例367 调试信息的输出 578
实例368 数据校验错误信息的输出 579
实例369 Action中错误信息的输出 580
实例370 显示Action的信息 580
实例371 显示新闻列表 581
实例372 页面的自动刷新 582
实例373 访问注册页面出错 583
实例374 无刷新实现登录 584
实例375 无刷新实现注销 585
实例376 实现标签页 586
实例377 调试信息的输出 587
实例378 数据的树状输出 588
实例379 文件的树状显示 589
实例380 动态加载数据 590
第15章 Struts2框架标签应用 593
15.1 OGNL语言 594
实例381 访问OGNL上下文 594
实例382 访问ActionContext资源 595
实例383 用“#”过滤筛选集合 596
实例384 用“#”构造Map 598
实例385 获取Request的account属性 598
实例386 在资源国际化中引用OGNL 599
实例387 在struts.xml中引用OGNL 600
15.2 控制标签 601
实例388 判断用户是否存在 601
实例389 用户不存在的提示 602
实例390 简单的计算器 603
实例391 多集合的连接 604
实例392 字符串的分割 605
实例393 集合的混合合并 606
实例394 筛选集合元素 607
15.3 数据标签 608
实例395 Action页面的引入 608
实例396 JavaBean的引用 609
实例397 页面日期的输出 611
实例398 页面日期的格式化输出 612
实例399 计算日期的时间差 612
实例400 声明资源的国际化 614
实例401 JSP页面的引入 615
实例402 页面间数据的传递 616
实例403 页面数据的设定 617
实例404 变量值的页面输出 618
15.4 表单标签 619
实例405 表单的输出 619
实例406 用户名的填写 620
实例407 简单的用户登录页面 621
实例408 本地文件的浏览 622
实例409 数据的默认选择 622
实例410 页面中单选按钮的实现 623
实例411 实现表单的提交 624
实例412 实现下拉列表框 625
实例413 具有自动完成功能的下拉列表框 626
实例414 使用动态数据的下拉列表框 627
实例415 复选框的实现 628
实例416 实现可填写的复合框 628
实例417 日期选择器 629
实例418 联动选择框 630
实例419 多级数据选择框 631
第16章 Hibernate框架基础 632
16.1 操作实体对象 633
实例420 将实体对象保存到数据库 633
实例421 更新实体对象 636
实例422 删除数据 638
实例423 批量添加数据 640
实例424 采用一对一关联添加数据 643
实例425 采用一对多关联添加数据 645
16.2 HQL与QBC检索方式 647
实例426 分组统计 647
实例427 利用统计函数SUM求销售总额 648
实例428 利用统计函数AVG求某班学生的
平均成绩 650
实例429 利用统计函数COUNT统计当前注册
用户人数 652
实例430 利用HQL查询图书表中的所有数据 653
实例431 利用HQL查询满足指定条件的数据 654
实例432 HQL绑定参数查询 656
实例433 只返回一个检索对象 658
实例434 限制返回结果的范围 659
实例435 分页查询数据 661
实例436 利用QBC检索字段为空的记录 663
实例437 利用QBC检索不满足指定条件的记录 664
实例438 QBC忽略大小写查询 666
实例439 利用QBC查询满足指定范围的所有
记录 667
实例440 利用HQL实现模糊查询 669
实例441 利用QBC实现模糊查询 670
实例442 HQL在查询中使用统计函数 671
实例443 利用HQL实现投影查询 672
实例444 QBC实现将查询结果排序 673
实例445 HQL内连接查询商品信息 674
第17章 Hibernate高级话题 676
17.1 关联映射 677
实例446 关联映射实现级联保存与更新 677
实例447 建立商品表与商品类型表的双向关联 678
实例448 实现商品表的自关联 680
实例449 在持久化类方法中加入程序代码 681
实例450 主键的关联映射 682
实例451 外键关联映射 684
实例452 多对多单向关联映射学生表与科目表 686
实例453 多对多双向关联映射学生表与科目表 687
17.2 Hibernate检索策略 689
实例454 一对多立即检索策略 689
实例455 多对一的立即检索策略 690
实例456 一对多的延迟检索策略 691
实例457 迫切左外连接查询 693
17.3 Hibernate集合映射与事务应用 694
实例458 通过映射Set集合实现添加数据 694
实例459 通过映射List集合实现添加数据 696
实例460 通过映射Map集合实现添加数据 697
实例461 事务回滚的应用 698
实例462 配置持久化类实现乐观锁的使用 699
第18章 Spring框架基础 702
18.1 Spring的依赖注入 703
实例463 应用Setter注入法实现Bean的注入 703
实例464 应用构造器注入法实现Bean的注入 704
实例465 应用@Autowired注解实现Bean的
注入 706
实例466 应用@Resource注解实现Bean的注入 708
实例467 零配置实现Bean的注入 709
实例468 为JavaBean的集合对象注入属性值 711
实例469 使用<prop>标签为Java持久属性集
注入值 713
实例470 按照Bean的名称自动装配User 714
实例471 按照Bean的类型自动装配User 715
实例472 配置Bean的延迟初始化 715
实例473 通过<beans>设置统一的延迟初始化
行为 716
实例474 自定义MyDateEditor编辑器实现类型
转换 717
实例475 验证用户登录 718
18.2 Spring的事务管理 720
实例476 应用编程式事务管理向用户信息表
插入数据 720
实例477 应用编程式事务管理向学生信息表
插入数据 723
18.3 Spring的面向切面编程 724
实例478 利用Spring AOP使日志输出与方法
分离 724
实例479 Spring AOP实现用户注册 726
18.4 Spring的持久化 728
实例480 在Spring中利用DAO模式添加数据 728
实例481 利用JdbcTemplate向员工信息表添加
数据 730
实例482 利用JdbcTemplate查询员工信息表 732
实例483 利用JdbcTemplate更新指定员工信息 733
实例484 使用JdbcTemplate调用存储过程查询
商品 736
实例485 使用SimpleJdbcTemplate添加图书
信息 738
实例486 使用SimpleJdbcTemplate查询指定图书
信息 739
实例487 在Spring中配置DBCP数据库连接池 741
实例488 在Spring中使用占位符配置数据源 742
实例489 使用destroy-method处理数据源 744
实例490 Spring分页显示图书信息 745
实例491 整合Spring和Hibernate添加员工信息 747
实例492 整合Spring和Hibernate批量添加
用户信息 749
18.5 在Spring中生成非HTML输出 751
实例493 利用Spring将学生信息导出到Excel
工作表 751
实例494 利用Spring将图书信息导出到PDF
文件 754
18.6 Spring文件上传与国际化 755
实例495 利用Spring实现文件的上传 755
实例496 利用Spring实现用户登录页面的国际化 758
第19章 Spring的Web MVC框架 759
19.1 Spring的控制器 760
实例497 使用简单控制器获取表单数据 760
实例498 参数映射控制器映射JSP页面 762
实例499 文件名映射控制器映射JSP页面 763
实例500 命令控制器获取URL中的参数查询
信息 765
实例501 利用表单控制器向图书信息表中添加
数据 767
实例502 利用表单控制器验证用户登录 770
实例503 利用多动作控制器跳转到不同页面 772
实例504 利用向导控制器实现用户注册 773
实例505 利用多动作控制器操作员工信息表的
数据 776
19.2 在线通讯录 778
实例506 添加新联系人 778
实例507 修改联系人信息 781
实例508 删除联系人 783
实例509 查询通讯录中的信息 784
19.3 图书信息管理 785
实例510 添加图书信息 785
实例511 修改图书信息 787
实例512 删除图书信息 788
实例513 查询图书信息 789
第6篇 网站安全与架构模式篇
第20章 网站性能优化与安全策略 792
20.1 文件保护 793
实例514 防止用户直接输入地址访问JSP文件 793
实例515 防止页面重复提交 795
实例516 对查询字符串进行URL编码 798
实例517 过滤非法字符 799
实例518 禁止用户输入敏感字符 801
20.2 漏洞防护与数据加密 802
实例519 文件上传漏洞 802
实例520 防止资源被盗链下载 806
实例521 对登录密码进行加密 807
实例522 字符串加密 810
实例523 MD5加密注册用户名和密码 812
20.3 获取客户端信息 814
实例524 确定对方的IP地址 814
实例525 获取客户端TCP/IP端口的方法 815
实例526 确定对方的浏览器信息 817
实例527 确定对方浏览器可接收信息的类型 817
特别提醒：
亲爱的读者朋友，由于近期纸张价格和印制成本大幅上涨，为不增加读者朋友的负担，又不减少书的内容，本书以下章节内容不得不放在配书光盘中，由此给您带来了不便，在此深表歉意。
第21章 设计模式与架构 819
（本章内容在配书光盘中）
21.1 接口型模式 820
实例528 适配器模式 820
实例529 外观模式 821
实例530 组合模式 824
实例531 桥接模式 826
21.2 责任型模式 829
实例532 单例模式 829
实例533 建造者模式 831
实例534 中介者模式 834
实例535 责任链模式 836
实例536 享元模式 839
实例537 代理模式 841
21.3 构造型模式 842
实例538 装饰模式 842
实例539 工厂方法模式 844
实例540 抽象工厂模式 847
实例541 原型模式 849
实例542 备忘录模式 851
21.4 行为型模式 853
实例543 命令模式 853
实例544 解释器模式 855
实例545 迭代器模式 857
实例546 观察者模式 859
实例547 状态模式 862
实例548 策略模式 864
实例549 模板方法模式 866
实例550 访问者模式 868
21.5 网站开发架构模式 870
实例551 MVC框架在联系人管理网站中的
应用 870
实例552 应用MVC架构开发简单计算器 874
第7篇 综合应用篇
第22章 网站设计与网页配色 880
（本章内容在配书光盘中）
22.1 企业网站 881
实例553 汽车销售网 881
实例554 医药连锁网 882
实例555 硬件产品网 883
实例556 软件产品网 884
实例557 物流网 885
实例558 宾馆酒店网 886
22.2 电子商务类 887
实例559 B2C电子商务网 887
实例560 B2B电子商务网 888
22.3 搜索引擎类 889
实例561 站内搜索引擎 889
实例562 互联网搜索引擎 890
22.4 生活资讯类 891
实例563 家居销售网 892
实例564 房地产信息网 893
22.5 娱乐类网站 894
实例565 音乐网 894
实例566 电影网 895
实例567 游戏门户网 897
22.6 供求信息类 898
实例568 人才供求网 898
实例569 二手商品供求网 899
22.7 其他应用 900
实例570 个人主页 900
实例571 美食网 902
实例572 博客网站 903
第23章 Java Web典型项目开发案例 904
（本章内容在配书光盘中）
23.1 Ajax聊天室 905
实例573 实时获取并显示在线人员列表 905
实例574 实现用户发言 907
实例575 实时显示聊天内容 910
实例576 安全退出聊天室 913
23.2 博客网核心模块开发 915
实例577 注册自己的博客 915
实例578 根据域名访问博客 917
实例579 推荐博客设置 918
实例580 文章浏览操作 920
23.3 在线投票统计功能 922
实例581 实现投票功能 922
实例582 实现柱形图统计功能 923
实例583 实现饼图统计功能 926
实例584 双击鼠标展开图片 928
23.4 B2C电子商务网站 929
实例585 添加商品到购物车 929
实例586 查看购物车 931
实例587 修改商品数量 933
实例588 生成订单 934
23.5 在线音乐 937
实例589 试听歌曲并同步显示歌词 937
实例590 添加歌曲 939
实例591 以顺序和随机方式进行歌曲连播 940
23.6 校内数码相册 944
实例592 以幻灯片方式播放数码相片 944
实例593 创建相册分类并上传相片 945
实例594 浏览和管理上传相片 947
实例595 数码相册分类管理 950
23.7 仿百度知道之明日知道 953
实例596 在线提问 953
实例597 问题回复 955
实例598 修改问题 956
实例599 关闭提出的问题 957
实例600 搜索问题 958