标题：Java Web开发之道
图书信息
Java Web开发之道
明日科技  王国辉  卢瀚  等编著  
ISBN 978-7-121-12803-5
2011年3月出版
定价：69.00元含（含光盘1张）
16开
536 页
作者简介
本丛书的作者团队对计算机程序设计类图书市场有很好的敏感性，对出版动态有准确的把握，对计算机技术的发展进行长期跟踪。该团队长期以来致力于计算机图书的内容提供和策划，已经出版的多个系列图书都在计算机图书市场上有良好的口碑，都曾经引领了当年的计算机程序设计畅销书。
宣传语
高薪工程师经验分享
事半功倍的编程手记
凝聚5位开发高手7年开发心血精华所得，程序开发人员开发的必备宝典
320个感悟、技巧、陷阱、谬误、算法和方案，
帮您轻松掌握程序开发方法，提升开发实战技能。
内 容 简 介
这是一本集编程感悟、技巧、陷阱、谬误、算法和方案为一体的编程书籍，旨在引导读者如何学习编程，帮助读者丰富编程经验。全书分为6篇，共计12章内容，全面介绍了学习和应用Java Web进行程序开发的各种陷阱与谬误、技术细节与经验技巧、常用的算法及解决方案。其涉及的技术主要包括JSP、Servlet、JDBC、JavaScript、CSS、AJAX和数据库应用等基础知识，jQuery、报表打印、Java Mail等一些相对高级的技术，同时还包括Spring、Hibernate、Struts1和Struts2主流的框架技术。
本书附带有配套DVD光盘，光盘中提供书中全部实例和项目的源代码，这些源代码都是经过作者精心调试通过的，保证能够在Windows XP、Windows 2003及Windows 7操作系统下编译和运行。
本书非常适合大、中专院校在校生、毕业生、求职者、编程爱好者学习，同时也可以作为想要学习编程的初级人员的指导用书。
前  言
许多求职人员在面试时经常遇到的一个问题是“您有几年开发经验？”，这对于一个刚刚走出校园的毕业生来说简直就是一颗“原子弹”。“经验”真的很重要吗？是的，它是衡量一个人能力的砝码，它将许多求职者挡在门外。
本书不是基础类书籍，不是项目、案例类书籍，它是一部提高编程经验的书籍。它涵盖了100个编程细节、140个编程技巧、20个编程陷阱、20个编程谬误、20个优化算法和20个解决方案。这些内容是作者结合自己多年的实际开发经验，精心筛选和提炼而成的。如果您想提高自己的编程经验，本书将是最佳的选择！
本书内容
本书包含6篇，共计12章内容。主要包括编程经验与感悟篇、陷阱与谬误篇、技术细节篇、编程技巧篇、算法和效率篇、解决方案篇等内容。
本书内容结构如下图所示。
本书特色
内容经典，汇聚精华
书中每项内容都是作者精心选择的，具有很强的代表性和实用性。
讲解风趣，诙谐生动
无论在目录名称上还是在技术讲解上，书中始终突出趣味性。在目录选择上，作者想尽办法使目录更新颖，更能够体现内容的特点。在技术讲解中，通过穿插故事、比喻等形式，帮助读者消化和吸收所介绍的内容。
知无不言，言无不尽
书中在介绍知识点时，都会对相应专题进行深入剖析，使知识点呈现系统性、全面性。避免出现一笔带过、言之无物的情况。
图文并茂，形象易懂
书中使用了大量的流程图、示意图、图例来说明和演示技术，使读者通过视觉更直观地理解内容，例如以下的示意图。
代码规范，注释详尽
书中实例代码都是按照商业编码规则书写的，为了方便用户阅读代码，几乎所有代码都提供有详细注释，例如以下的代码注释。
本书约定
书中的所有实例在光盘中均有源代码。源代码在光盘中的存储形式为“MR\Instance\1\01\ 1.1”，其中，“MR\Instance\”是固定的目录部分，其后的“1”表示实例所在的章号，而章号后的“01”表示二级标题的序号，最后的“1.1”表示工程名称。目录示意图如下图所示。
在本书的二级标题下会存在多个实例的情况，为了区分不同的实例，实例的工程名称都是不同的。例如，01二级标题下存在两个实例，它们的存储形式为：“MR\Instance\1\01\ 1.1.1”和“MR\ Instance\1\01\1.1.2”。
书中有些实例会用到数据库。为了保证程序的运行，用户需要将实例使用的数据库安装到本地
机器上。详细安装方法请参考光盘中的“Java Web编程之道光盘使用说明书”。
由于篇幅限制，书中有些实例只给出了核心代码，这并不影响读者的学习。完整代码可以在本书的光盘中找到。
在使用本书的实例之前，请仔细阅读光盘中的“Java Web编程之道光盘使用说明书”。
附赠DVD光盘
为了帮助读者学习和练习书中的实例，本书附赠有DVD光盘，里面提供书中所有实例项目的源代码、素材、Java Web编程之道光盘使用说明书，并赠送Java Web相关学习资料。光盘目录如下图所示。
注：读者在使用本书光盘源码时，请仔细阅读光盘使用说明书。
本书读者群
本书非常适合以下人员阅读：
 Java求职人员
 大、中专院校的在校生和毕业生
 相关培训机构的学员
 语言已经入门，急需进一步提高的编程人员
 编程爱好者
 有多年开发经验的程序员
学习答疑
如果您在学习或使用本书的过程中遇到问题或疑惑，可以通过如下方式与我们联系：
我们承诺将在5个工作日内给您提供解答。
本书作者
本书由明日科技组织编写，参加编写的有王国辉、卢瀚、梁水、刘中华、张彦国、王乐乐、高春艳、梁晓岚、李伟明、巩建华、李继业、刘欣、顾丽丽、杨丽、董大永、潘凯华、陈丹丹、孙秀梅、刘彬彬、张磊、李慧、赛奎春、刘云峰、李贺、刘龄龄、尹强、宋坤、于长凤、李钟尉、王军、王小科、房大伟、吕双、刘锐宁、安剑、赵会东、张振坤、陈英、刘莹、吴蓉华等。由于作者水平有限，疏漏和不足之处在所难免，请广大读者朋友批评指正。
明日科技  
2010年12月
目  录
第1篇  编程经验与感悟篇
第1章  编程经验谈6则
经验01  乐不思蜀——寻找编程的乐趣 3
经验02  水滴石穿——编程学习经验谈 4
经验03  举足轻重——代码规范经验谈 6
经验04  技高一筹——数据库设计经验谈 8
经验05  征战沙场——项目实战经验谈 10
经验06  步步高升——面试经验谈 12
第2章  编程感悟6则
感悟01  脚踏实地——程序员的成长之路 15
感悟02  与时俱进——程序员的生存法则 16
感悟03  制胜法宝——程序员的必备技能 17
感悟04  雾里看花——程序员的认识误区 18
感悟05  宏图大业——程序员的生涯规划 19
感悟06  机不可失——未来IT发展趋势 20
第2篇  陷阱与谬误篇
第3章  细说开发人员不可忽视的20个技术陷阱
陷阱01  脱缰之马——IF语句的花括号“{”和“}” 24
陷阱02  精度缺失——强制转换的负面影响 26
陷阱03  缺一不可——反序列化对象的serialVersionUID陷阱 27
陷阱04  谨言慎行——被覆盖的父类变量 30
陷阱05  无法运行——自定义String方法导致主方法无效 33
陷阱06  小心谨慎——字节数组的乱码问题 34
陷阱07  控制无效——switch语句的运行控制陷阱 35
陷阱08  防不胜防——复合赋值造成精度缺失 37
陷阱09  不得不防——long型数据的隐患 39
陷阱10  永无休止——while的死循环 40
陷阱11  数值转换——八进制数的危害 41
陷阱12  莫名其妙——Servlet的页面转发陷阱 41
陷阱13  深入理解——请求转发与重定向 44
陷阱14  超出控制——Tomcat下单例模式导致的实例并不唯一 46
陷阱15  阻止失败——错误阻止浏览器默认行为 49
陷阱16  一无可取——操作Cookie取值错误陷阱 50
陷阱17  晕头转向——JavaScript嵌套函数指向this对象错误 52
陷阱18  线程安全——Servlet的非线程安全 54
陷阱19  深藏不漏——frame的多session陷阱 56
陷阱20  字符乱码——AJAX的中文乱码 58
第4章  细说开发人员意识中的20个常见谬误
谬误01  误入歧途——所有的异常都要使用try catch语句捕获 60
谬误02  想入非非——所有资源都由垃圾回收器回收 61
谬误03  是非真相——默认构造方法都是public的 62
谬误04  并非如此——类中不能创建私有构造方法 63
谬误05  小心为妙——split()方法可分隔所有字符串 64
谬误06  恰恰相反——存储数据HashMap比数组快 65
谬误07  必由之路——try语句块中使用return语句，finally语句块将得不到执行 66
谬误08  一字之差——重载方法就是重写方法 67
谬误09  相差甚远——存储相同数据一维、二维数组占内存基本相同 69
谬误10  不知其二——泛型在不被指定的情况下是不确定的类型 71
谬误11  恶意猜测——多个线程同时调用静态方法影响运行结果 72
谬误12  不知其二——字符串是值类型 73
谬误13  易于理解——算法应越简单越好 74
谬误14  相差甚远——String与StringBuffer基本上相同 75
谬误15  误入歧途——JAVA中没有全局变量 77
谬误16  恰恰相反——频繁查询数组比HashMap快 78
谬误17  并非如此——DOM属性与元素属性是相同的 80
谬误18  片面之词——所有业务逻辑都应由程序实现 80
谬误19  并非如此——JavaScript没有私有变量与共有变量之分 81
谬误20  并非如此——JavaScript是顺序解析的 82
第3篇  技术细节篇
第5章  细说Java Web技术基础细节50例
细节01  举足轻重——Java类的对象 87
细节02  子承父业——Java的继承 88
细节03  多歧亡羊——Java的多态性 90
细节04  以简驭繁——Java的接口 92
细节05  分毫析厘——Java的变量与常量的区别 93
细节06  变幻无常——Java的拆箱与封箱机制 95
细节07  减少开销——Java变量的使用原则 98
细节08  开枝散叶——DOM分层结构 99
细节09  金题玉躞——CSS样式表特点 100
细节10  初识JSP——JSP技术特征 101
细节11  追根溯源——JSP处理过程 103
细节12  有备无患——JSP的3种注释 104
细节13  异曲同工——include指令与<jsp:include>的区别 106
细节14  雀小脏全——JavaBean的形式和要素 108
细节15  二分明月——JavaBean的种类 110
细节16  精益求精——JavaBean的设计原则 110
细节17  究根问底——JavaBean的作用域 112
细节18  一探究竟——JavaBean的属性 113
细节19  生老病死——Servlet的生命周期 116
细节20  繁枝末节——Servlet的代码结构 117
细节21  守望相助——Servlet上下文监听 118
细节22  忠诚卫士——Servlet过滤器原理 119
细节23  过化存神——Servlet过滤器的配置 120
细节24  井井有条——XML文档结构 121
细节25  浑然一体——XML规范中的字符集 123
细节26  循规蹈矩——DTD文档类型定义 124
细节27  自立门户——自定义标签的构成 127
细节28  钟灵毓秀——Tag接口解析 129
细节29  安全至上——JavaScript的同源策略 131
细节30  事件灵魂——JavaScript的event对象 132
细节31  量才录用——DOM核心接口 133
细节32  借花献佛——限制Cookie在特定的域 135
细节33  计功补过——日志记录器Logger 137
细节34  连枝比翼——JDBC-ODBC桥技术 138
细节35  有条不紊——Resultset结构特点 139
细节36  承前启后——连接池技术 140
细节37  兵多将广——JDBC的驱动类型 142
细节38  按部就班——JDBC数据持久化流程 144
细节39  老当益壮——Model1开发模式 146
细节40  分守要津——Model2开发模式 147
细节41  守正不挠——正则表达式 149
细节42  门当户对——正则表达式模式匹配符 150
细节43  信而有征——RegExp对象的属性 152
细节44  规矩准绳——JavaScript数据类型转换规则 153
细节45  随遇而安——JavaScript函数变量作用域 154
细节46  井然有序——HTML文档的基本结构 154
细节47  得力助手——ActiveX控件剖析 155
细节48  必不可少——JavaScript中的document对象 156
细节49  必知必会——HTML表单中的常用元素 156
细节50  消除隐患——Internet Explorer安全区域 158
第6章  细说Java Web主流框架技术细节30例
细节01  深入剖析——Spring框架的组成模块 160
细节02  反经行权——Spring的IoC 161
细节03  切中时弊——Spring的AOP 162
细节04  浅尝辄止——AOP中的术语 164
细节05  生生不息——容器中JavaBean生命周期 166
细节06  因时制宜——Spring的控制器 167
细节07  轻车简从——Spring中DAO框架 169
细节08  防患未然——Spring的事务管理器 171
细节09  触景生情——Spring视图解析器 173
细节10  惺惺相惜——容器与JavaBean的耦合 174
细节11  五子登科——Hibernate的核心接口 175
细节12  触类旁通——Hibernate命名策略的运用 176
细节13  变幻莫测——持久化实例的3种状态 179
细节14  合理规划——隔离级别的选择 181
细节15  寻枝摘叶——HQL检索技术 181
细节16  重中之重——Struts1.X的MVC设计模式 185
细节17  按部就班——Struts1.X的工作流程 186
细节18  强弓劲弩——Struts1.X中的主要控制器 187
细节19  应时对景——Struts1.X中的视图 191
细节20  从容应对——Validator框架和Actionform 192
细节21  标新立异——Struts2.X的体系结构 193
细节22  举重若轻——Struts2.X的ACTION对象 195
细节23  驾轻就熟——Struts2.X的ACTION基本流程 196
细节24  不法常可——Struts2.X的常量配置 197
细节25  不可多得——Struts2.X结果映射的类型 198
细节26  神兵利器——Struts2.X的OGNL 199
细节27  神通广大——Struts2.X拦截器 201
细节28  变化无穷——Struts2.X拦截器栈配置 203
细节29  顺藤摸瓜——Struts2.X资源文件加载顺序 204
细节30  规矩准绳——Struts2.X验证文件命名规则 205
第7章  细说Java Web其他应用技术细节20例
细节01  焕然一新——AJAX的开发模式 208
细节02  AJAX灵魂——XMLHttpRequest对象 209
细节03  小心谨慎——AJAX开发注意的问题 211
细节04  按部就班——AJAX发送请求步骤 212
细节05  有求必应——AJAX处理服务器响应 214
细节06  避实就虚——数据库的视图 215
细节07  灵活多变——创建存储过程的方法 217
细节08  迫不得已——数据库的触发器 220
细节09  通风报信——邮件传输相关协议 222
细节10  知错改错——指令标识的语法错误 223
细节11  知错改错——动作标识的语法错误 225
细节12  防不胜防——脚本标识中的错误 227
细节13  遁入空门——程序的空指针错误 231
细节14  解析XML——JDOM介绍 232
细节15  深入细节——JDOM的数据类型 233
细节16  解析XML——SAX和DOM比较 235
细节17  驾轻就熟——SAX的常用接口 236
细节18  电子信使——Java Mail的关键类解析 237
细节19  炫目多彩——网页基本配色原则 242
细节20  井井有条——页面布局方式 243
第4篇  编程技巧篇
第8章  细说Java Web基础技巧70例
技巧01  精确操作——防止重复提交表单 248
技巧02  友好提示——JSP自定义错误页面 249
技巧03  杜绝缓存——JSP禁用页面缓存 250
技巧04  删除缓存——JSP删除指定Cookie 250
技巧05  发送图片——通过JSP发送动态图像 251
技巧06  遍历数组——JSP的for/in循环 253
技巧07  日期处理——JSP字符串日期转换 253
技巧08  路标指示——JSP相对路径设置 254
技巧09  遍历文件——JSP遍历指定目录下的文件 255
技巧10  火眼金睛——JSP查看文档是否存在 256
技巧11  数字处理——JSP正常本地格式化输出 256
技巧12  位数控制——JSP控制整数小数输出位数 257
技巧13  百分数处理——JSP数字百分比输出 257
技巧14  货币处理——JSP货币值输出 258
技巧15  读取web.xml——JSP读取web.xml参数 259
技巧16  线程安全——编写线程安全的JSP程序 259
技巧17  动作指令——JSP包含动态文件 260
技巧18  固定不变——CSS的绝对定位方法 261
技巧19  页面居中——CSS垂直居中方法 262
技巧20  图文混排——CSS实现的图文混排 263
技巧21  只读文本框——设置文本框为只读属性 263
技巧22  限制输入——限制编辑框输入文本的长度 264
技巧23  格式转换——将数据转换为JSON格式 265
技巧24  批量操作——实现复选框的全选和反选 266
技巧25  数字格式化——将数字格式化指定位数 267
技巧26  正则表达式——验证二进制数 268
技巧27  输出HTML——生成版权信息 269
技巧28  Tomcat技巧——修改端口号方法 269
技巧29  Tomcat技巧——常用优化技巧 270
技巧30  Tomcat技巧——清除Tomcat页面缓存 271
技巧31  Tomcat技巧——限制特定IP访问 271
技巧32  Tomcat技巧——配置虚拟主机 271
技巧33  Tomcat技巧——配置DBCP连接池 272
技巧34  Tomcat技巧——设置默认执行页面 273
技巧35  预先查看——实现图片上传预览功能 273
技巧36  开发技巧——Eclipse自定义菜单项 274
技巧37  开发技巧——Eclipse使用中文JavaAPI 274
技巧38  iframe技巧——在父窗体中访问子窗体 275
技巧39  iframe技巧——iframe自适应高度 275
技巧40  Servlet技巧——利用Servlet导出Excel 276
技巧41  Servlet技巧——精简web.xml的内容 277
技巧42  Servlet技巧——改变JSP文件后缀 278
技巧43  Servlet技巧——访问数据库连接池 279
技巧44  Servlet技巧——显示出错信息技巧 280
技巧45  Servlet技巧——使用过滤器防止页面缓存 280
技巧46  Servlet技巧——同时支持两种请求协议 281
技巧47  系统日志——利用Log4j记录系统活动 282
技巧48  遍历Map——利用JSTL遍历Map 282
技巧49  自动编号——利用JSTL为信息列表编号 283
技巧50  动态表格——JavaScript实现的动态表格 284
技巧51  JavaScript技巧——面向对象的定义方法 284
技巧52  JavaScript技巧——利用split()截取字符串 286
技巧53  JavaScript技巧——实时显示系统时间 286
技巧54  JavaScript技巧——去除字符串中的空格 287
技巧55  JavaScript技巧——阻止事件冒泡传递 288
技巧56  JavaScript技巧——生成随机字符串 289
技巧57  JavaScript技巧——控制表单提交和重置 290
技巧58  JavaScript技巧——表单验证 290
技巧59  JavaScript技巧——容错处理 291
技巧60  JavaScript技巧——代码调试 291
技巧61  JavaScript技巧——对象直接量创建对象 292
技巧62  性能优化——JavaScript性能优化 293
技巧63  限制访问——WEB-INF文件夹保护页面 293
技巧64  限制访问——web.xml保护页面 294
技巧65  限制访问——在Web.xml中配置过滤保护 294
技巧66  报表打印——利用WebBrowser打印 295
技巧67  长度获取——JSTL获取List长度 296
技巧68  时间显示——利用JSTL显示系统时间 296
技巧69  资源回收——DBCP自动回收数据库资源 297
技巧70  性能优化——JavaBean性能优化 297
第9章  细说Java Web主流框架技巧40例
技巧01  Spring技巧——分散配置 300
技巧02  Spring技巧——操作properties属性文件 300
技巧03  Spring技巧——简化格式配置XML 301
技巧04  Spring技巧——监听器自动加载配置文件 302
技巧05  Spring技巧——Servlet自动加载配置文件 302
技巧06  Spring技巧——映射所有hbm.xml文件 303
技巧07  Spring技巧——配置Log4j日志 303
技巧08  Spring技巧——复用Bean定义 304
技巧09  Spring技巧——用type匹配构造函数参数 305
技巧10  Spring技巧——中文乱码处理 306
技巧11  Spring技巧——容器后处理方法 306
技巧12  Spring技巧——获取BeanFactory容器引用 307
技巧13  Spring技巧——匿名内部JavaBean创建 308
技巧14  Spring技巧——定制属性编辑器 308
技巧15  Spring技巧——定时执行任务 310
技巧16  Hibernate技巧——创建安全的Session 311
技巧17  Hibernate技巧——HQL模糊查询 313
技巧18  Hibernate技巧——HQL分批检索对象 313
技巧19  Hibernate技巧——HQL对结果进行排序 313
技巧20  Hibernate技巧——HQL属性查询 314
技巧21  Hibernate技巧——QBC限定条件查询 315
技巧22  Hibernate技巧——QBC分组与统计 315
技巧23  Hibernate技巧——优化批量增删改操作 316
技巧24  Hibernate技巧——充分运用检索策略 317
技巧25  Hibernate技巧——对关联对象进行过滤 318
技巧26  Struts1.X技巧——资源文件的绑定 318
技巧27  Struts1.X技巧——访问其他模块 318
技巧28  Struts1.X技巧——防止重复提交 319
技巧29  Struts1.X技巧——实现跨页表单 321
技巧30  Struts1.X技巧——验证框架使用JavaScript 322
技巧31  Struts2.X技巧——包含配置 322
技巧32  Struts2.X技巧——手动验证 323
技巧33  Struts2.X技巧——通配符配置Action 324
技巧34  Struts2.X技巧——提交按钮的特殊设置 325
技巧35  Struts2.X技巧——带参数的拦截器 325
技巧36  Struts2.X技巧——配置文件中定义变量 327
技巧37  Struts2.X技巧——防止重复提交 328
技巧38  Struts2.X技巧——输出树控件 329
技巧39  Struts2.X技巧——将字符串转换为List 330
技巧40  Struts2.X技巧——连接多个List 330
第10章  细说Java Web其他应用技巧30例
技巧01  jQuery技巧——隔行换色表格 333
技巧02  jQuery技巧——解决类库的冲突问题 333
技巧03  jQuery技巧——DOM对象与jQuery对象的转换 334
技巧04  jQuery技巧——扩展jQuery功能 334
技巧05  jQuery技巧——为动态创建元素绑定事件 335
技巧06  jQuery技巧——序列化对象 335
技巧07  jQuery技巧——页面加载响应事件 336
技巧08  jQuery技巧——模拟用户操作 336
技巧09  jQuery技巧——输入框文字的消失 337
技巧10  jQeury技巧——事件委派 338
技巧11  安全技术——禁止复制网页 339
技巧12  安全技术——防止网页另存为 339
技巧13  安全技术——屏蔽鼠标右键 340
技巧14  安全技术——防止页面盗链 341
技巧15  安全技术——屏蔽IE主菜单 341
技巧16  SQL语句技巧——按月查询数据 342
技巧17  SQL语句技巧——日期型数据模糊查询 343
技巧18  SQL语句技巧——不显示重复记录 344
技巧19  SQL语句技巧——查询重复记录和记录数 345
技巧20  SQL语句技巧——使用表的别名 346
技巧21  SQL语句技巧——用子查询做派生的表 347
技巧22  SQL语句技巧——用子查询做表达式 348
技巧23  SQL语句技巧——自连接查询 348
技巧24  SQL语句技巧——查询反向的数据 349
技巧25  SQL语句技巧——嵌套查询 350
技巧26  Eclipse技巧——高级调试技术 351
技巧27  Eclipse技巧——单步调试程序 355
技巧28  Eclipse技巧——从CVS资源库检出项目和模块 358
技巧29  Eclipse技巧——JUnit的设置 359
技巧30  Eclipse技巧——启用和禁用断点 361
第5篇  算法和效率篇
第11章  细说Java Web常用算法20例
算法01  单线联系——单向链表算法 364
算法02  双线联系——双向链表算法 367
算法03  先进后出——堆栈 371
算法04  前出后进——队列 378
算法05  层层相连——树 381
算法06  步步为营——起泡排序 387
算法07  只要最小——选择排序 390
算法08  见缝插针——插入排序 394
算法09  分分合合——归并排序 397
算法10  算法应用——MD5加密 399
算法11  算法应用——SHA加密 406
算法12  算法应用——百钱买百鸡 407
算法13  算法应用——韩信点兵 408
算法14  算法应用——斐波那契数列 409
算法15  算法应用——水仙花数 410
算法16  从头开始——顺序查找 411
算法17  中间的选择——二分查找 415
算法18  趋近理想的查找——散列技术 416
算法19  算法应用——素数 420
算法20  算法应用——汉诺塔 421
第6篇  解决方案篇
第12章  细说Java Web技术解决方案20例
方案01  程序优化——JSP与JavaBean优化 425
方案02  程序优化——Hibernate持久层的优化 430
方案03  程序优化——数据库优化 438
方案04  数据库操作——数据库的备份与还原 440
方案05  数据库操作——利用视图进行查询 446
方案06  数据库操作——利用存储过程进行查询 449
方案07  程序安全——文件上传安全 453
方案08  程序安全——程序线程安全 457
方案09  报表打印——打印Word报表 461
方案10  报表打印——打印Excel报表 465
方案11  报表打印——打印分组报表 469
方案12  安全策略——用户登录 473
方案13  安全策略——系统日志记录 477
方案14  网络通信——发送文本格式的E-mail 481
方案15  网络通信——接收E-mail 484
方案16  文件管理——文件的压缩与解压缩 492
方案17  页面设计——导航条 495
方案18  页面设计——DIV+CSS布局的实现 500
方案19  页面设计——多媒体应用 506
方案20  网站发布——DNS服务器发布带域名网站 512