脚本语言介于HTML和Java,C++以及VisualBasic等编程语言之间。HTML通常用于格式化和链结文本。而编程语言通常用于向机器发出一系列复杂的指令。脚本语言介于两者之间但它的函数与编程语言更为相象一些。它与编程语言之间最大的区别是后者的语法和规则更为严格和复杂一些。
在服务器端使用脚本语言,需要在服务器端安装脚本引擎。脚本引擎是用于处理脚本的COM(组件对象模型)对象。ASP为脚本引擎提供主机环境并把.asp文件中的脚本交给脚本引擎处理。对于.asp文件中使用的每种脚本语言,都要将他们相应的脚本引擎安装在Web服务器上。ASP中缺省语言是VBScript,所以你不用担心要去安装VBScript的脚本引擎,当你安装完ActiveServerPages时,他就已存在了。使用JScript也不必有同样的担心。但是要使用一些不太常用的脚本语言的话,可能需要安装相应的脚本引擎。
ASP使Web开发者可以用各种脚本语言编写程序而不用担心浏览器是否支持。实际上,在一个.asp文件中就可以使用多种脚本语言,只要你在每段脚本程序开始处用HTML标签标明所用的脚本语言。
VBScript是缺省的主脚本语言。主脚本语言用在定界符<%和%>之内,你可以在定界符之内使用任何有效的VBScript命令,ASP会按VBScript处理这些命令。其实,你可以将任一种脚本语言设为主脚本语言。你可以不厌其烦的一页一页的设置,也可以将某一种脚本语言设为你的Web服务器上所有页的主脚本语言。如果你想在某一页中将一种脚本语言设为主角本语言,只要在.asp文件开始处加上如下的命令就可以了。
<%@LANGUAGE=ScriptingLanguage%>其中,ScriptingLanguage代表你想设置的主脚本语言。如若你想将某一种脚本语言设为你的Web服务器上所有页的主脚本语言,你就需要动用功能强大的RegisterEditor(注册编辑器,regedit.exe),ASP注册参数的注册路径如下:
HKEY_LOCAL_MACHINE/SYSTEM
/CurrentControlSet
/Services
/W3SVC
/ASP
/Parameters
其中,注册表项DefaultScriptLanguage的缺省值是"VBScript",将其改为欲设置的脚本语言即可。例如,若想将JScript设为主角本语言,则将注册表项DefaultScriptLanguage的值改为"JScript"就行了。在同一个.asp文件中混合使用不同的脚本语言是ASP迷人的特色之一。这样,你就可以发挥各种不同的脚本语言在不同方面的优势。你可以用不同的脚本语言编写不同的脚本程序来完成不同的工作。
脚本程序实际上就是一组执行特定任务的脚本命令。如果你经常要执行某一组特定任务,你就可以将之定义成程序,然后重复调用。程序要按特定的脚本语言的规则写在标签<SCRIPT>和</SCRIPT>之间。当然,如果你用主脚本语言写程序的话,写在定界符<%和%>之间也可以。如果你的程序只在某一页内调用的话,把它放在这一页内就行了,如果你在多页中都要调用某些程序的话,你可以把这些程序放在一个单独的.asp文件中,然后在每个要调用这些程序的.asp页中将那个.asp文件包含进来。
要在.asp页中包含其他文件,使用以下的语法:
<!--#INCLUDEVIRTUAL FILE="filename"-->
其中,filename是你要包含的文件。关键字VIRTUAL和FILE任选其一,VIRTUAL表示要包含的文件在一个虚拟目录内(该目录为Web共享目录),FILE表示要包含的文件在一个当前文件相关目录内。例示如下:假设你有两个Web共享目录Dir1和Dir2,目录Dir1内有文件file11.asp和file12.asp,目录Dir2下有文件file2,若要在文件file11.asp中包含file2.asp,则将如下命令加入到文件file11.asp中:
<!--INCLUDEVIRTUAL="Dir2/file2.asp"-->
若要在file11.asp中包含file12.asp,则将如下命令加入到文件file11.asp中:
<!--INCLUDEFILE="file12.asp"-->
或者使用如下命令亦可:
<!--INCLUDEVIRTUAL="Dir1/file12.asp"-->
程序写好了,怎么调用它哪?如果你用的脚本语言是VBScript,只要一个简单的关键字Call再加上程序名就可以了。如果你要调用的程序有参数,要把参数用括号括起来。如果你省略关键字Call,括号也要省略。下面例示了在同一ASP页中用两种不同的脚本语言(VBScript和JScript)创建和调用程序。
<HTML>
<HEAD>
<TITLE>Usedifferentscriptinsamepage</TITLE>
</HEAD>
<BODYbgcolor="#FFFFFF">
<TABLE>
<%CallEcho%>
</TABLE>
<%CallPrintDate%>
</BODY>
</HTML>
<SCRIPTLANGUAGE=VBScriptRUNAT=Server>
SubEcho
Response.Write_
"<TR><TD>Name</TD><TD>Value</TD></TR>"
SetParams=Request.QueryString
ForEachpinParams
Response.Write"<TR><TD>"&p&"</TD><TD>"&_
Params(p)&"</TD></TR>"
Next
EndSub
</SCRIPT>
<SCRIPTLANGUAGE=JScriptRUNAT=Server>
functionPrintDate()
{
varx
x=newDate()
Response.Write(x.toString())
}
</SCRIPT>
在服务器端使用VBScript时,有两个VBScript的特性不能使用。因为脚本在服务器端执行,VBScript中提供用户界面的InputBox和MsgBox就不支持了。另外,VBScript的函数CreateObject和GetObject也不支持。
因为所有的ASP脚本都在服务器端执行,就不需要象使用客户端脚本时那样为不支持脚本的浏览器用HTML注释标记将脚本隐藏起来。所有的脚本命令都会在将内容送往浏览器之前处理。但你可以在脚本命令之间或程序中使用注释。象Basic一样,在VBScript中有两种形式的注释可用:REM或单引号。如下例所示:
<%
REMThislineandthefollowinglinearecomments
'Printgreetingingreen
greeting="Howareyou!"
<fontcolor="GREEN"><%=greeting%>
%>
在JScript中注释用"//",如下例所示:
<%CallPrintDate%>
<SCRIPTLANGUAGE=JScriptRUNAT=Server>
functionPrintDate()
{
varx
x=newDate()
Response.Write(x.getDate())
}
//ThisisadefinitionfortheprocedurePrintDate.
//Thisprocedurewillsendthecurrentdate
//totheclient-sidebrowser.