应用程序设计基础
随着互联网及相关技术的迅猛发展,Web应用事实上已经成为当今企业最广泛的软件应用形式。
本章先介绍Web应用技术的发展情况,再介绍Web应用基础技术(HTTP、HTML和JavaScript),接下来介绍ASP.NET技术的相关知识,包括.NETFramework的概念、ASP.NET的概念、ASP.NET的工作原理,最后介绍VisualStudio.NET2008的操作方法,以及在VisualStudio.NET2008中创建Web应用程序的一般方法等。
1.1Web应用技术的发展概况 1.1.1Web应用的概念 在应用软件领域,如果按照软件的运行模式或安装部署的体系结构来分,往往可将其分为B/S(Browser/Server,浏览器/服务器)和C/S(Client/Server,客户/服务器)两种模式。
其中,在C/S模式下,一般来说应用软件可分为两部分,一部分在服务器运行,一部分在客户端运行,因此,既要在服务器中安装,也要在客户端安装。
C/S模式的优点是:应用程序主要在本机运行,故响应速度快;具有友好的操作界面。
C/S模式的主要缺陷是:要求网络系统高度可靠,如果客户端与服务器之间网络连接不稳定,应用软件将无法正常运行。
C/S模式比较适合局域网环境,解决诸如医院门诊管理之类的问题,以满足因为病人挂号时间非常集中、数据必须高效处理等情况的要求。
在B/S模式下,应用程序在服务器端运行,用户通过浏览器访问服务器。
B/S模式的数据输入通过浏览器实现,数据的显示以网页形式输出,数据的运算、检索与存储等处理操作由服务器端的应用程序完成。
例如,当想要查询公交路线时,首先用浏览器打开“搜狗地图”网站,输入起点和终点等相关数据,之后服务器端的应用程序将根据这个查询条件进行数据检索处理,最后把检索结果以网页形式显示在浏览器窗口中。
B/S模式的主要优点是:客户端无需安装,有Web浏览器即可使用;基于环境,对企业来说能够满足异地办公的需要;特别适合于为公众提供交互式的服务。
正因为如此,网上新闻、电子商务、电子政务、远程教学、远程医疗、博客、在线电影等如雨后春笋般出现。
可见,Web应用就是指在B/S体系结构下的应用软件系统。
2Web应用程序设计实用教程 1.1.2客户端技术的发展 Web应用的雏形由出生于伦敦的TimBerners-Lee设计。
Tim尚在牛津大学学习的时候就试图找出一种能像人脑一样通过神经传递、自主作出反应的程序。
1984年,Tim进入了著名的欧洲粒子研究中心(CERN),负责网络信息共享软件的开发。
经过努力,他成功编制了第一个高效局部存取浏览器Enquire,并把它应用于数据共享浏览,Web技术从此诞生。
经过几十年的发展,如今Web技术分为客户端技术和服务器端技术,其中,客户端技术的发展大概可分为以下几个阶段。
1.HTML诞生 HTML的历史最早可以追溯到20世纪40年代。
1945年,VannevarBush在一篇文章中阐述了文本和文本之间通过超链接相互关联的思想,并在文中给出了一种能实现信息关联的计算机Memex的设计方案。
DougEngelbart等人则在1960年前后,对信息关联技术做了最早的实验。
与此同时,TedNelson将这种信息关联技术正式命名为超文件(HyperText)技术。
1969年,供职于IBM公司的CharlesGolgfarb发明了可用于描述超文本信息的GML(GeneralizeMarkupLanguage,通用标记语言)。
在美国国家标准学会(ANSI)等组织的努力下,GML语言进一步发展为SGML(StandardGML,标准通用标记语言)。
1986年,SGML被国际标准化组织(ISO)发布为国际标准。
1989年,Tim及其同事试图创建一个基于超文本的分布式应用系统,SGML是很好的选择。
但由于SGML过于复杂,不利于信息的传递和解析,因此,Tim对SGML语言进行大刀阔斧的简化,最后成功开发出世界上第一个Web服务器和第一个Web客户机。
同时,Tim把他的发明正式定名为WorldWideWeb(WWW,万维网),并将简化后用于开发Web网页的语言定名为HTML(HypertextMarkupLanguage)。
1991年5月WWW在上首次露面,立即引起轰动,获得了极大的成功,被广泛推广应用。
2.动态HTML的出现 Tim制定的HTML只能在浏览器中展现静态的文本或图像信息,它无法满足人们对信息丰富性和多样性的需求。
这种需求必然导致一种变革,静态Web技术向动态Web技术转变是Web客户端技术发展的必然趋势。
动态概念最早是由GIF提出的。
GIF(GraphicsInterchangeFormat,图像互换格式)是CompuServe公司在1987年开发的图像文件格式。
GIF格式的显著特点有两点:一是采用压缩技术,图像文件的压缩率一般在50%左右;二是在一个GIF文件中可以存多幅彩色图像,把存于一个文件中的多幅图像数据逐幅读出并显示到屏幕上,就构成一种最简单的动画。
因此,GIF第一次为HTML页面引入了动态元素。
但真正的变革来源于1995年Java语言的问世。
Java语言天生具有的平台无关性的特点,让人们一下子找到了在浏览器中开发动态应用的捷径。
1996年,网景(Netscape)公司在其2.0版的NetscapeNavigator浏览器中,增加了对JavaApplet和JavaScript的支持。
紧接着,微软(Microsoft)公司在3.0版的Explorer(IE)浏览器中也引入了Java 第1章Web应用程序设计基础
3 技术,同时微软公司还推出了一种新的脚本语言VBScript。
现在,从事动画、交互操作、客户端应用开发的技术人员都纷纷使用Java或JavaScript语言设计出效果更加丰富多彩的网页。
真正让HTML动感无限的是CSS(CascadingStyleSheets,层叠样式表或级联样式表单)和DHTML(DynamicHTML,动态HTML)技术。
1996年,W3C(WorldWideWebConsortium,万维网联盟)提出了CSS标准。
CSS大大提高了开发人员对信息呈现格式的控制能力,受到了各浏览器提供商的热烈欢迎和支持。
1997年,微软公司发布了IE4.0,并把新技术CSS、JavaScript、VBScript、DOM(DocumentObjectModel,文档对象模型)发展成为一套完整、实用、高效的客户端开发技术体系,被称为DHTML。
JavaScript、VBScript和DOM可以加强页面中的数据处理,CSS实现了页面内容设计与效果设计的分离。
DHTML技术与Java技术的最大区别在于:Java技术依赖Java虚拟机(一种安装在浏览器端计算机中的基础程序)来运行JavaApplet,以实现动态效果;而DHTML无需启动Java虚拟机或其他脚本运行环境,直接在浏览器的支持下即可实现动态效果。
可见,DHTML更为简单,它的出现使Web应用变得多姿多彩。
为了在HTML页面中实现音频、视频等更为复杂的多媒体应用,1996年,网景公司首先在其2.0版的浏览器产品中引入QuickTime插件,与此同时,IE3.0正式支持在HTML网页中插入ActiveX技术,从此,插件技术迅速风靡于浏览器的世界。
值得纪念的是Flash插件的横空出世。
在20世纪90年代初,JonathanGay在FutuerWave公司开发了一种名为FutureSplashAnimator的二维矢量动态展现工具。
1996年,Macromedia公司收购了FutuerWave,并将JonathanGay的发明改名为Flash,从此Flash成为动画制作的标准技术。
1999年,Realplayer插件先后在Netscape和IE游览器中取得成功,而微软公司的MediaPlayer多媒体播放插件被预装到了各种Windows版本之中。
2007年,微软公司又推出了Silverlight技术。
Silverlight是一个跨浏览器和跨平台的插件,为Web带来下一代媒体体验和丰富的交互式应用程序体验。
它包括了许多先进的技术及设计概念,提供灵活的编程模型,支持JavaScript、.NET和其他的语言,并集成到现有的Web应用程序中,具有优化的搜索引擎、向量化的图形引擎,甚至支持3D、图形处理器加速以及H.264视频等。
总之,直到今天,新的动态技术仍然层出不穷。
3.客户端脚本语言的产生 客户端的开发人员除了需要制作HTML网页之外,有时还需要把浏览器的一些功能添加到应用程序中,以增强应用程序的功能。
从1992年起,万维网联盟就免费向开发人员提供libwww开发库。
借助它,开发人员可以编写Web浏览器和Web搜索工具,可以分析、编辑或显示HTML网页。
1999年,微软公司在IE5.0中引入HTML应用程序技术,利用它可直接把HTML页面转换为一个真正的应用程序。
从1997年的IE4.0起,微软公司为开发人员提供了Web浏览器控件和其他相应的组件接口,允许开发人员在自己的程序中直接嵌入浏览器窗口,或者直接调用IE浏览器的各种功能,如分析或编辑HTML页面等。
Windows98及其后的Windows操作系统甚至还利用WSH(WindowsScriptHost)技术把原本只在浏览器中运行的JavaScript、VBScript变成可以在Windows环境下使用的通用脚本语言。
总之,客户端脚本语言的产生让Web应用具有人机交互能力。
4Web应用程序设计实用教程
4.XML的诞生与迅速发展 1996年,供职于Sun公司的JohnBosak在W3C的领导下开始简化SMGL语言。
Bosak删除了SGML中的非核心的、未被使用的和含义模糊的部分之后得到XML(eXtensibleMarkupLanguage,可扩展标记语言)。
XML的最大特点是一方面保证了XML具有SGML的强大功能和可扩展性,另一方面XML又像HTML一样简单。
1998年,W3C正式发布了XML1.0标准,XML与HTML的最大区别在于,XML关心的是信息本身的格式和数据内容,HTML关心的是信息在浏览器窗口中的表现形式。
正因为如此,如今XML成为互联网的数据生成、发布、传输和共享的标准。
它的迅猛发展让Web网页具有信息自我描述的能力。
由于XML没有描述数据的表现形式,为此W3C专门制作了XSL(eXtensibleStylesheetLanguage)标准。
XSL由三个子语言组成:XPath、XSLT、XSL-FO。
其中,XPath专门用来在XML文档中查找信息;XSLT用来转换XML文档结构,如把XML文档转换为HTML文档;XSL-FO(formattingobjects)用来实现格式化输出,类似于CSS在HTML中的作用。
1.1.3服务器端技术的发展 与客户端技术从静态向动态的转变过程类似,Web服务器端的开发技术也是由静态向动态方向逐渐发展、完善起来的。
服务器端技术大体可以划分为以下3个阶段。
1.CGI和ISAPI阶段 最初的Web服务器只能简单地响应浏览器的访问请求并将存储在服务器上的HTML文件返回给浏览器。
一种名为SSI(ServerSideIncludes)的技术可以让Web服务器在返回HTML文件前,更新HTML文档的某些内容,不过其功能非常有限。
第一种真正使服务器根据运行时的具体情况生成HTML页面的技术是CGI(CommonGatewayInterface,公共网关接口)技术。
CGI的标准是由伊利诺斯大学超级计算机应用程序国家中心(NationalCenterforputingApplication,NCSA)提出的,并于1993年制定。
CGI实际上是一种运行于服务器端的特殊程序,其工作原理为:当用户从浏览器提出HTTP请求后,Web服务器激活CGI,然后CGI解析客户端提交的信息,并将信息传给服务器应用程序进行数据库查询,最后CGI将查询结果以HTML的格式返回给浏览器,由浏览器最终显示结果。
CGI的最大特点是允许服务端的应用程序根据客户端的请求,动态生成HTML页面,这就使得客户端和服务器端的动态信息交换成为了可能。
有了CGI技术,聊天室、论坛、电子商务、信息查询、全文检索等各种各样的Web应用蓬勃发展。
早期的CGI程序一般是经过编译后的可执行程序,使用
C、C++、PASCAL等高级程序设计语言设计。
为了简化CGI程序的修改、编译和发布,人们开始使用脚本语言编写CGI程序。
1987年,LarryWall发明了Perl语言,该语言既具有C语言的高效,又具有脚本语言所要求的便捷,非常适用于CGI程序的编写。
1995年,第一个使用Perl语言编写的CGI程序问世,很快Perl语言在CGI编程领域的风头就盖过了C语言。
之后,Python等脚本语言也陆续加入了CGI编程语言的行列。
后来,微软公司又提出了ISAPI(ServerApplicationProgramInterface,互联网服务 第1章Web应用程序设计基础
5 器应用程序接口),它可实现CGI能提供的全部功能,并在CGI的基础上进行了扩展,如提供了过滤器应用程序接口。
实际上,ISAPI就是一种能够被Web服务器IIS(InformationServer)加载和调用的DLL(DynamicLinkLibrary,动态链接库),其工作原理和CGI大体上是相同的,都是通过交互式主页取得用户输入信息,然后交服务器后台处理。
但是二者在实现机制上大相径庭。
ISAPI与CGI最大的区别在于:在ISAPI下建立的应用程序是以动态链接库的形式存在,而CGI的应用程序一般都是可执行程序。
ISAPI应用的工作流程与CGI也有一些不同:ISAPI应用的DLL不仅可以像CGI程序一样被用户请求激活,还可以被系统预先激活来监视用户输入;对于被用户激活的DLL,在处理完一个用户请求后不会马上消失,而是继续驻留在内存中等待处理别的用户输入,直到过了一段时间后一直没有用户输入时才退出内存。
2.PHP、ASP和JSP阶段 CGI和ISAPI的出现是为了解决以前所有技术都不能满足大型网站动态交互的需求,可它们具有天生的不足。
CGI和ISAPI都运行于服务器,当大量用户并发访问网站时,系统资源消耗迅速,稳定性和安全性成为最大的问题。
除此之外,CGI和ISAPI程序编写困难,对用户请求的响应时间较长,以进程方式运行导致性能受限等。
正由于CGI和ISAPI技术的这些缺点,开发人员需要寻找其他的解决方案。
1994年,RasmusLerdorf发明了专用于Web服务端编程的PHP(HypertextProprocessor,超文本预处理器)技术。
PHP的最大特点是它将HTML代码和PHP指令合成为完整的服务器端动态页面,Web应用的开发人员可以更加简便、快捷地实现动态Web功能。
1996年,微软公司的开发人员借鉴了PHP的思想,在微软的Web服务器产品IIS3.0中引入了ASP(ActiveServerPage,活动服务页)技术。
ASP使用JavaScript和VBScript脚本语言,借助MicrosoftVisualStudio等开发工具在市场上获得极大的成功,ASP迅速成为Windows平台下的Web服务器端的主流开发技术。
1997年,Sun公司推出了Servlet技术,作为Java阵营的CGI解决方案,并于1998年推出了JSP技术,允许在HTML页面中嵌入Java脚本代码,从而实现动态网页功能。
至此,Web服务端编程技术进入了三足鼎立阶段。
3.Web2.0阶段 Web2.0是相对Web1.0(2003年以前的互联网模式)的一类新的互联网应用的统称,是一次从核心内容到外部应用的革命。
由Web1.0单纯通过网络浏览器浏览HTML网页模式向内容更丰富、联系性更强、工具性更强的Web2.0互联网模式的发展已经成为互联网新的发展趋势。
Web1.0到Web2.0的转变,标志着用户从原来单纯地读网页到写网页的转变,从坐享网站建设成果到与信息服务商共同建设网站的转变,或者说,由被动地接收互联网信息向主动创造互联网信息迈进。
有人对Web1.0和Web2.0之间的区别作了以下形象的归纳: •Web1.0谈门户,Web2.0谈个人化。
•Web1.0谈内容,Web2.0谈应用。
•Web1.0谈商业模式,Web2.0谈服务。
•Web1.0谈密闭、大而全,Web2.0谈开放、联合。
•Web1.0网站中心化,Web2.0个人中心化。
6Web应用程序设计实用教程 •Web1.0为一对
一,Web2.0为社会性网络。
•Web1.0不知道对方是谁,Web2.0知道对方的来龙去脉。
实际上,Web2.0本身并不是全新的技术,而是将一些好的技术加以整合和发扬后形成的全新的Web应用模式,它是以Flickr、Craigslist、Linkedin、Tribes、Ryze、Friendster、等网站为代表,以Blog、TAG、SNS、RSS、Wiki等应用为核心,依据六度分隔、XML、SOAP、WSDL、Ajax等新理论和技术实现的互联网服务。
若从软件编程的角度来讲,则在Web2.0时代Web应用系统通常使用高级语言(如C#或Java)来开发;若从应用系统之间的相互关系来讲,则在Web2.0时代Web应用系统以XMLWebServices的形式为其他应用系统提供支持。
因此,Web2.0意味着软件发布周期的终结。
1.1.4Web浏览器与服务器的发展
1.Web浏览器 浏览器是一个用于文档检索和显示的客户端应用程序,通过超文本传输协议HTTP与Web服务器通信。
常见的Web浏览器主要有微软开发的Explorer(IE)、Mozilla开发的Firefox和网景公司开发的NetscapeNavigator等。
其中,IE在Windows平台上运行,Netscape可运行于UNIX、VMS、MAC和Windows平台,Firefox主要运行于Linux和Windows平台,相对IE来说它在安全性能方面更为突出。
目前,主流的浏览器除了提供基本的HTML解析、文档检索、显示与导航等功能外,还支持ActiveX、Java、JavaScript、DOM、XML、CSS以及Ajax等技术。
由于HTML语言自产生以后经历了多次修改,存在着多个版本,且不同的浏览器支持不同版本的HTML,不同的网页编辑软件(如MacromediaDreamweaver和MicrosoftFrontPage)也支持不同版本的HTML,因此这会导致网页的显示效果在不同的浏览器中存在一定的差异。
2.Web服务器 Web服务器运行在网络操作系统平台之上,通常也是网络操作系统的核心服务之
一。
目前,使用最多的Web服务器是Apache和IIS。
Apache是一种开放源码的HTTP服务器,可以在大多数的操作系统中运行。
由于其跨平台和安全特性而被广泛使用,是目前最流行的Web服务器端软件之
一。
它快速、可靠且可通过简单的API扩展,将Perl、Python和PHP等解释器编译到服务器中。
Linux+Apache+MySQL+PHP是一个开发Web应用系统的完美的组合。
IIS(InformationService,互联网信息服务)是微软公司推出的Web服务器。
IIS6.0集成于WindowsServer2003,在安装操作系统时将自动安装。
IIS支持HTTP、FTP(FileTransferProtocol)以及SMTP(SimpleMailTransferProtocol)协议,通过CGI和ISAPI,IIS可以得到高度扩展。
在默认情况下,在WindowsServer2003中的IIS支持CGI、ASP、ASP.NET1.1等应用类型,如果需要在IIS中运行ASP.NET2.0及以上版本等应用,则需要安装相对应版本的.NETFramework。
目前,最新的IIS版本为7.0。
第1章Web应用程序设计基础
7 注意:在WindowsXP也集成了IIS,只不过某些功能受到限制,并且在安装WindowsXP时系统不会自动安装IIS,需要通过添加和删除Windows组件来单独安装IIS。
有关在WindowsXP中安装IIS的操作,请参阅相关书籍或资料。
1.2HTTP、HTML与JavaScript 1.2.1HTTP HTTP(HypertextTransferProtocol,超文本传输协议)是万维网联盟W3C于1990年发布的标准协议,用于Web浏览器与Web服务器之间交互信息通信。
1.URLHTTP协议使用URL(UniformResourceLocator,统一资源定位符)来确定Web浏览器将访问的资源的位置。
URL的格式如下:就是Web服务器的域名地址,/new/china/1001.shtml就是要访问的网页1001.shtml的路径。
2.HTTP的工作机制HTTP协议是用于从Web服务器传输超文本到本地浏览器的传输协议,基于请求/响应模式,如图1-1所示。
开发者把所设计的网页发布到Web服务器。
一个客户机与服务器建立连接后,访问者通过浏览器(如IE、FireFox、NetscapeNavigator等)发出访问请求给Web服务器。
服务器接收到请求后,先解析并响应客户端的请求,再通过HTTP把响应信息(通常为网页)回传给访问者的浏览器,由浏览器最终显示网页。
图1-1HTTP工作机制 8Web应用程序设计实用教程 HTTP请求的基本内容有method、URL、version、headers、message-body等。
其中,method代表HTTP传递参数给服务器的方法是GET还是POST,GET以查询字符串的形式把客户端的参数传递给服务器,查询字符串的长度不能超过1024个字节;POST类似于信件的投递,把客户端的参数封装为消息体传递给服务器。
version代表HTTP协议的版本号,headers是MIME信息,包括请求修饰符、客户机信息等内容。
message-body就是当HTTP以POST方法传递参数时的消息体。
【例1-1】一个HTTP以GET方法发送请求的例子。
GET/Trading/GetProductPrice.aspx?
id=10001HTTP/1.1HOST:localhost 本例表示请求本机中位于虚拟目录Trading下的网页文件GetProductPrice.aspx,同时将参数“id=10001”以查询字符串的形式提交给服务器。
HTTP响应的基本内容与请求的内容相似,主要包括version、status-code、description、headers、message-body等。
其中,status-code代表请求是否成功的状态编码,浏览器可根据该状态编码分析请求失败的原因。
description是对状态编码的描述。
message-body代表服务器回传给浏览器的消息的正文,如果访问请求成功,它就是用户想要浏览的HTML网页的源代码。
【例1-2】一个HTTP响应的例子。
HTTP/1.1200okContent-Type:text/html;charset=uft-8Content-Length:61Productid="10001"Price="1998.50$" 在本例中,“200”是HTTP响应的状态编码;“ok”是该编码的描述信息,表明HTTP请求成功;“text/html;charset=uft-8”表示HTTP响应的消息体为HTML文档,并使用UTF-8编码;“61”表示消息体的长度为61字节。
最后一行就是Web服务回传给客户端的消息体。
值得注意的是,HTTP协议是一种无状态的协议。
这就意味着无论客户端何时发出请求,在客户端接收到服务器返回的响应后,客户端与服务器的连接都将关闭。
因此,如果需要保留客户端与服务器之间交互的任何状态,服务器必须将状态信息与这个响应一同返回给客户端,这样才能使得服务器在下一次客户端请求时从客户端恢复相关的状态信息。
1.2.2HTML
1.HTML标记 HTML(HypertextMarkupLanguage,超文本标记语言)是一种标记语言,用于声明网页文档的结构、网页内容的格式、标识超链接等。
HTML标记最终由浏览器来解释,浏览器一般都具有容错特性,对网页制作人员书写的HTML文档中的语法错误自动忽略,这本身是一件好事,但事实上却造成了HTML语法不严格。
为此,W3C根据XML的思想,在1999年规范了HTML,得到XHTML(eXtensibleHypertextMarkupLanguage)。
在XHTML中,标记有两种形式:单独出现的标记和成对出现的标记。
第1章Web应用程序设计基础
9 单独出现的标记的一般格式为: <元素名称属性1=""属性2=""…/> 例如, 。
大多数的标记都是成对出现的,一般格式为: <元素名称属性1=""属性2=""…>… 元素名称> 例如,新闻。
值得注意的是,HTML标记不区别大小写,不过XHTML规定在书写HTML文档时要么全部使用小写形式,要么全部使用大写形式,最好不要大小写混合书写。
2.HTML文档结构 用HTML编写的超文本文档称为HTML文档,文件扩展名一般为htm或html。
所谓超文本,就是指HTML允许在网页中加入图片、表格、表单、声音、动画、影视素材等内容,事实上,每一个HTML文档都是一种静态的网页文件。
【例1-3】一个简单的HTML文档。
本网页由罗福强设计
本章先介绍Web应用技术的发展情况,再介绍Web应用基础技术(HTTP、HTML和JavaScript),接下来介绍ASP.NET技术的相关知识,包括.NETFramework的概念、ASP.NET的概念、ASP.NET的工作原理,最后介绍VisualStudio.NET2008的操作方法,以及在VisualStudio.NET2008中创建Web应用程序的一般方法等。
1.1Web应用技术的发展概况 1.1.1Web应用的概念 在应用软件领域,如果按照软件的运行模式或安装部署的体系结构来分,往往可将其分为B/S(Browser/Server,浏览器/服务器)和C/S(Client/Server,客户/服务器)两种模式。
其中,在C/S模式下,一般来说应用软件可分为两部分,一部分在服务器运行,一部分在客户端运行,因此,既要在服务器中安装,也要在客户端安装。
C/S模式的优点是:应用程序主要在本机运行,故响应速度快;具有友好的操作界面。
C/S模式的主要缺陷是:要求网络系统高度可靠,如果客户端与服务器之间网络连接不稳定,应用软件将无法正常运行。
C/S模式比较适合局域网环境,解决诸如医院门诊管理之类的问题,以满足因为病人挂号时间非常集中、数据必须高效处理等情况的要求。
在B/S模式下,应用程序在服务器端运行,用户通过浏览器访问服务器。
B/S模式的数据输入通过浏览器实现,数据的显示以网页形式输出,数据的运算、检索与存储等处理操作由服务器端的应用程序完成。
例如,当想要查询公交路线时,首先用浏览器打开“搜狗地图”网站,输入起点和终点等相关数据,之后服务器端的应用程序将根据这个查询条件进行数据检索处理,最后把检索结果以网页形式显示在浏览器窗口中。
B/S模式的主要优点是:客户端无需安装,有Web浏览器即可使用;基于环境,对企业来说能够满足异地办公的需要;特别适合于为公众提供交互式的服务。
正因为如此,网上新闻、电子商务、电子政务、远程教学、远程医疗、博客、在线电影等如雨后春笋般出现。
可见,Web应用就是指在B/S体系结构下的应用软件系统。
2Web应用程序设计实用教程 1.1.2客户端技术的发展 Web应用的雏形由出生于伦敦的TimBerners-Lee设计。
Tim尚在牛津大学学习的时候就试图找出一种能像人脑一样通过神经传递、自主作出反应的程序。
1984年,Tim进入了著名的欧洲粒子研究中心(CERN),负责网络信息共享软件的开发。
经过努力,他成功编制了第一个高效局部存取浏览器Enquire,并把它应用于数据共享浏览,Web技术从此诞生。
经过几十年的发展,如今Web技术分为客户端技术和服务器端技术,其中,客户端技术的发展大概可分为以下几个阶段。
1.HTML诞生 HTML的历史最早可以追溯到20世纪40年代。
1945年,VannevarBush在一篇文章中阐述了文本和文本之间通过超链接相互关联的思想,并在文中给出了一种能实现信息关联的计算机Memex的设计方案。
DougEngelbart等人则在1960年前后,对信息关联技术做了最早的实验。
与此同时,TedNelson将这种信息关联技术正式命名为超文件(HyperText)技术。
1969年,供职于IBM公司的CharlesGolgfarb发明了可用于描述超文本信息的GML(GeneralizeMarkupLanguage,通用标记语言)。
在美国国家标准学会(ANSI)等组织的努力下,GML语言进一步发展为SGML(StandardGML,标准通用标记语言)。
1986年,SGML被国际标准化组织(ISO)发布为国际标准。
1989年,Tim及其同事试图创建一个基于超文本的分布式应用系统,SGML是很好的选择。
但由于SGML过于复杂,不利于信息的传递和解析,因此,Tim对SGML语言进行大刀阔斧的简化,最后成功开发出世界上第一个Web服务器和第一个Web客户机。
同时,Tim把他的发明正式定名为WorldWideWeb(WWW,万维网),并将简化后用于开发Web网页的语言定名为HTML(HypertextMarkupLanguage)。
1991年5月WWW在上首次露面,立即引起轰动,获得了极大的成功,被广泛推广应用。
2.动态HTML的出现 Tim制定的HTML只能在浏览器中展现静态的文本或图像信息,它无法满足人们对信息丰富性和多样性的需求。
这种需求必然导致一种变革,静态Web技术向动态Web技术转变是Web客户端技术发展的必然趋势。
动态概念最早是由GIF提出的。
GIF(GraphicsInterchangeFormat,图像互换格式)是CompuServe公司在1987年开发的图像文件格式。
GIF格式的显著特点有两点:一是采用压缩技术,图像文件的压缩率一般在50%左右;二是在一个GIF文件中可以存多幅彩色图像,把存于一个文件中的多幅图像数据逐幅读出并显示到屏幕上,就构成一种最简单的动画。
因此,GIF第一次为HTML页面引入了动态元素。
但真正的变革来源于1995年Java语言的问世。
Java语言天生具有的平台无关性的特点,让人们一下子找到了在浏览器中开发动态应用的捷径。
1996年,网景(Netscape)公司在其2.0版的NetscapeNavigator浏览器中,增加了对JavaApplet和JavaScript的支持。
紧接着,微软(Microsoft)公司在3.0版的Explorer(IE)浏览器中也引入了Java 第1章Web应用程序设计基础
3 技术,同时微软公司还推出了一种新的脚本语言VBScript。
现在,从事动画、交互操作、客户端应用开发的技术人员都纷纷使用Java或JavaScript语言设计出效果更加丰富多彩的网页。
真正让HTML动感无限的是CSS(CascadingStyleSheets,层叠样式表或级联样式表单)和DHTML(DynamicHTML,动态HTML)技术。
1996年,W3C(WorldWideWebConsortium,万维网联盟)提出了CSS标准。
CSS大大提高了开发人员对信息呈现格式的控制能力,受到了各浏览器提供商的热烈欢迎和支持。
1997年,微软公司发布了IE4.0,并把新技术CSS、JavaScript、VBScript、DOM(DocumentObjectModel,文档对象模型)发展成为一套完整、实用、高效的客户端开发技术体系,被称为DHTML。
JavaScript、VBScript和DOM可以加强页面中的数据处理,CSS实现了页面内容设计与效果设计的分离。
DHTML技术与Java技术的最大区别在于:Java技术依赖Java虚拟机(一种安装在浏览器端计算机中的基础程序)来运行JavaApplet,以实现动态效果;而DHTML无需启动Java虚拟机或其他脚本运行环境,直接在浏览器的支持下即可实现动态效果。
可见,DHTML更为简单,它的出现使Web应用变得多姿多彩。
为了在HTML页面中实现音频、视频等更为复杂的多媒体应用,1996年,网景公司首先在其2.0版的浏览器产品中引入QuickTime插件,与此同时,IE3.0正式支持在HTML网页中插入ActiveX技术,从此,插件技术迅速风靡于浏览器的世界。
值得纪念的是Flash插件的横空出世。
在20世纪90年代初,JonathanGay在FutuerWave公司开发了一种名为FutureSplashAnimator的二维矢量动态展现工具。
1996年,Macromedia公司收购了FutuerWave,并将JonathanGay的发明改名为Flash,从此Flash成为动画制作的标准技术。
1999年,Realplayer插件先后在Netscape和IE游览器中取得成功,而微软公司的MediaPlayer多媒体播放插件被预装到了各种Windows版本之中。
2007年,微软公司又推出了Silverlight技术。
Silverlight是一个跨浏览器和跨平台的插件,为Web带来下一代媒体体验和丰富的交互式应用程序体验。
它包括了许多先进的技术及设计概念,提供灵活的编程模型,支持JavaScript、.NET和其他的语言,并集成到现有的Web应用程序中,具有优化的搜索引擎、向量化的图形引擎,甚至支持3D、图形处理器加速以及H.264视频等。
总之,直到今天,新的动态技术仍然层出不穷。
3.客户端脚本语言的产生 客户端的开发人员除了需要制作HTML网页之外,有时还需要把浏览器的一些功能添加到应用程序中,以增强应用程序的功能。
从1992年起,万维网联盟就免费向开发人员提供libwww开发库。
借助它,开发人员可以编写Web浏览器和Web搜索工具,可以分析、编辑或显示HTML网页。
1999年,微软公司在IE5.0中引入HTML应用程序技术,利用它可直接把HTML页面转换为一个真正的应用程序。
从1997年的IE4.0起,微软公司为开发人员提供了Web浏览器控件和其他相应的组件接口,允许开发人员在自己的程序中直接嵌入浏览器窗口,或者直接调用IE浏览器的各种功能,如分析或编辑HTML页面等。
Windows98及其后的Windows操作系统甚至还利用WSH(WindowsScriptHost)技术把原本只在浏览器中运行的JavaScript、VBScript变成可以在Windows环境下使用的通用脚本语言。
总之,客户端脚本语言的产生让Web应用具有人机交互能力。
4Web应用程序设计实用教程
4.XML的诞生与迅速发展 1996年,供职于Sun公司的JohnBosak在W3C的领导下开始简化SMGL语言。
Bosak删除了SGML中的非核心的、未被使用的和含义模糊的部分之后得到XML(eXtensibleMarkupLanguage,可扩展标记语言)。
XML的最大特点是一方面保证了XML具有SGML的强大功能和可扩展性,另一方面XML又像HTML一样简单。
1998年,W3C正式发布了XML1.0标准,XML与HTML的最大区别在于,XML关心的是信息本身的格式和数据内容,HTML关心的是信息在浏览器窗口中的表现形式。
正因为如此,如今XML成为互联网的数据生成、发布、传输和共享的标准。
它的迅猛发展让Web网页具有信息自我描述的能力。
由于XML没有描述数据的表现形式,为此W3C专门制作了XSL(eXtensibleStylesheetLanguage)标准。
XSL由三个子语言组成:XPath、XSLT、XSL-FO。
其中,XPath专门用来在XML文档中查找信息;XSLT用来转换XML文档结构,如把XML文档转换为HTML文档;XSL-FO(formattingobjects)用来实现格式化输出,类似于CSS在HTML中的作用。
1.1.3服务器端技术的发展 与客户端技术从静态向动态的转变过程类似,Web服务器端的开发技术也是由静态向动态方向逐渐发展、完善起来的。
服务器端技术大体可以划分为以下3个阶段。
1.CGI和ISAPI阶段 最初的Web服务器只能简单地响应浏览器的访问请求并将存储在服务器上的HTML文件返回给浏览器。
一种名为SSI(ServerSideIncludes)的技术可以让Web服务器在返回HTML文件前,更新HTML文档的某些内容,不过其功能非常有限。
第一种真正使服务器根据运行时的具体情况生成HTML页面的技术是CGI(CommonGatewayInterface,公共网关接口)技术。
CGI的标准是由伊利诺斯大学超级计算机应用程序国家中心(NationalCenterforputingApplication,NCSA)提出的,并于1993年制定。
CGI实际上是一种运行于服务器端的特殊程序,其工作原理为:当用户从浏览器提出HTTP请求后,Web服务器激活CGI,然后CGI解析客户端提交的信息,并将信息传给服务器应用程序进行数据库查询,最后CGI将查询结果以HTML的格式返回给浏览器,由浏览器最终显示结果。
CGI的最大特点是允许服务端的应用程序根据客户端的请求,动态生成HTML页面,这就使得客户端和服务器端的动态信息交换成为了可能。
有了CGI技术,聊天室、论坛、电子商务、信息查询、全文检索等各种各样的Web应用蓬勃发展。
早期的CGI程序一般是经过编译后的可执行程序,使用
C、C++、PASCAL等高级程序设计语言设计。
为了简化CGI程序的修改、编译和发布,人们开始使用脚本语言编写CGI程序。
1987年,LarryWall发明了Perl语言,该语言既具有C语言的高效,又具有脚本语言所要求的便捷,非常适用于CGI程序的编写。
1995年,第一个使用Perl语言编写的CGI程序问世,很快Perl语言在CGI编程领域的风头就盖过了C语言。
之后,Python等脚本语言也陆续加入了CGI编程语言的行列。
后来,微软公司又提出了ISAPI(ServerApplicationProgramInterface,互联网服务 第1章Web应用程序设计基础
5 器应用程序接口),它可实现CGI能提供的全部功能,并在CGI的基础上进行了扩展,如提供了过滤器应用程序接口。
实际上,ISAPI就是一种能够被Web服务器IIS(InformationServer)加载和调用的DLL(DynamicLinkLibrary,动态链接库),其工作原理和CGI大体上是相同的,都是通过交互式主页取得用户输入信息,然后交服务器后台处理。
但是二者在实现机制上大相径庭。
ISAPI与CGI最大的区别在于:在ISAPI下建立的应用程序是以动态链接库的形式存在,而CGI的应用程序一般都是可执行程序。
ISAPI应用的工作流程与CGI也有一些不同:ISAPI应用的DLL不仅可以像CGI程序一样被用户请求激活,还可以被系统预先激活来监视用户输入;对于被用户激活的DLL,在处理完一个用户请求后不会马上消失,而是继续驻留在内存中等待处理别的用户输入,直到过了一段时间后一直没有用户输入时才退出内存。
2.PHP、ASP和JSP阶段 CGI和ISAPI的出现是为了解决以前所有技术都不能满足大型网站动态交互的需求,可它们具有天生的不足。
CGI和ISAPI都运行于服务器,当大量用户并发访问网站时,系统资源消耗迅速,稳定性和安全性成为最大的问题。
除此之外,CGI和ISAPI程序编写困难,对用户请求的响应时间较长,以进程方式运行导致性能受限等。
正由于CGI和ISAPI技术的这些缺点,开发人员需要寻找其他的解决方案。
1994年,RasmusLerdorf发明了专用于Web服务端编程的PHP(HypertextProprocessor,超文本预处理器)技术。
PHP的最大特点是它将HTML代码和PHP指令合成为完整的服务器端动态页面,Web应用的开发人员可以更加简便、快捷地实现动态Web功能。
1996年,微软公司的开发人员借鉴了PHP的思想,在微软的Web服务器产品IIS3.0中引入了ASP(ActiveServerPage,活动服务页)技术。
ASP使用JavaScript和VBScript脚本语言,借助MicrosoftVisualStudio等开发工具在市场上获得极大的成功,ASP迅速成为Windows平台下的Web服务器端的主流开发技术。
1997年,Sun公司推出了Servlet技术,作为Java阵营的CGI解决方案,并于1998年推出了JSP技术,允许在HTML页面中嵌入Java脚本代码,从而实现动态网页功能。
至此,Web服务端编程技术进入了三足鼎立阶段。
3.Web2.0阶段 Web2.0是相对Web1.0(2003年以前的互联网模式)的一类新的互联网应用的统称,是一次从核心内容到外部应用的革命。
由Web1.0单纯通过网络浏览器浏览HTML网页模式向内容更丰富、联系性更强、工具性更强的Web2.0互联网模式的发展已经成为互联网新的发展趋势。
Web1.0到Web2.0的转变,标志着用户从原来单纯地读网页到写网页的转变,从坐享网站建设成果到与信息服务商共同建设网站的转变,或者说,由被动地接收互联网信息向主动创造互联网信息迈进。
有人对Web1.0和Web2.0之间的区别作了以下形象的归纳: •Web1.0谈门户,Web2.0谈个人化。
•Web1.0谈内容,Web2.0谈应用。
•Web1.0谈商业模式,Web2.0谈服务。
•Web1.0谈密闭、大而全,Web2.0谈开放、联合。
•Web1.0网站中心化,Web2.0个人中心化。
6Web应用程序设计实用教程 •Web1.0为一对
一,Web2.0为社会性网络。
•Web1.0不知道对方是谁,Web2.0知道对方的来龙去脉。
实际上,Web2.0本身并不是全新的技术,而是将一些好的技术加以整合和发扬后形成的全新的Web应用模式,它是以Flickr、Craigslist、Linkedin、Tribes、Ryze、Friendster、等网站为代表,以Blog、TAG、SNS、RSS、Wiki等应用为核心,依据六度分隔、XML、SOAP、WSDL、Ajax等新理论和技术实现的互联网服务。
若从软件编程的角度来讲,则在Web2.0时代Web应用系统通常使用高级语言(如C#或Java)来开发;若从应用系统之间的相互关系来讲,则在Web2.0时代Web应用系统以XMLWebServices的形式为其他应用系统提供支持。
因此,Web2.0意味着软件发布周期的终结。
1.1.4Web浏览器与服务器的发展
1.Web浏览器 浏览器是一个用于文档检索和显示的客户端应用程序,通过超文本传输协议HTTP与Web服务器通信。
常见的Web浏览器主要有微软开发的Explorer(IE)、Mozilla开发的Firefox和网景公司开发的NetscapeNavigator等。
其中,IE在Windows平台上运行,Netscape可运行于UNIX、VMS、MAC和Windows平台,Firefox主要运行于Linux和Windows平台,相对IE来说它在安全性能方面更为突出。
目前,主流的浏览器除了提供基本的HTML解析、文档检索、显示与导航等功能外,还支持ActiveX、Java、JavaScript、DOM、XML、CSS以及Ajax等技术。
由于HTML语言自产生以后经历了多次修改,存在着多个版本,且不同的浏览器支持不同版本的HTML,不同的网页编辑软件(如MacromediaDreamweaver和MicrosoftFrontPage)也支持不同版本的HTML,因此这会导致网页的显示效果在不同的浏览器中存在一定的差异。
2.Web服务器 Web服务器运行在网络操作系统平台之上,通常也是网络操作系统的核心服务之
一。
目前,使用最多的Web服务器是Apache和IIS。
Apache是一种开放源码的HTTP服务器,可以在大多数的操作系统中运行。
由于其跨平台和安全特性而被广泛使用,是目前最流行的Web服务器端软件之
一。
它快速、可靠且可通过简单的API扩展,将Perl、Python和PHP等解释器编译到服务器中。
Linux+Apache+MySQL+PHP是一个开发Web应用系统的完美的组合。
IIS(InformationService,互联网信息服务)是微软公司推出的Web服务器。
IIS6.0集成于WindowsServer2003,在安装操作系统时将自动安装。
IIS支持HTTP、FTP(FileTransferProtocol)以及SMTP(SimpleMailTransferProtocol)协议,通过CGI和ISAPI,IIS可以得到高度扩展。
在默认情况下,在WindowsServer2003中的IIS支持CGI、ASP、ASP.NET1.1等应用类型,如果需要在IIS中运行ASP.NET2.0及以上版本等应用,则需要安装相对应版本的.NETFramework。
目前,最新的IIS版本为7.0。
第1章Web应用程序设计基础
7 注意:在WindowsXP也集成了IIS,只不过某些功能受到限制,并且在安装WindowsXP时系统不会自动安装IIS,需要通过添加和删除Windows组件来单独安装IIS。
有关在WindowsXP中安装IIS的操作,请参阅相关书籍或资料。
1.2HTTP、HTML与JavaScript 1.2.1HTTP HTTP(HypertextTransferProtocol,超文本传输协议)是万维网联盟W3C于1990年发布的标准协议,用于Web浏览器与Web服务器之间交互信息通信。
1.URLHTTP协议使用URL(UniformResourceLocator,统一资源定位符)来确定Web浏览器将访问的资源的位置。
URL的格式如下:就是Web服务器的域名地址,/new/china/1001.shtml就是要访问的网页1001.shtml的路径。
2.HTTP的工作机制HTTP协议是用于从Web服务器传输超文本到本地浏览器的传输协议,基于请求/响应模式,如图1-1所示。
开发者把所设计的网页发布到Web服务器。
一个客户机与服务器建立连接后,访问者通过浏览器(如IE、FireFox、NetscapeNavigator等)发出访问请求给Web服务器。
服务器接收到请求后,先解析并响应客户端的请求,再通过HTTP把响应信息(通常为网页)回传给访问者的浏览器,由浏览器最终显示网页。
图1-1HTTP工作机制 8Web应用程序设计实用教程 HTTP请求的基本内容有method、URL、version、headers、message-body等。
其中,method代表HTTP传递参数给服务器的方法是GET还是POST,GET以查询字符串的形式把客户端的参数传递给服务器,查询字符串的长度不能超过1024个字节;POST类似于信件的投递,把客户端的参数封装为消息体传递给服务器。
version代表HTTP协议的版本号,headers是MIME信息,包括请求修饰符、客户机信息等内容。
message-body就是当HTTP以POST方法传递参数时的消息体。
【例1-1】一个HTTP以GET方法发送请求的例子。
GET/Trading/GetProductPrice.aspx?
id=10001HTTP/1.1HOST:localhost 本例表示请求本机中位于虚拟目录Trading下的网页文件GetProductPrice.aspx,同时将参数“id=10001”以查询字符串的形式提交给服务器。
HTTP响应的基本内容与请求的内容相似,主要包括version、status-code、description、headers、message-body等。
其中,status-code代表请求是否成功的状态编码,浏览器可根据该状态编码分析请求失败的原因。
description是对状态编码的描述。
message-body代表服务器回传给浏览器的消息的正文,如果访问请求成功,它就是用户想要浏览的HTML网页的源代码。
【例1-2】一个HTTP响应的例子。
HTTP/1.1200okContent-Type:text/html;charset=uft-8Content-Length:61Productid="10001"Price="1998.50$" 在本例中,“200”是HTTP响应的状态编码;“ok”是该编码的描述信息,表明HTTP请求成功;“text/html;charset=uft-8”表示HTTP响应的消息体为HTML文档,并使用UTF-8编码;“61”表示消息体的长度为61字节。
最后一行就是Web服务回传给客户端的消息体。
值得注意的是,HTTP协议是一种无状态的协议。
这就意味着无论客户端何时发出请求,在客户端接收到服务器返回的响应后,客户端与服务器的连接都将关闭。
因此,如果需要保留客户端与服务器之间交互的任何状态,服务器必须将状态信息与这个响应一同返回给客户端,这样才能使得服务器在下一次客户端请求时从客户端恢复相关的状态信息。
1.2.2HTML
1.HTML标记 HTML(HypertextMarkupLanguage,超文本标记语言)是一种标记语言,用于声明网页文档的结构、网页内容的格式、标识超链接等。
HTML标记最终由浏览器来解释,浏览器一般都具有容错特性,对网页制作人员书写的HTML文档中的语法错误自动忽略,这本身是一件好事,但事实上却造成了HTML语法不严格。
为此,W3C根据XML的思想,在1999年规范了HTML,得到XHTML(eXtensibleHypertextMarkupLanguage)。
在XHTML中,标记有两种形式:单独出现的标记和成对出现的标记。
第1章Web应用程序设计基础
9 单独出现的标记的一般格式为: <元素名称属性1=""属性2=""…/> 例如,
大多数的标记都是成对出现的,一般格式为: <元素名称属性1=""属性2=""…>… 元素名称> 例如,
值得注意的是,HTML标记不区别大小写,不过XHTML规定在书写HTML文档时要么全部使用小写形式,要么全部使用大写形式,最好不要大小写混合书写。
2.HTML文档结构 用HTML编写的超文本文档称为HTML文档,文件扩展名一般为htm或html。
所谓超文本,就是指HTML允许在网页中加入图片、表格、表单、声音、动画、影视素材等内容,事实上,每一个HTML文档都是一种静态的网页文件。
【例1-3】一个简单的HTML文档。
这只是一个HTML的测试文档
以下是一个超链接
更多内容……