内容提要  《Web程序设计》是畅销书作者Robert W. Sebesta的经典名著,被国内外无数高校和自学人员选为Web课程的教材。该书是其最新版,介绍了Internet和万维网的起源及演变过程,全面系统地讨论了Web开发相关的主要编程语言和工具,以及这些语言和工具之间的相互影响及优劣势。该书对全书内容进行了很多修订,并新增加了关于Ruby、Rails和Ajax的3个章节。
概述 万维网(World Wide Web,www)给我们日常生活带来的影响难以估计,至少在发达国家是这样的。在短短几年中,我们已经学会了利用Web完成各种任务,从平常购买机票到凌晨起来为高风险的投机交易收集商业信息。 当前,全球已经存在数百万个Web站点,这些站点的发展速度可能会使人们误认为网站的开发技术已经到头了,甚至有的人还认为在Web出现之前,这些网站开发技术就已经出现并随时可以使用了。此外,还有一些人可能认为数以万计的网站开发人员已经处于失业状态,正在等待新的就业机会,而且这些人在网站开发技术刚出现的时候就已经掌握了这些技术。实际上,这两种想法都是错误的。不管是现有企业中的企业家,还是正准备创业的创业者,都非常需要新技术。而且,不断有程序员加入到这个领域中来,至少在某种程度上,对程序员的需求缺口中很大一部分被刚从高校毕业的新程序员填满了。但是,其中也有很多人以前在软件开发行业工作过。无论如何,所有这些程序员都必须学习使用新的语言和技术。 直到最近,程序员都是通过企业内部培训来学习Web软件开发技术的,培训内容是针对某个特定Web开发技术的一系列课程,这些课程可能是学院或者大学中的,也可能是企业自己的。我们逛书店就会发现一大堆针对Web开发技术的书籍,它们一般都是面向具有实践经验的专业人员的。在过去的几年里,学院课程看起来涵盖了绝大部分Web开发技术。但是,在教学过程中遇到的一个困难是没有一本教科书能够满足需求。绝大多数这方面的书籍都是针对专业人员而不是针对大学学生来讨论Web编程的。这样的书籍一般都是以满足专业人员的需求为特色,而这些专业人员和大学生有很大的区别。针对学生的书籍和针对专业人员的书籍之间的主要区别在于作者假设读者已有一定的知识和经验。专业人员的知识背景区别很大,这就很难做出准确的假设。但是另一方面,面向计算机科学专业的低年级学生编写书籍时,可以对读者的知识背景做出准确的假设。本书就是面向这些学生的。 本书的目标是向读者全面介绍建立和维护Web站点所必需的工具和技术,其中大部分技术是用于构建Web站点的。针对这些技术,已经有很多面向专业人员的书籍了。比如,现在有很多专门讨论XHTML的书。实际上,对于其他技术来说也是一样的。本书简单介绍了Web的工作原理,并讨论了一些应用最为广泛的Web技术。 本书的前3版作为科罗拉多大学科罗拉多泉分校(University of Colorado at Colorado Springs)低年级的Web编程课程教材。这门课程的目标是让学生在一个学期内集中掌握不同的编程语言和技术。为了达到这个目标,就必须进行大量的编程练习。首先,在开始阶段,学生必须仅仅利用XHTML来建立一个基本的静态Web站点。在以后的时间里,可以利用课程中讨论的新技术为这个静态站点添加功能部件。这些学生之前已经学习过Java编程、数据结构和汇编语言,这些知识对于本课程的学习是有帮助的,事实上其中很多人在学习这门课程之前就已经学习了XHTML的一些知识。 学习本书之前,最重要的预备知识是要掌握某种语言的编程技术,而这种语言必须能够支持面向对象编程。对其他编程语言和UNIX有所了解对于本书的学习也是有益的,特别是UNIX对于本课程中Perl部分的学习是非常有帮助的。此外,UNIX仍然是Web服务器的一种比较流行的选择。熟悉其他编程语言也能够使得新语言的学习更加容易。 本书结构 本书分为三个部分:简介(第1章)、客户端技术(第2章~第7章)和服务器端技术(第8章~第16章)。 第1章是本书其余部分的基础。主要介绍一些基础知识,包括Internet 和World Wide Web的历史及本质、浏览器、服务器、URL、MIME类型和HTTP。本章还简单介绍了本书其余部分中的一些重要主题。 第2章介绍XHTML,包括图片、链接、列表、表格、框架和表单。其中利用了一些较小的示例来说明这些XHTML元素。 第3章的主题是层叠样式表(Cascading Style Sheet,CSS),CSS一出现就迅速成为XHTML文档样式设计的标准方式。考虑到CSS的内容和复杂程度,本章并没有涵盖样式表的所有方面,只介绍了样式表的层次、样式说明格式、选择器格式、属性值和颜色。属性值可以对字体、列表和元素边距进行设置。本章也将使用一些小示例说明这些内容。 第4章将介绍JavaScript的一些核心概念,JavaScript是一种功能非常强大的语言,可用于多种不同的应用程序中。当然,本书只关心它在Web编程中的应用。虽然JavaScript已经变得非常庞大和复杂,但是,我们将通过学生掌握的其他编程语言知识来促进对JavaScript的学习。因此,本章用较短的篇幅来介绍这种编程语言。本章涵盖的主题为JavaScript的对象模型、控制表达式、对象、数组、函数、构造函数和模式匹配。 第5章将讨论JavaScript中与XHTML文档相关的一些特性。这些特性包括基础知识、DOM 2事件和事件处理模型,它们可以应用到XHTML文档的一些元素中。 JavaScript在Web编程中最令人激动和最有意思的应用,可能就是利用文档对象模型(Document Object Model,DOM)来建立动态的XHTML文档。第6章将描述如何利用JavaScript和DOM实现各种文档修改。其中包括元素定位,元素移动,修改元素的可见属性,修改文本的颜色、样式与大小,修改标记的内容,修改嵌套元素的顺序,缓慢移动元素和对元素进行拖放。 第7章介绍XML,XML可用于设计与主题相关的标记语言,这些语言可以在一些有着相同需求的用户中共享。本章将从以下几个方面介绍XML:XML的语法和文档结构、数据类型定义、命名空间和模式。此外,还将介绍如何显示那些同时利用CSS和XML转换方式来控制格式的XML文档。本章还介绍了Web服务和XML处理器。 第8章从通用编程语言的角度介绍Perl语言的特性和功能。在Web出现前后,Perl语言就在很多非Web应用程序中展示了自己的功能和灵活性,这些非Web应用程序包括UNIX系统管理和完成一些中小型的编程任务,而这些任务以前通常是利用C语言完成的。在很大程度上,我们只关注Perl语言在CGI编程中的应用。本章将介绍Perl语言的控制表达式、数组、散列、引用、函数、模式匹配和输入输出文件。 第9章介绍Perl语言在通用网关接口(Common Gate Interface,CGI)编程中的应用。虽然目前有很多技术可以替代CGI,但是,CGI的应用仍然很广泛,特别是采用Perl语言实现时。本章首先介绍CGI和CGI链接。然后介绍表单数据查询字符串的格式。接着将讨论CGI.pm模块,该模块在很大程度上简化了Perl语言的CGI编程。最后将利用几个示例说明如何设计普通的CGI任务,以及如何利用CGI.pm模块实现Perl语言编程。 第10章讨论Java Servlet和JSP。本章首先介绍构建Java Servlet的原理,并利用几个示例来说明Servlet如何应用于交互式Web文档。然后介绍通过跟踪Servlet、Cookie和Session在客户端中保存信息的两种方法,并利用示例进行说明。最后,将利用一系列示例来介绍JSP。 第11章介绍PHP。PHP是目前正广泛流行的一种服务器端脚本语言,尤其是在数据库访问方面。本章讨论PHP的基础知识,以及Cookie和会话跟踪的应用。PHP在Web数据库访问方面的应用将在第13章中介绍。 第12章介绍ASP.NET。首先,将简单介绍C#语言。然后讨论ASP.NET控件。最后还将介绍利用ASP.NET构建Web服务。 第13章介绍基于Web的数据库访问技术。本章首先将介绍关系数据库的本质、数据库访问的体系结构、结构化查询语言SQL,以及免费的数据库系统MySQL。然后将讨论三种基于Web的数据库访问技术,分别为利用Perl、PHP和Java JDBC的数据库访问技术。JDBC部分篇幅较长,包含了一个完整的Java数据库应用程序和Servlet中的元数据,以及JDBC的应用。所有这些示例程序都采用MySQL作为后台数据库系统。 第14章介绍Ruby编程语言。本章所涵盖的内容包括标量类型及其操作、控制语句、数组、散列、方法、类、代码块和迭代器,以及模式匹配。当然,Ruby的内容不止这些。但是,本章所涵盖的内容对于学生使用Ruby构建简单的程序和Rails应用程序来说已足够了。 第15章介绍Rails框架,通过此框架可以相对快速而轻松地构建Web应用程序。所涵盖的内容包括简单文档请求(包括静态和动态)、表单处理及使用数据库的应用程序。 第16章介绍Ajax,这是一种相对较新的技术,它可以以更高的效率来构建具有大量用户交互的Web应用。所涵盖的内容包括Ajax基础知识及在Rails中使用Ajax技术。 附录A针对那些熟悉C++语言和面向对象编程的人介绍了Java语言。不懂Java的学生可以从该附录中学习到一些Java方面的知识,对于理解本书中出现的Java applet、servlet、JSP和JDBC来说,这些知识已经足够了。 附录B列出了140多种颜色的名称及其十六进制代码。 附录C将介绍Java小程序(Java applet)。首先介绍applet操作的基础知识和paintComponent方法。接下来将讨论标签和applet的参数。然后将介绍如何通过applet创建图像。最后介绍一些可以通过Swing窗口小部件与用户进行交互的applet。 支持材料 Addison-Wesley的网站中提供了本书的一些附加材料。本书所有读者都可以使用的支持材料包括: ● 一组PowerPoint文件格式的讲稿。这组讲稿是根据本书针对课堂教学而开发的; ● 示例程序的源代码; ● 一组PowerPoint幻灯片,包含了书中所有的图片。 其他一些支持材料,如本书某些习题的答案只对于那些采用本书作为课堂教材的教师们是可用的。 可用软件 本书介绍的绝大部分软件系统学生们都可以免费使用。如浏览器,实际上它是JavaScript和Java虚拟机的解释器。同样,Perl语言、PHP、Ruby和Java语言处理器,以及Rails框架和支持servlet与Java JDBC的Java类库都是免费的。ASP.NET所需的.NET框架支持也可以从Microsoft免费获取。 第3版和第4版的区别 本书的第4版与第3版有着显著区别。讨论Applet的第7章成为附录C。第1章增加了讨论Web安全性的一节内容。第14章“Ruby简介”、第15章“Rails简介”和第16章“Ajax简介”则是本版新增加的内容。增加这几章内容反映了这三种技术在Web程序设计方面占据着越来越重要的地位。 全书对第3版的内容做了大量细致入微的修改,以提高内容的准确性和清晰度。 致谢 由于本书的审阅者们提出了大量的建议和修改意见,从而使得本书在质量上有了很大的改进。具体审阅者有:乔治梅森大学的Paul Ammann、南伊利诺斯大学的Dunren Che、中田纳西州立大学的Richard C. Detmer、缅因州大学肯特堡分校的Tony Gauvin、泰勒大学的Jonathan Geisler、阿拉巴马州大学伯明翰分校的David Green、阿肯色州大学的George Holmes、尼亚加拉大学的Arpad Kelemen、新罕布什尔大学的Linda Kenney、纽约州立大学Brockport分校的Kadathur Lakshmanan、圣母大学的Greg Madey、阿克伦城大学的Tim Margush、威廉玛丽学院的Robert Noonan、乔治梅森大学的Jeff Offutt、陶森大学的James Richards、马隆学院的Earl M. Rodd、肯尼索州立大学的Bennett Setzer、雷德福大学的Chen-chi Shing、佛罗里达理工学院的Marius C. Silaghi、印第安纳大学西北分校的Donald S. Szarkowicz、卡尔顿大学的Michael Weiss、加利福尼亚州立大学洛杉矶分校的Jonwook Woo、辛辛那提大学的Tom Wulf、Mir Farook Ali和Elizabeth Leboffee。 新泽西州学院的Pete DePasquale、泰勒大学的Jonathan Geisler和华盛顿大学的Martin Stepp是本书的技术审稿人。 编辑Matt Goldstein、编辑助理Maurene Goo、项目经理Marilyn Lloyd和市场助理Sarah Milmore对作者的感谢应该受之无愧,有了他们的鼓励和帮助,作者才能完成本书的手稿。另外,作者还要感谢Aardvark Group的Gillian Hall,作者提交的只是一组文件,是他把这些文件转换成了装帧精美的书。