1.3 交互式动态网页技术
由于静态HTML网页不能与网站用户进行互动,因此出现了各种提供交互式功能的网页技术。本节将介绍交互式网页的概念,同时说明交互式网页技术领域的主流技术JSP与其他动态网页技术。
1.3.1 动态网页的程序语言
HTML网页只能够提供各种静态的多媒体信息,却不能与联机用户进行数据交换等动态交流。为了让网页根据用户不同的行为作出动态响应,因此产生了内嵌于HTML网页的程序语言,这一类程序语言依解释方式的不同,可以区分为两类:客户端Script语言和服务器端网页语言。下面分别对这两种网页语言进行说明。
1.3.2 在客户端执行的网页语言
在客户端执行的网页语言内嵌在HTML中,而包含这类客户端执行程序的网页扩展名同样是.htm。当浏览器向服务器请求打开网页时,服务器会将整份网页传送至客户端,由浏览器进行网页程序解释操作,并且将结果显示在浏览器窗口中,其过程如图1-5所示。
图1-5 在客户端执行的网页语言
该过程说明如下:
(1)用户通过浏览器指定URL,向网页服务器请求特定的网页内容。
(2)服务器加载指定的HTML网页,返回至客户端的网页浏览器进行解释。
(3)浏览器取得HTML文件,解释其中的HTML及Script网页程序代码。
(4)显示HTML网页。
在客户端执行的网页语言可在网页中产生动态的效果,如各类网页特效,同时也能够在客户端与服务器端之间作数据交换时,先行处理一些事前的准备操作。例如,一般提供会员登录功能的网页,通常都会利用客户端的Script提供输入数据的校验功能,当用户输入不正常的数据(如不合法的身份证信息)时,登录网页的操作将会失败,相关的资料则无法返回至服务器端进行处理。
客户端的Script语言,可以直接在浏览器这一端完成一些工作,而不需要将所有的工作都返回至服务器端,这样可以降低服务器的负担并提高执行的效率,为一些大型网站减轻负担提供了很好的解决方案。
目前可以提供动态网页的Script语言有两种,分别是JavaScript和VBScript。其中,JavaScript最初是由Netscape发展出来的一种Script。用户需特别注意的是,JavaScript是一种独立使用在前端网页的脚本语言,与本书后面内容中所要探讨的结合JSP的Java语言完全没有关系,只是后来Netscape与Sun(Java与JSP的创造者)合作之后,这种网页语言才被改名为JavaScript,尽管在语法上与Java类似,但两者不能混为一谈。
JavaScript内嵌于网页上,与HTML相互混用创造动态的网页效果。目前,普遍使用的浏览器均支持这一种网页语言,它是一种很简单的程序语言,可以很有效地完成一些在客户端进行的网页工作。该网页语言的另一种用途在于提供网页动画效果,用户可以在许多网站看到由JavaScript创建的动态网页。
VBScript是另一种被广泛使用的网页语言,与JavaScript进行同样的客户端操作。这种语言以Visual Basic为基础发展而来,只有微软本身的浏览器支持这种脚本语言。尽管目前用户所使用的浏览器几乎都是微软的IE,但是由于JavaScript已是客户端网页语言的通用标准,同时也具备较强大的功能,因此建议读者还是以JavaScript为主要的学习对象。
Script虽然能够达到与用户互动的目的,但是在功能上却有非常大的限制,其中最大的缺陷在于其无法集成服务器上的资源,如文件操作与数据库存取等。
具备Script的网页只能算是单纯的动态网页,在客户端浏览器进行动态效果,服务器一旦将网页送出,就无法再与其沟通,因此无法达到真正的互动行为。同时,基于安全上的考虑,用户也无法通过客户端Script进行各种服务器的操作,于是服务器端网页语言便被开发出来以解决相关的问题。
1.3.3 在服务器端执行的网页语言
在服务器端执行的网页语言特点为必须由服务器中的解释器来做解释的操作,最后再将解释后的结果以HTML的格式传送至客户端,直接显示在浏览器中。服务器端网页语言的出现,真正实现了让用户通过网络与网站进行沟通的目的,整个服务器端网页的运行过程如下:
(1)用户通过浏览器指定URL,向网页服务器请求特定的网页内容。
(2)服务器加载指定的JSP网页,通过解释器解读其中的JSP程序代码,创建HTML网页,然后返回至客户端的网页浏览器进行解释。
(3)浏览器取得JSP文件,解释其中的HTML及Script网页程序代码。
(4)显示网页。
在上述过程中,用户可以发现,服务器端的网页语言与HTML静态网页最大的差异在于第(2)步,这个部分通过执行JSP程序代码创建HTML网页,因此在不同条件的情况下,网站得以利用同一份JSP网页文件,输出完全不同的网页内容,甚至动态产生Script程序代码,其步骤流程如图1-6所示。
图1-6 在服务器端执行的网页语言
可以用于产生交互式动态网页的技术有好几种,比较著名的有CGI、微软的ASP、新版的ASP.NET和本书所要探讨的主题—— JSP。其中,CGI属于比较早期的服务器端动态技术,目前使用此项技术所构建的网站依然不在少数,然而由于其不易学习和效率不高的特性,在ASP和JSP等技术出现之后,已逐渐淡出用户的视线。
ASP是微软开发的新一代服务器端网页语言,其英文全称为Active Server Pages(动态服务器网页),因其简单易用的优点吸引了不少网站建构技术人员采用,然而由于其功能过于单一,只能使用简单的内置对象,因而尽管结合COM技术得以延伸其结构格局,但程序设计的复杂度也因此增加。
ASP.NET是微软集成.NET平台发展而来的服务器端网页语言,使用.NET提供的类别库与对象导向理论建构的服务器端动态网页,不仅功能强大,紧密结合.NET平台,而且在性能上也有相当出色的表现,近年来已经成为最热门的动态网页技术之一。
JSP是一种以Java为基础的服务器端网页语言,本书对于这一技术将有详细的介绍。
无论何种服务器端的网页技术,都有其学习的价值。而在几种主流技术之中,ASP.NET无疑是JSP最为强大的竞争技术,尤其是近几年ASP.NET因其集成微软.NET平台与强大的对象导向网页开发技术,更将动态网页的发展推向了一个崭新的高度。然而JSP除了集成Java平台,同样具备高性能与功能强大的特色之外,其另外一项优势在于Java具有强大的跨平台能力。
网络本身是一种混杂各种技术平台的开放式环境,无论何种网络平台,JSP几乎都可以在其上不受制约地顺畅运行。虽然已有一些机构致力于将ASP移植到其他非Windows平台,然而在短期内,ASP还只能被限制在Windows的.NET平台上运行。同时,Java语言的成功与强大的功能,使得JSP能够提供比ASP更为广泛的网页功能。