1您的网站是否仍一如既往地保持“静态”?目前呈几何增长的互联网网站中,有相当一部分仍固守“静态”,无形中已大大落后于时代的步伐。所谓“静态”指的就是网站的网页内容“固定不变”,当用户浏览器通过互联网的HTTP(Hypertext Transport Pr otocol)协议向WEB服务器请求提供网页内容时,服务器仅仅是将原已设计好的静态HTML文档传送给用户浏览器。其页面的内容使用的仅仅是标准的HTML代码,最多再加上流行的GIF89A格式的动态图片,比如产生几只小狗小猫跑来跑去的动画效果。若网站维护者要更新网页的内容,就必须手动地来更新其所有的HTML文档。
“静态”网站的致命弱点就是不易维护,为了不断更新网页内容,你必须不断地重复制作HTML文档,随着网站内容和信息量的日益扩增,你就会感到工作量大得出乎想象。
你不禁要问:那么什么是动态网站呢?这就是本文将重点讲述的核心,所谓“动态”,并不是指那几个放在网页上的GIF动态图片,在这里笔者为动态页面的概念制定了以下几条规则:
1、“交互性”即网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这将是今后WEB发展的大事所趋。
2、“自动更新”即无须手动地更新HTML文档,便会自动生成新的页面,可以大大节省工作量。
3、“因时因人而变”,即当不同的时间、不同的人访问同一网址时会产生不同的页面,是不是很酷?
现在你已经对“动态”网站有了一个基本的概念,接下来应挑选称手的“兵刃”了。将网站“动态”化的方法很多,这要看你是出于何种需求。如果你是个人网站的维护者,使用的是免费主页空间,那么绝大多数情况下你只能使用Java、Java Script和最新的DHTML技术,如果你的主页空间提供者能给予你CGI权限或ASP支持,那么你将能非常幸运地发挥真正的动态技术。关于CGI和ASP技术将在后面的着重讨论,这里针对个人网站仅就最新的DHTML技术进行重点介绍。
究竟什么是DHTML?它与传统的HTML有什么不同?DHTML就是当网页从WEB服务器下载后无须再经过服务器的处理,而在浏览器中直接动态地更新网页的内容、排版样式、动画。比如,当鼠标移至文章段落中,段落能够变成蓝色,或者当你点击一个超链后会自动生成一个下拉式的子超链目录。这就是Dynamic HTML(动态HTML),它是近年来网络飞速发展进程中最振奋人心也是最具实用性的创新之一。它是一种通过各种技术的综合发展而得以实现的概念,这些技术包括Java Script , VB0Script, Document Object Model (文件目标模块),Layers和Cascading Style Sheets ( CSS样式表)等。非常遗憾的是在网景Netscape和微软IE浏览器几番大战后,我们仍没有得到一个对DHTML支持的统一标准。因此本文在介绍DHTML时不得不分别讲述。让我们先来看看Microsoft IE 4对DHTML的支持:
1 .动态内容(Dynamic Content):动态地更新网页的内容,可"动态"地随时插入、修改、或删除网页的元件,譬如文字、标记等。
2 .动态排版样式(Dynamic Styles Sheets):通过W3C的“Cascading Style Sheets”(串联式排版样式,简称CSS1或CSS),提供了设定HTML标记的字体大小、字型、粗细、字型样式、行高度、文字颜色、加底线或加中间横线、与边缘距离、靠左右或置中、缩排、背景图片或颜色等排版功能。而“动态排版样式”,可以“动态”地随时地改变排版样式。
3 .动态定位(Dynamic Positioning):通过W 3 C的“Working Draft on Positioning HTML with Cascading Style Sheets”,提供HTML元件在X、Y、Z轴的定位功能,让设计者可以放置影像、控件、文字等在网页上的任何位置上。而放置在不同的Z轴上,设计者就可以产生重叠的效果。
4 .内建资料处理(Data Awareness):无须复杂的程序,无须花费服务器太多资源,即可让网页设计者即时处理文档。
5 .内建多媒体支援:IE 4.0结合CSS与内建的ActiveX Controls,提供多媒体支持的功能,包括转换特效、滤镜特效、路径控制、顺序控制、动画、制图、播放声音和影像等多媒体功能。
让我们再来看看Netscape Communicator 4.0对DHTML所提供的支持:
1 .动态排版样式(Dynamic Styles Sheets):支援W 3 C的“Cascading Style Sheets”(串联式排版样式,简称CSS1或CSS)、和自创的“Java Script Style Sheets”。
2 .Dynamic Layers:提供图文定位、改变图文重叠顺序、控制隐藏或显示图文、移动图文的功能,让您设计出“动画”的效果!
3 .Dynamic Fonts:提供由服务器下载字型的功能。可见虽然IE 4.0和Netscape Communicator 4.0都提供了“Dynamic HTML”的支持,但是事实上两者除了对“Cascading Style Sheets”的规格相近外,其余都相差甚远。因此当你设计DHTML页面时必须充分考虑到兼容性的问题,选择称手的“兵刃”和方法对于设计者来说始终是最重要的。有关DHTML的使用方法和设计技巧作者将在第二章《动态网页设计十八般武艺》中仔细讲解,请密切关注。
或许对于一个个人网站来说充分运用DHTML技术足以令网页栩栩如生,动感十足。然而对于建立商业网站的企业而言,仅仅拥有DHTML是远远不够的。因为仅仅发生在客户浏览器端的动态效果是无法满足商业网站大量信息查询,客户咨询,资源交互等“动态”需求的。因此作为商业网站的设计者,必须要设计出更具实用性和交互性的“动态”网站。由于绝大多数商业网站都具有大量的数据和信息,而建网的初衷也就是在于方便客户查询企业资料,方便同客户的交流,及时获得信息反馈。那么,就必然会面临如何让使用者在浏览器界面中,通过互联网或内联网(Intranet)查询WEB数据库的资料,甚至输入、更新和删除WEB服务器上的资料。下面笔者就简单介绍几种常用的“动态”网站设计方法:
1、CGI(Common Gateway Interface)通用网关接口的传统方式,当用户在浏览器端填好表单(form)要求输入的资料,提出HTTP请求后,WEB服务器端将执行一个表单所设定的可执行的CGI应用程序,CGI程序分析表单(form)中所输入的资料,存取WEB数据库,将查询执行的结果以HTML的格式返回给浏览器。使用CGI方式存取WEB数据库,有很多的缺点,譬如不易开发、变更修改成本高、功能有限、不易侦错、执行速度慢等,而且由于并非整合于HTML文档之中,因此必须使用与HTML完全不同的设计过程来设计一个可执行的应用程序。
2、IDC(Internet Database Connector)互联网数据库连接头是Windows NT Server内含Internet Information Server(简称IIS)2.0的特征之一,它提供了一种使你的互联网数据库内容得以发布并可与用户交互的方法,它实际上是一个包含于IIS中的I S A P I应用程序。你只需掌握HTML和SQL的基本知识并写为数不多的代码就能编出具有交互能力的数据库应用程序,让使用者在浏览器界面中得以查询、输入、更新、和删除WEB服务器上的数据资料。正如VB程序员所喜欢的那样,构成IDC应用程序的文件是解释性的,由于设计简易,只要准备两个档案,即可在用户端的浏览器中存取WEB服务器的数据资料,且无须编译,因此具有快速的开发循环和反馈。但这种简单性的代价是牺牲了许多灵活性,使你不得不放弃许多对用户接口的控制,并几乎放弃了所有验证数据的能力。因而I D C仅适用于简单的WEB应用程序。
3、ActiveX Data Object(ADO)是WEB数据库应用的最佳选择。
ActiveX Data Object(简称ADO)究竟是什么呢?ActiveX Data Object的技术,让您可以与Active Server Pages(简称ASP)结合以建立提供数据资讯的网页内容,只需在网页面中执行Structured Query Language(结构化查询语言,简称SQL)指令,让用户在浏览器界面中输入、更新、和删除WEB服务器上的数据资料。当用户端的浏览器填好表单所要求输入的资料并按下“Submit”按钮后,经过互联网、内联网传送HTTP请求到WEB服务器,该请求在WEB服务器执行一个表单所指定的Active Server Pages程序(后缀名为. ASP的文档)。一个. ASP文档是一个纯文字档,包括:HTML标记(tags)、VBScript或JScript语言的程序代码、ASP语法、和结构化查询语言SQL指令。IIS3.0 / 4.0 WEB服务器执行. ASP文档,通过ODBC驱动程式,连接到支持ODBC的数据库上,执行ASP文档所指定的SQL指令,最后将执行的结果以HTML的格式传送给用户浏览器。ADO具有容易使用、开发执行快速、消耗系统资源较少,和占用磁盘空间小等优点。
以上就是目前设计商业网站常用的“动态”技术,由于本人的工作和使用经验,笔者较倾向于ADO和ASP的结合,从长远来看这对搭档也势必成为今后一段时间内“动态”WEB的核心技术。因此在本文第二章《动态网页设计十八般武艺》中,笔者将就ADO和ASP的使用进行展开讲述,敬请期待。
看了《如何令你的网站“动感十足”》一文后,是否令你怦然心动?是否已经急不可待地想构建属于你自己的动态网站?本文将以 Active Server Pages 为中心,向你全面展示制作动态商业网站的步骤和技巧并通过大量的实例,让你在不断的理论和实践之中笑傲“网络”……
上一章给大家简要介绍了建立动态网站的一些方法和制作工具,本章将以如何建立基于 IIS 的 ASP 动态网站为中心向大家一步一步地揭示动态商业网站设计的真正奥秘。为了使各位能够全面、细致地掌握 ASP 的开发技巧,本文今后将采取连载的形式,手把手地教你如何建立属于自己 ASP 动态网站。由于本文是作者根据自己的学习和实践经验并结合了一些外文资料而写成的,因此不免会有一些偏颇,希望各位见谅。如发现本文有何不当之处,请及时通知作者,谢谢。 Microsoft Active Server Pages 即我们所称的 ASP ,其实是一套微软开发的服务器端脚本环境, ASP 内含于 IIS 3.0 和 4.0 之中 , 通过 ASP 我们可以结合 HTML 网页、 ASP 指令和 ActiveX 元件建立动态、交互且高效的 WEB 服务器应用程序。有了 ASP 你就不必担心客户的浏览器是否能运行你所编写的代码,因为所有的程序都将在服务器端执行,包括所有嵌在普通 HTML 中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。 以下罗列了 Active Server Pages 所独具的一些特点:
1. 使用 VBScript 、 JScript 等简单易懂的脚本语言,结合 HTML 代码,即可快速地完成网站的应用程序。
2. 无须 compile 编译,容易编写,可在服务器端直接执行。
3. 使用普通的文本编辑器,如 Windows 的记事本,即可进行编辑设计。
4. 与浏览器无关 (Browser Independence), 用户端只要使用可执行 HTML 码的浏览器,即可浏览 Active Server Pages 所设计的网页内容。 Active Server Pages 所使用的脚本语言 (VBScript 、 Jscript) 均在 WEB 服务器端执行,用户端的浏览器不需要能够执行这些脚本语言。
5.Active Server Pages 能与任何 ActiveX scripting 语言相容。除了可使用 VBScript 或 JScript 语言来设计外,还通过 plug-in 的方式,使用由第三方所提供的其他脚本语言,譬如 REXX 、 Perl 、 Tcl 等。脚本引擎是处理脚本程序的 COM(Component Object Model) 物件。
6.Active Server Pages 的源程序,不会被传到客户浏览器,因而可以避免所写的源程序被他人剽窃,也提高了程序的安全性。
7. 可使用服务器端的脚本来产生客户端的脚本。
8. 物件导向( Object-oriented )。
9.ActiveX Server Components(ActiveX 服务器元件 ) 具有无限可扩充性。可以使用 Visual Basic 、 Java 、 Visual C++ 、 COBOL 等编程语言来编写你所需要的 ActiveX Server Component 。
ASP 的奇妙之处真是不胜枚举,下面就请各位系好安全带,我将带领大家进入 ASP 的梦幻世界。
首先,让我们来看看运行 ASP 所需的环境:
Microsoft Internet Information Server version 3.0/4.0 on Windows NT Server
Microsoft Peer Web Services Version 3.0 on Windows NT Workstation
Microsoft Personal Web Server on Windows 95/98
正如前文所述,与一般的程序不同, .asp 程序无须编译, ASP 程序的控制部份,是使用 VBScript 、 JScript 等脚本语言来设计的,当执行 ASP 程序时,脚本程序将一整套命令发送给脚本解释器 ( 即脚本引擎 ) ,由脚本解释器进行翻译并将其转换成服务器所能执行的命令。当然,同其他编程语言一样, ASP 程序的编写也遵循一定的规则,如果你想使用你所喜爱的脚本语言编写 ASP 程序,那么你的服务器上必须要有能解释这种脚本语言的脚本解释器。当你安装 ASP 时,系统提供了两种脚本语言: VBsrcipt 和 JScript ,而 VBscript 则被作为系统默认的脚本语言。你也可以根据自己的喜好改变系统默认的脚本语言,关于如何改变系统默认的脚本语言请看《 在 ASP 中使用脚本语言》一文。
ASP 本身并不是一种脚本语言,它只是提供了一种使镶嵌在 HTML 页面中的脚本程序得以运行的环境。但是,要学好 ASP 又必须掌握它的语法和规则。现在就让我们开始一步一步地认识并学习 Active Server Pages 。
ASP 程序其实是以扩展名为 .asp 的纯文本形式存在于 WEB 服务器上的,你可以用任何文本编辑器打开它, ASP 程序中可以包含纯文本、 HTML 标记以及脚本命令。你只需将 .asp 程序放在 WEB 服务器的虚拟目录下(该目录必须要有可执行权限),就可以通过 WWW 的方式访问 ASP 程序了。要学好 ASP 程序的设计,必须掌握脚本的编写,那么究竟什么是脚本呢?其实脚本是由一系列的脚本命令所组成的,如同一般的程序,脚本可以将一个值赋给一个变量,可以命令 WEB 服务器发送一个值到客户浏览器,还可以将一系列命令定义成一个过程。要编写脚本,你必须要熟悉至少一门脚本语言,如 VBScript 。脚本语言是一种介乎于 HTML 和诸如 JAVA 、 Visual Basic 、 C++ 等编程语言之间的一种特殊的语言,尽管它更接近后者,但它却不具有编程语言复杂、严谨的语法和规则。如前所述 ASP 所提供的脚本运行环境可支持多种脚本语言,譬如: JScript 、 REXX 、 PERL 等等,这无疑给 ASP 程序设计者提供了广泛的发挥余地。 ASP 的出现使得广大 WEB 设计者不必在为客户浏览器是否支持而担心,实际上就算你 在同一个 .asp 文件中使用不同的脚本语言,你都无须为此担忧,因为所有的一切都将在服务器端进行,客户浏览器得到的只是一个程序执行的结果,而你也只需在 .asp 中声明使用不同的脚本语言即可。下面是一个典型的在同一 .asp 文件中使用两种脚本语言的例子:
< HTML>
< BODY>
< TABLE>
< % Call Callme %>
< /TABLE>
< % Call ViewDate %>
< /BODY>
< /HTML>
< SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Callme
Response.Write "< TR>< TD>Call< /TD>< TD>Me< /TD>< /TR>"
End Sub
< /SCRIPT>
< SCRIPT LANGUAGE=JScript RUNAT=Server>
function ViewDate()
{
var x
x = new Date()
Response.Write(x.toString())
}
< /SCRIPT>
这是各位在本文中接触的第一个真正的 ASP 程序,千万不要被“ < % %> ”符号搞糊涂,这其实是标准的 ASP 定界符,而“ < SCRIPT>< /SCRIPT> ”之间的就是脚本语言。 ASP 不同于脚本语言,它有自己特定的语法,所有的 ASP 命令都必须包含在 < % 和 %> 之内,如: < % test="English" %> , ASP 通过包含在 < % 和 %> 中的表达式将执行结果输出到客户浏览器 , 如: < % =test %> 就是将前面赋给变量 test 的值 English 发送到客户浏览器中,而当变量 test 的值为 Mathematics 时 , 以下程序:
This weekend we will test < % =test %>.
在客户浏览器中则显示为:
This weekend we will test Mathematics.
学习 ASP 最好的方法莫过于亲自动手编写,为了在最短的时间内使各位掌握 ASP 的程序设计技巧,本文将采取实例分析法,通过一系列的实例让各位在实践中学习 ASP 。建立一个 ASP 页面,你所需的只是打开一个文本编辑器,如: Notepad ,然后跟我开始动手编写第一个 ASP 程序。下面我们将建立一个自动监测浏览时间并根据不同时段动态显示不同页面内容的 ASP 程序,请将以下代码剪贴到你的文本编辑器中 , 并存为 test1.asp :
< html>
< body>
< FONT COLOR="Green">
< % If Time < #12:00:00# And Time >= #00:00:00# Then %>
早上好,今天天气不赖啊 !
< % ElseIf Time < #19:00:00# And Time >= #12:00:00# Then %>
下午好 !
< % Else %>
哈喽 ! 今晚你有没有去 IRC 聊天 !
< % End If %>
< /body>
< /html>
将 test1.asp 保存在 WEB 服务器的虚拟目录 ( 如: aspsamp/) 下,并在浏览器中用 HTTP 的方式进行浏览,如: http://yourcomputername/aspsamp/test1.asp ,你将会新奇地发现,你的页面真的活起来了。虽然,这只是一个非常简单的实例,而且这一功能完全可以通过 JavaScript 完成,但是不难发现使用 ASP 要比 JavaScript 简洁、迅速得多,而且运用此法,你完全可以轻而易举地令你的网页在不同的时段展示不同的风格。此例中的“ Time ”实际上是一个 VBScript 内置的显示系统当前时间的函数,由于系统默认的脚本语言是 VBScript ,因此当你在 ASP 命令中调用该函数时,脚本引擎会自动将其转换成当前的系统时间。接下来我们将给 test1.asp 添加一点色彩,在 < body> 标识中添加“ bgcolor="< % =bgc %> ”即变为 < body bgcolor="< % =bgc %>"> ,并在 < body> 标记前添加如下语句:
< % If Time < #12:00:00# And Time >= #00:00:00# Then
bgc="silver"
ElseIf Time < #19:00:00# And Time >= #12:00:00# Then
bgc="navy"
Else
bgc="red"
End If
%>
如此一来,当用户在不同的时段访问你的页面时,他们将会看到不同的页面背景色。我们可以做的事情还有很多,譬如你想知道在凌晨至十二点之间浏览你页面的客户的姓名,并向他或她问好,那么下面的这段程序将能助你达成心愿。首先你需要在页面中设置表单,将以下 HTML 代码剪贴到“ < % If Time < #12:00:00# And Time >= #00:00:00# Then %> ”之后:
欢迎光临我的主页,请填写以下信息 : < FORM METHOD="POST" ACTION="test1.asp">
< P>
First Name: < INPUT NAME="fname" SIZE="48">
< P>
Last Name: < INPUT NAME="lname" SIZE="48">
< P>
Title: < INPUT NAME="title" TYPE=RADIO VALUE="mr">Mr.
< INPUT NAME="title" TYPE=RADIO VALUE="ms">Ms.
< P>< INPUT TYPE=SUBMIT>< INPUT TYPE=RESET>
< /FORM>
然后在以上 HTML 代码后面添加如下 ASP 命令: < %
title=request.form("title")
if title="mr" then
%>
欢迎您 Mr.< % =request.form("fname") %> 。
< % elseif title="ms" then %>
欢迎您 Ms.< % =request.form("fname") %> 。
< % else %>
< B>< font color=blue> 欢迎您 < % =request.form("fname")&" "&request.form("lname") %> 。 < /font>< /B>
< % end if %>
保存文件 test1.asp ,并在浏览器中以 HTTP 方式进行浏览,如果此时的系统时间在凌晨 0:00:00 和中午 12:00:00 之间的话,浏览器将显示如下画面:
这其实是一个在 Internet 和 Intranet 上常见的功能,即当用户在浏览器端填写完表单后,通过调用一个通用网关程序将用户数据传送到服务器,由服务器进行处理后再将结果返还给客户浏览器。过去为了实现这样的功能必须编写一个独立于 HTML 之外的 CGI 程序,并通过 HTML 进行调用,撇开 CGI 编写复杂等缺点不谈, CGI 的执行效率也是一个大问题,每一个表单 (form) 均须执行一个可执行文档,当多人同时上线使用时,多个文档同时执行,将大大降低 WEB 服务器的执行速度,如今 ASP 提供了与 HTML 完全相融的编程环境,显然要比使用 CGI 便捷得多。
在本期的最后让我们再来看看 ASP 的循环功能,譬如你希望当客户在晚间 7:00 至凌晨 0:00:00 浏览你
的页面时,在页面中央显示 6 个笑脸 表示问候,那么你只需要将以下命令剪贴到“ Good Evening! ”后面即可: < % for i=1 to 6 %>
< p>< center>< img src="smile.gif" width="32" height="32" alt=" 晚上好 ">< /p>
< % next %>
这是一个最最基本的循环语句,它将一个笑脸图片重复调用六次并显示在页面上。当然此例的效果完全可以用 HTML 做到,但是不难发现使用 ASP 大大缩短了代码的重复编写,使得程序具有良好的可阅读性。另外,当你制作一个诸如根据用户投票来给所评测的对象评定星级的评测站点时,使用此法,你就完全不需要为每一个星级制作一幅图片。如果一个对象被评为 4 星级,那只需将一颗星的图片循环显示 4 次,以此类推即可。当然,当工作量较小的时候你不会感觉到 ASP 的好处,然而一旦数据量巨增,你将会深刻的体会到 ASP 动态网站给你带来的前所未有的轻、爽感受 !
本文 ASP 篇 (1) 展示了 ASP 动态网站设计的一些最基本的方法,相信通过实践各位对 ASP 已经有了最基本的了解,本篇在答复大家所提问题的同时,将进一步介绍 ASP 动态网站的一些基本技巧。
自本文第一篇刊登后 , 络绎不绝地收到了一些朋友的来信,出乎作者的意料,其中有相当一部分是初次接触 ASP ,因此有许多朋友都提出为何在浏览器中浏览 ASP 篇 (1) 中的范例时看到的竟然是原代码?由于遇到此问题的朋友较多,故作者在此一并回答。首先,我要再次强调 ASP 是一套服务器端的脚本环境,当用户从浏览器向 Web 服务器请求 .asp 文件时, ASP 脚本开始运行,然后 Web 服务器调用 ASP , ASP 全面读取请求的文件,执行所有脚本命令,并将 Web 页传送给浏览器,这就意味着你不能简单地在现有的操作系统 ( 如 Win95 、 98) 下,用浏览器中的 " 打开 " 命令来浏览 .asp 文件;其次,运行 .asp 文件需要服务器端的支持,目前除了 WindowsNT 下的 Microsoft Internet Information Server 支持 Active Server 技术外, Active Server 还可用于 MS Windows NT Workstation 和 MS Windows 95/98 中的 Personal Web Server 的构件,因此无论你安装的是 NT 还是 WIN95/98 ,都必须在原系统上安装支持 ASP 的服务器端环境,才能使你的机器得以运行 .asp 文件。由于目前绝大多数朋友安装的是 Win95 或是 98 ,因此作者就在这里着重介绍如何在 Win95/98 下运行和浏览 .asp 文件。因为 MSPersonal Web Server 支持通用网关接口 (CGI) 应用程序、 Internet 数据库接口 (IDC) 应用程序和 IIS 应用程序接口 (ISAPI) 应用程序,并且支持运行和开发 ASP 应用程序,所以使得 Win95 及其以后操作平台具备了近似于 NT 的健全的网站运作和管理功能。你所要做的只是在现有的 Win95/98 系统上安装 MS Personal Web Server ,建议安装最新的 4.0 版本。当安装完成后, PWS4.0 会在系统启动时自动加载。打开 PWS ,选择左栏中的 " 高级 " 按钮 ( 见下图 Asp2a.gif) ,点取 " 虚拟目录 " 下的 "/_private" 目录,然后点击右边的 " 编辑属性 " 按钮,如图所示,在对话框中你可以编辑该虚拟目录的物理路径和目录名,上图中 "/_private" 的物理路径为 "D:\Inetpub\wwwroot" ,该目录是系统默认的 WWW 发布根目录,将上一篇中的范例 test1.asp 文件复制到 "D:\Inetpub\wwwroot" 目录下。最后,你只要将该虚拟目录的访问权限选择为 " 执行 " ,并在浏览器的 " 地址 " 栏中输入 "http://localhost/test1.asp" 就可以运行并浏览该 ASP 程序了。
知道了如何运行并浏览 ASP 程序,下面我们就继续 ASP 动态网站设计的学习。
上一篇给大家介绍了几个最基本的 ASP 程序,相信大家已经对 ASP 的应用有了大致的了解,本篇将继续介绍一些用 ASP 编写的 WEB 动态功能。由于 WEB 浏览器标准的不一致从而使得如何能够让自己制作的网站去适应各种不同的浏览器成为了广大网站设计者最为头疼的事,在如今的形势之下,我们不肯也不可能去抛弃 Netscape 或 IE 中的任何一种客户群,但我们有时候又不得不去考虑客户端浏览器的实际浏览效果,过去我们常用 JavaScript 编写一段程序来辨别客户端使用的不同的浏览器,那么今天就让我们来看看如何使用 ASP 更为便捷且精确地达到这一目的。将以下代码,剪贴到你的 Notebook 中,并保存为 browser.asp 。 < %@ LANGUAGE = VBScript %>
< HTML>
< HEAD>
< TITLE>用ASP提供的浏览器性能组件来辨别客户浏览器< /TITLE>
< /HEAD>
< BODY BGCOLOR="White" topmargin="10" leftmargin="10">
< font size="4" face="Arial, Helvetica">
< b>用ASP提供的浏览器性能组件来辨< br>别客户浏览器< /b>< /font>< br>
< hr size="1" color="#000000">
< !-- 定义并创建浏览器性能对象 -->
< %
Dim bc
Set bc = Server.CreateObject("MSWC.BrowserType")
%>
< !-- 在表格中描述客户浏览器的信息 -->
< Table border=1>
< tr>
< td>Browser Name< /td>
< td> < %=bc.Browser %> < /Td>
< tr>
< td>Browser Version< /td>
< td> < %=bc.Version %> < /Td>
< tr>
< td>Major Version< /td>
< td> < %=bc.Majorver %> < /Td>
< tr>
< td>Minor Version< /td>
< td> < %=bc.Minorver %> < /Td>
< tr>
< td>Frame Support< /td>
< td> < %=bc.Frames %> < /Td>
< tr>
< td>Table Support< /td>
< td> < %=bc.Tables %> < /Td>
< tr>
< td>Cookie Support< /td>
< td> < %=bc.Cookies %> < /Td>
< tr>
< td>Background Sound Support< /td>
< td> < %=bc.BackgroundSounds %> < /Td>
< tr>
< td>VBScript Support< /td>
< td> < %=bc.VBScript %> < /Td>
< tr>
< td>JavaScript Support< /td>
< td> < %=bc.JavaScript %> < /Td>
< /table>
< /BODY>
< /HTML>
用 http 方式浏览该文件,根据使用的浏览器的不同,你会看到类似下图 (Asp2b.gif) 的页面。在本例中我们用到了一个 ASP 提供的 ActiveX 组件 --"Browser Capabilities" 。 ActiveX 组件作为基于 Web 的应用程序部分在 Web 服务器上运行,组件提供了应用程序的主要功能 ( 如访问、修改数据库等 ) ,这样 WEB 设计者们就不必创建或重新创建执行这些任务的代码,从而提高了工作的效率,有关 ActiveX 组件将在今后详细讨论。为了使用 ASP 辨别客户浏览器,在这里我们利用 "Browser Capabilities" 组件创建了一个 Browser Type 对象,该对象提供带有客户端网络浏览器功能说明的用户脚本,当浏览器连接到网络服务器上时,它会自动发送一个 UserAgentHTTP 标题,该标题是一个声明浏览器及其版本的 ASCII 字符串。此 Browser Type 对象将该标题和在 Browscap.ini 文件中的项进行比较 (Win98 、 IIS3 、 IIS4 的用户分别可以在以下目录中 "win98\system\inersrv" 、 "\winnt\system32\inetsrv\asp\cmpnts" 、 "\winnt\system32\inetsrv" 找到该文件 ) 。如果找到匹配的项,则该 Browser Type 对象将认为浏览器列表属性与 UserAgent 标题匹配。若该对象在 browscap.ini 文件中找不到与该标题匹配的项,那么将使用默认的浏览器属性。若该对象既未找到匹配项且 browscap.ini 文件中也未指定默认的浏览器设置,则它将每个属性都设为字符串 "UNKNOWN" 。我们可以通过更新 browscap.ini 文件将属性或新的浏览器定义添加到该组件中,从而扩大 ASP 识别的浏览器范围和精确度。下面列出了 browscap.ini 中的一部分内容 ( 不包括注释部分 ) :
[IE 4.0] ;;HTTPUserAgentHeader
browser=IE ;;指定该浏览器的名称。
Version=4.0 ;;指定该浏览器的版本号。
majorver=4 ;;指定主版本号
minorver=0 ;;指定副版本号
frames=TRUE ;;指定该浏览器是否支持框架。
tables=TRUE ;;指定该浏览器是否支持表格。
cookies=TRUE ;;指定该浏览器是否支持cookies。
backgroundsounds=TRUE ;;指定该浏览器是否支持背景音乐。
vbscript=TRUE ;;指定该浏览器是否支持VBScript。
javascript=TRUE ;;指定该浏览器是否支持JScript。
javaapplets=TRUE ;;指定该浏览器是否 支持 Java程序。
ActiveXControls=TRUE ;;指定该浏览器是否支持 ActiveX 控件。
Win16=False ;; 指定该浏览器是否支持Win16
beta=False ;;指定该浏览器是否测试版。
cdf=True ;;指定该浏览器是否 支持用于 Web 预测的 Channel Definition Format。
;;ie 4.01
[Mozilla/4.0 (compatible; MSIE 4.01*; Windows 95)]
parent=IE 4.0 ;;父标签允许第二个浏览器继承第一个浏览器的定义
version=4.01
minorver=01
platform=Win98
;;Default Browser ;;指定默认的浏览器的设置
[Default Browser Capability Settings]
browser=Default
frames=FALSE
tables=TRUE
cookies=FALSE
backgroundsounds=FALSE
vbscript=FALSE
javascript=FALSE
在上面的例子中,父标签允许第二个浏览器继承第一个浏览器的定义,以便 Microsoft Internet Explorer4.01 定义得以继承 Microsoft Internet Explorer4.0 定义全部的属性 ( 例如, frames=TRUE 、 tables=TRUE 以及 cookies=TRUE) 。并通过添加 platform=Win98 行来指定平台,用 version=4.01 重写版本信息。
在先前的 browser.asp 中我们仅仅是将客户浏览器的属性一一罗列了出来,下面让我们添加一些动态的效果。将以下代码剪贴到文件 browser.asp 中( 编辑注 :为显示方便,所有“ < ”符号后都多加了个空格,实际使用时请注意去掉。 ):
< % if (bc.frames = TRUE) then %>
你的浏览器支持框架!< br>
< % else %>
难道现在你还在使用不支持框架的浏览器???< br>
< % end if %>
< % if (bc.tables = TRUE) then %>
你的浏览器支持表格。< br>
< % else %>
难道现在你还在使用不支持表格 的浏览器 ???< br>
< % end if %>
< % if (bc.BackgroundSounds = TRUE) then %>
有没有听到美妙的 音乐???< br>
< % else %>
可惜 , 您的浏览器不支持背 景音乐。< br>
< % end if %>
< % if (bc.vbscript = TRUE) then %>
您的浏览器支持Vbscript。< br>
< % else %>
您的浏览器不支持Vbscript。< br>
< % end if %>
< % if (bc.javascript = TRUE) then %>
您的浏览器支持 Javascript。< br>
< % else %>
您的浏览器不支持 Javascript。< br>
< % end if %>
在你的浏览器中刷新 browser.asp ,程序将自动辨别浏览器的属性并动态显示不同的信息。不难发现在整个 browser.asp 文件中几乎没有用到任何复杂的编程,就轻而易举的达到了动态鉴别客户浏览器并动态产生响应事件的效果。事实上,这个程序的关键就在于前文提到的 ActiveX 组件 --"Browser Capabilities" ,它的作用类似于一个 Function ,只需简单地在程序中调用该组件即能达到你所希望的效果。
通过这两篇对 ASP 的介绍,大家已经看到编写 ASP 程序是相当轻松的,要掌握 ASP ,无非就是掌握 ASP 内置的五个对象,以及 ASP 提供的 ActiveX 组件的对象、方法和属性,当然扎实的脚本语言编写能力也是必须的。在今后的课程中作者将用五到六篇的篇幅着重介绍这些内置对象和组件的作用及使用方法,敬请关注。
通过前两篇的学习,相信各位已经对 ASP 的动态网站设计有了一个基本的概念和整体的印象。从本篇开始作者将从脚本语言的使用着手,由浅入深地带领大家探索 ASP 动态网站设计的真正奥秘。
本文第二篇刊登后,很多朋友给我发了“妹儿”,希望能尽快看到本文的第三、第四、乃至第……篇,甚至有位朋友焦急地要我将 ASP 篇的全文发给他。看到有如此之多志同道合的朋友,令我精神大振。虽然 ASP 早在两年前就已经推出了,但直到今年它才以其灵活便捷的开发过程、良好的 WEB 数据库连接功能受到了国人的重视,然而由于目前国内尚缺乏关于 ASP 开发 WEB 应用程序的详尽教材,因此使得国内广大 WEB 开发者们仍处在闭门啃 E 文的阶段,也包括作者本人。也正因为如此,作者才蒙发了写文章的念头,在得到 Chinabyte 网络学院翁斌先生的大力支持后,各位才得以见到此文。
作者殷切希望能通过此文为广大 WEB 开发者和爱好者提供便利,使大家共同来参加 ASP 的学习和交流,为了顾全不同层次读者的需求作者还是决定从最基本的脚本语言的编制着手,随后再一步一步地讲解 ASP 内建对象、ActiveX 组件以及用 ASP 开发 WEB 应用程序的实例,相信通过一段时间持续的学习,不出几个月各位都能够得心应手地开发自己的动态网站。下面就先请大家跟我来学习一些 ASP 中应用脚本语言(以 VBScript 为主)的基础知识。
在开始学习脚本语言之前,你应该理解一些简单的概念 -- 变量、进程。所谓变量是计算机内存中已命名的存储位置,其中包含了数字或字符串等数据,它使用户便于理解脚本操作的名称,为用户提供了一种存储、检索和操作数据的途径。程序是由一个或多个进程组成的,在 VBScript 中,进程就是“指令块”,通常意义上的进程,如 Sub,只是为了简单的数据处理。
在 VBScript 中,严格的来讲变量是不用声明的,
如:< % Mystring="This is my string" % >
然而,即使在使用变量前不需要去声明变量,也应养成在编程时声明变量的良好习惯,因为这样有助于防止错误发生。声明一个变量意味着告诉脚本引擎,有一个特定名称的变量,这样就可以在脚本中引用该变量。在 VBScript 中声明一个变量可以使用“Dim”语句,如下:
< script language="VBScript" >
< !--
Option Explicit ' 要求在脚本中声明所有的变量
Dim Mystring
Mystring="This is my string"
-- >
< /script>
变量的作用域即生命期,决定哪些脚本命令可访问变量。在过程内部声明的变量具有局部作用域。每执行一次过程,变量就被创建然后消亡。而过程外部的任何命令都不能访问它。在过程外部声明的变量具有全局作用域,其值能被 ASP 页上的任何脚本命令访问和修改。声明变量时,局部变量和全局变量可以有相同的名称。而改变其中一个的值并不会改变另一个的值。如果没有声明变量,则可能不小心会改变一个全局变量的值。例如,以下脚本命令返回值 1,虽然有两个名为 Y 变量:
< %
Dim YY = 1Call SetLocalVariableResponse.Write Y
Sub SetLocalVariable
Dim Y
Y = 2End Sub % >
由于变量没有显式声明,以下的脚本命令将返回 2。当过程调用将 Y 设置为 2 时,脚本引擎认为该过程是要修改全局变量:
<%
Y = 1Call SetLocalVariableResponse.Write Y
Sub SetLocalVariable
Y = 2
End Sub% >
然而,全局变量仅在单个 ASP 页中可用,要使它在单个 ASP 页之外可用,就必须为变量赋予会话或应用程序作用域。会话作用域变量对一个用户所请求的 ASP 应用程序中的所有页都是可用的。应用程序作用域变量也如此。对单个用户来说,会话变量是存储信息的最佳途径,例如,用户首选项、用户名或用户的标识。对于一个特殊应用程序的所有用户,应用程序作用域是存储信息的最佳途径,例如,应用程序特定的问候语或应用程序所需的初始值。ASP 提供两个内建对象来让您存储变量:Session 对象和 Application 对象,这将在今后的 ASP 内建对象中着重讨论。
让我们再来看看常量的定义,常量是用来代替一个数或字符串的名称,它在整个脚本中保持不变。您可以使用 Const 语句在 VBScript 中创建用户自定义常数。使用 Const 语句可以创建名称具有一定含义的字符串型或数值型常数,并给它们赋原义值。例如:。
如:< % Const mystring=" 这是一个常量 " % >
< % Const myage=100 % >
请注意字符串文字包含在两个引号 (" ") 之间。这是区分字符串型常数和数值型常数的最明显的方法。日期文字和时间文字包含在两个井号 (#) 之间。例如:
< % Const CutoffDate = #6-1-97# % >
在理解了常量和变量之后,我们来看看什么是过程。它是一组能执行指定任务且具有返回值的脚本命令。您可以定义自己的过程,然后在脚本中反复调用它们。您可以将过程定义放在调用过程的 .asp 文件中,也可以将通用过程放在一个共享的 .asp 文件中,然后用 SSI #include 指令将其包含进其他调用其过程的 .asp 文件中。您还可选择另一种方法,即把这些功能打包在 ActiveX 组件中。过程定义可出现在 < SCRIPT > 和 < /SCRIPT > 标记内部且必须遵循声明脚本语言的规则。如果过程所用的语言与主脚本语言不同,则要使用 < SCRIPT > 元素。主脚本语言中的过程用脚本分界符 (< % 和 % >) 分隔。用 HTML< SCRIPT > 标记时,必须使用两个属性来保证服务器端能够处理脚本。使用 < SCRIPT > 标记的语法如下:
< SCRIPT RUNAT=SERVER LANGUAGE=JSCRIPT >
procedure definition
< /SCRIPT >
这里的 RUNAT=SERVER 属性通知 Web 服务器在服务器上处理脚本。若不设置该属性,脚本将由客户端浏览器处理。LANGUAGE 属性决定此脚本块所用的脚本语言。您可以指定任何一种具有脚本引擎的语言。请使用 VBSCRIPT 指定 VBScript;用 JSCRIPT 指定 JScript。若不设置 LANGUAGE 属性,将用主脚本语言解释此脚本块。
在 VBScript 中,过程被分为两类:Sub 过程和 Function 过程。Sub 过程是包含在 Sub 和 End Sub 语句之间的一组 VBScript 语句,执行操作但不返回值。Sub 过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果 Sub 过程无任何参数,则 Sub 语句必须包含空括号 ()。
Function 过程是包含在 Function 和 End Function 语句之间的一组 VBScript 语句。Function 过程与 Sub 过程类似,但是 Function 过程可以返回值。Function 过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果 Function 过程无任何参数,则 Function 语句必须包含空括号 ()。Function 过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。Function 返回值的数据类型总是 Variant。在下面的示例中 Sub 过程使用两个固有的(或内置的)VBScript 函数,即 MsgBox 和 InputBox,来提示用户输入信息。然后显示根据这些信息计算的结果。计算由使用 VBScript 创建的 Function 过程完成,Celsius 函数将华氏度换算为摄氏度。Sub 过程 ConvertTemp 调用此函数时,包含参数值的变量被传递给函数。换算结果返回到调用过程并显示在消息框中。
Sub ConvertTemp()
temp = InputBox(" 请输入华氏温度。", 1)
MsgBox " 温度为 " & Celsius(temp) & " 摄氏度。"
End Sub
Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function
给过程传递数据的途径是使用参数。参数被作为要传递给过程的数据的占位符。参数名可以是任何有效的变量名。使用 Sub 语句或 Function 语句创建过程时,过程名之后必须紧跟括号。括号中包含所有参数,参数间用逗号分隔。例如,在下面的示例中,fDegrees 是传递给 Celsius 函数的值的占位符:
Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function
要从过程获取数据,必须使用 Function 过程。请记住,Function 过程可以返回值;Sub 过程不返回值。
以上给大家简要介绍了 VBScript,由于篇幅的原因,作者不可能在此详尽介绍 VBScript 的所有知识。但是由于 ASP 本身并不是一种编程语言,因此在大家编写 ASP 应用程序的过程中,必须借助脚本语言来实现许多特殊的功能,所以灵活熟练地掌握脚本语言对一个使用 ASP 编写 WEB 应用程序的程序员来说是至关重要的。无论您是一个有丰富编程经验的高手还是一个初学者,只要您现在希望通过 ASP 编写 WEB 应用程序,作者极力建议您掌握至少一门脚本语言(如 VBScript)。在本篇的末尾作者将留一道课后作业给大家,希望各位能通过自学有关书籍并在实践中迅速掌握脚本语言。
课后作业:
作者正在用 ASP 制作一套基于 WEB 的 BBS 系统,作者希望能在其中添加一项特殊功能,即当任何用户登陆该 BBS 后都能够查阅近七天来所有新发布的信息。由于 ASP 本身的内建对象和组件并没有提供此项功能,因此作者请大家从 VBScript 着手,来设计这样一个功能。如有任何疑问请 EMAIL 作者,答案将在下一篇公布。敬请关注。
作者:书生
在上一期中作者向诸位简要介绍了 ASP 脚本语言之一 VBScript 的一些基本常识,本期将继续给大家讲解 VBScript 的脚本编写方法,并通过展示 VBScript 在 ASP 程序编写过程中的一系列实例使大家对 VBScript 有更进一层的理解。
大家在学习了脚本语言 VBScript 的变量、常量和过程的基本概念后,本期将继续向各位介绍 VBScript 的函数和语法。
函数和过程一样都是命名了的代码块,但它们却有很大的区别,过程完成程序任务,函数则返回值。我们可以这样理解,过程象一个完整的句子,而函数则象一个单词。举个例子,当你想获取某个数的平方根,你只要将该数传给 VBScript 的 Sqr() 函数,此函数会立即返回该数的平方根。如:
A=sqr(9)
则 A=3。熟练掌握脚本语言的函数将给你编写 ASP 程序带来极大的方便,就以上一期结尾处作者布置给大家的课后练习来说,如果你对脚本语言的函数掌握不够全面,那么解决如此之小的一个问题将很有可能花费你相当大的精力。现在让我们来回顾一下这道课后练习。
“作者正在用 ASP 制作一套基于 WEB 的 BBS 系统,希望能在其中添加一项特殊功能,即当任何用户登陆该 BBS 后都能够查阅近七天来所有新发布的信息。”
如果你不熟悉 VBScrip,就不会知道 VBScrip 本身提供了一个用来取得日期之间的差或和的函数 DateSerial,它的语法如下:
DateSerial(year, month, day)
如果你要指定一个日期,例如:1998 年 11 月 10 日,那么 DateSerial 函数中每个参数的取值范围都应该是可接受的,即日的取值应在 1 和 31 之间,月的取值应在 1 和 12 之间。但是,也可以使用表示某日之前或之后的年、月、日数目的数值表达式为每个参数指定相对日期。以下样例中使用了数值表达式代替绝对日期。在这里,DateSerial 函数返回 1998 年 11 月 10 日之前二十年 (1990-20) 零两个月 (11-2) 又一天 (10-1) 的日期:即 1978 年 9 月 9 日。程序如下:
Datep=DateSerial(1998-20, 11-2,10-1)
对于 year 参数,若取值范围是从 0 到 99,则被解释为 1900 到 1999 年。对于此范围之外的 year 参数,则使用四位数字表示年份(例如 1800 年)。当任何一个参数的取值超出可接受的范围时,则会适当地进位到下一个较大的时间单位。例如,如果指定了 35 天,则这个天数将被解释成一个月加上多出来的日数,多出来的日数取决于其年份和月份。但是如果参数值超出 -32,768 到 32,767 的范围,或者由三个参数指定(无论是直接还是通过表达式指定)的日期超出了可以接受的日期范围,就会发生错误。
当我们了解并掌握了函数 DateSerial 的使用方法后,再来看看作者布置的这道题目,一切就迎刃而解了。下面我将程序中的此部分代码公布如下: itemp=DateSerial(Year(date), month(date), day(date)-7)
itemp=DateValue(itemp)
sql="Select * from message Where message.creatime Between #"&date&"# And #"&itemp&"# "
在这里我们又接触到了一组函数 Year,month,day,它们是用来得到一个日期的年、月、日。date 是常数,表示今天日期,而函数 DateValue 则是将字符串变量转化为日期格式的变量。在本段程序的第三行,我们第一次接触到了标准的 SQL 查询语句,这句语句是什么意思呢?
“Select”是标准的 SQL 数据库查询命令,通过 SELECT 语句我们可以在数据库中检索数据,并将查询结果提供给用户,此处的“*”表示查询该名为“message”的数据库中的所有记录,而“where”的作用是设定一个查询条件,是为了将数据库中符合条件的记录取出来,“message.creatime”是一个储存了数据库中记录创建日期的变量。将整句语句连起来理解就是:查询名为 message 的数据库中的所有记录,并将其中创建日期在今天和今天以前七日以内的所有记录存储在变量 sql 中。可能由于大家第一次接触 SQL 语句,一时间无法完全理解它的作用,不过不用担心在今后的章节中作者将专门用一期给大家介绍 SQL 的使用方法。
通过上面的学习,大家应该已经能够理解函数在程序中的作用,当然我们不必去死背函数,但要做到熟练运用只有一条捷径 -- 多实践。接下来让我们来看看 VBScript 的基本语法。
了解编程语言的朋友一定知道在程序中控制程序流程的语句主要可以分为条件语句和循环语句,在 VBScript 中可使用以下条件语句: If...Then...Else 语句
Select Case 语句
If...Then...Else 语句用于计算条件是否为 True 或 False,并且根据计算结果指定要运行的语句。通常,条件是使用比较运算符对值或变量进行比较的表达式,If...Then...Else 语句可以按照需要进行嵌套。
让我们来创建两个范例文件:if1.asp 和 if2.asp
将以下语句剪贴到记事簿中,并保存为 if1.asp( 注意:请将程序中“<”后的空格去掉 ) < html>
< head>
< TITLE>if1.asp< /TITLE>
< /head>< body bgcolor="#FFFFFF">
< form action="if2.asp" method=get>
Your First Name< INPUT NAME="FirstName" MaxLength=20>< p>
Your Last Name< INPUT NAME="LastName" MaxLength=20>< p>
< INPUT TYPE=submit>< INPUT TYPE=reset>
< /form>
< /body>
< /html>
将以下语句剪贴到记事簿中,并保存为 if2.asp < html>
< head>
< TITLE>ifrespond.asp< /TITLE>
< /head>
< % fname=request.querystring("Firstname")
lname=request.querystring("Lastname")
If fname="George" and lname="Washington" then %>
Hi.You must be the first president!
< % else %>
Hi!Nice to Meet You
< %end if %>
< /body>
< /html>
asp1.asp 产生一个文本输入框,要求用户输入姓、名,如下图:
asp2.asp 则是用 IF 语句判断用户输入的姓名是否为“George Washington”, 并做出相应的反馈。在此我们遇到了一个 ASP 的内建对象 request,通过使用 request 对象可以访问任何用 HTTP 请求传递的信息,包括从 HTML 表格中用 POST 方法或 GET 方法传递的参数、cookie 和用户认证。而 QueryString 集合检索 HTTP 查询字符串中变量的值,HTTP 查询字符串由问号 (?) 后的值指定。如:
http://localhost/if2.asp?Firstname=George&Lastname=Washington
生成值为 "Firstname=George&Lastname=Washington" 的变量名字符串。关于 ASP 对象作者将在今后的几篇里重点讲述。
If...Then...Else 语句的一种变形允许您从多个条件中选择,即添加 ElseIf 子句以扩充 If...Then...Else 语句的功能,使您可以控制基于多种可能的程序流程。
我们将 asp2.asp 的程序部分扩充如下: < %
fname=lcase(request.querystring("Firstname"))
lname=lcase(request.querystring("Lastname"))
If fname="george" and lname="washington" then %>
Hi.You must be the first president!< p>
< % elseIf fname="ronald" and lname="reagan" then %>
Hi.You must be the actor president!< p>
< % elseIf fname="jimmy" and lname="carter" then %>
Hi.You must be the peanut farmer president!< p>
< % elseIf fname="naoko" or fname="charles" then %>
Hi.Your name reminds me of someone,but I am not sure who!< p>
< % else %>
Hi!Nice to Meet You
< % end if %>
可以添加任意多个 ElseIf 子句以提供多种选择。但使用多个 ElseIf 子句经常会使程序变得很累赘。在多个条件中进行选择的更好方法是使用 Select Case 语句。
Select Case 结构提供了 If...Then...ElseIf 结构的一个变通形式,可以从多个语句块中选择执行其中的一个。Select Case 语句提供的功能与 If...Then...Else 语句类似,但是可以使代码更加简练易读。Select Case 结构在其开始处使用一个只计算一次的简单测试表达式。表达式的结果将与结构中每个 Case 的值比较。如果匹配,则执行与该 Case 关联的语句块,我们同样可以用 Select Case 语句来写 asp2.asp 文件:
< %
fname=lcase(request.querystring("Firstname"))
lname=lcase(request.querystring("Lastname"))
name=fname+lname
Select case name
case "georgewashington"
response.write "Hi.You must be the first president!< p>"
case "ronaldreagan"
response.write "Hi.You must be the actor president!< p>"
case "jimmycarter"
response.write "Hi.You must be the peanut farmer president!< p>"
case "naokocharles"
response.write "Hi.Your name reminds me of someone,but I am not sure who!< p>"
case else
response.write "Hi!Nice to Meet You"
End Select %>
请注意 Select Case 结构只计算开始处的一个表达式,并且只计算一次,而 If...Then...ElseIf 结构计算每个 ElseIf 语句的表达式,这些表达式可以各不相同。因此仅当每个 ElseIf 语句计算的表达式都相同时,才可以使用 Select Case 结构代替 If...Then...ElseIf 结构。Select Case 语句也是可以是嵌套的,每一层嵌套的 Select Case 语句必须有与之匹配的 End Select 语句。
以上给大家介绍的脚本语言 VBScript 的函数和条件语句的使用方法,由于篇幅的缘故不能详细展开,希望各位有志学习 ASP 的朋友,能在课后进行一定程度的自学和练习。在日常开发 ASP 应用程序的过程中作者本人日渐体会到了脚本语言的重要性,灵活运用脚本语言将非但可以大大提高 ASP 应用程序的开发过程,给广大网站制作人员节省大量的时间,而且还能够增强 ASP 应用程序的执行效率和功能。欲善其事必先利其器,因此作者在此强烈建议诸君,熟练掌握脚本语言,这将对你的 ASP 程序开发大有帮助。由于本文不是 VBScript 教程,因此只能用较小的篇幅给大家简要介绍一些 VBScript 基本常识,在下一期介绍完 VBScript 的循环语句后,我们将正式开始学习 ASP 的内建对象,要深入 VBScript,建议大家找些教材进行自学。如果你在看完本文后有任何问题请及时 Mail 我,如果你有什么好的建议也请来信告知,谢谢。
作者:书生
评论