6 ASP3高级编程 Chia°deo 下载 网[区 国中→回Ⅹ的喝③‖ IISAdmin C: \WINNTISystem32inetsrvlisadmin ault FTP S*e c:program files\common flesisystemymsadc SuTHep c: inetpublscripts C:lnetpub \Mal MalDon C: lWINNTHelp\Mal C:lInetpub\News C: \WINNT\Help\News T MailDocs CilProgr am Files\ Common Files Microsoft share PSERver C: PRogr LPBSData 由bn C: lWINNT1System 32 RpcPToxy PSErver e PBSData 口 images 图口cnf 口sot 白vug 团口vpt vti_ script Distort. asp abcalstart.asp 田西 Administration Web Ste B S Defaut SMTP Virtual Server mmcof amm Bs Default NNTP Virtual Server onostinfo.html 图1-3显示IS的情况 Securty HttP HeA如 Custom Enors. Se Web Ste I Operaton I When connecting to this resource. the content should come l CAthare located on another comouter CAredrecton to a URL Script source acce rectory browsing cabon Settings Application name Delaut Applicaton Starting point <Default Web Sie> ong ecute Permit Scripts only 图1-4 Home Directory选项卡
图1-3 显示I I S的情况 图1-4 Home Directory选项卡 6计计ASP 3 高级编程 下载
第章ASP基础 7 下载 单击 Configuration按钮打开 Application Configuration对话框,见图1-5。在 App Mappings 项卡里,可以看到IS与各类文件采用特定的DLL相链接。任何含有扩展文件名.asp的网页 都送给aspd进行处理;有未映射的扩展文件名的页面,如HTML页面的html和hm及XML 文件的xml,只需从磁盘上载入并直接发送给客户端。 App Mappings App Options[ App DebupoingI v Cache ISAP) applications Applicaton Mappings C:\WINNT\System32 \netsrM'\asp dll GET,HEAD CWINNT\System 32 inetsrvlasp d GET HEAD C WINNT\System 32\netsry \ sm dll CINNT\System32\ebhits dll GETHEA C WINNT\System32\dq dll ETHEAD C:Winnt\sYsTem32netsrV\httpOdbc.dllOptioNs C WINNT\System32udq dll GET HEA printer C \INNT \System 32\msw3prt dll shtm C\wINNT\System\unetsrv\ssnc. dll OPTIONS 上c地」 图1-5应用程序映射情况 读者可能想了解这一选项卡上的其他文件类型。ida、,idc和idq文件扩展名是 IDC模板文件和查询文件所使用的,因此,一个IDC查询页面(idc)将直接送到动态链 接库httpodbc.di进行处理。从文件名也可猜出,它使用ODBC执行SQL语句,返回包 含在页面中的一组数据记录。同样,shtm、 shtml和stm文件扩展名与文件名为 ssnc.d的动态链接库相对应,这些文件类型一般用于请求服务器端包含( server-side include,SsI)处理的文件。我们将在本书的后续部分给出一些相关的实例。 打开 Application Configuration和 Properties对话框时,读者可能很想了解各个设置的功 本书的很多地方都要用到这些对话框和设置,查看这些设置有助于增加感性认识,但不要改 变这些设置,除非知道为什么这样做 1.22处理一个ASP文件 我们知道一个ASP页面提供给ASP动态链接库等待解释和执行,那么接着ASP会做些什么 第一步判断是否有ASP服务器端的代码需要执行。假如没有,它仅是简单地通知ⅡS这种 情况,并让IS向客户端发送页面。事实上, Windows2000的一个新特性允许对所有页面使用
单击C o n f i g u r a t i o n按钮打开Application Configuration对话框,见图1 - 5。在App Mappings 选项卡里,可以看到 I I S与各类文件采用特定的 D L L相链接。任何含有扩展文件名 . a s p的网页 都送给a s p . d l l进行处理;有未映射的扩展文件名的页面,如 H T M L页面的. h t m l和. h t m及X M L 文件的. x m l,只需从磁盘上载入并直接发送给客户端。 图1-5 应用程序映射情况 读者可能想了解这一选项卡上的其他文件类型。 . i d a、. i d c和. i d q文件扩展名是 I D C模板文件和查询文件所使用的,因此,一个 I D C查询页面( . i d c )将直接送到动态链 接库h t t p o d b c . d l l进行处理。从文件名也可猜出,它使用 O D B C执行S Q L语句,返回包 含在页面中的一组数据记录。同样, . s h t m、. s h t m l和. s t m文件扩展名与文件名为 s s i n c . d l l的动态链接库相对应,这些文件类型一般用于请求服务器端包含 ( s e r v e r- s i d e i n c l u d e,S S I )处理的文件。我们将在本书的后续部分给出一些相关的实例。 打开Application Configuration和Pr o p e r t i e s对话框时,读者可能很想了解各个设置的功能。 本书的很多地方都要用到这些对话框和设置,查看这些设置有助于增加感性认识,但不要改 变这些设置,除非知道为什么这样做。 1.2.2 处理一个A S P文件 我们知道一个A S P页面提供给A S P动态链接库等待解释和执行,那么接着 A S P会做些什么 呢? 第一步判断是否有 A S P服务器端的代码需要执行。假如没有,它仅是简单地通知 I I S这种 情况,并让I I S向客户端发送页面。事实上, Windows 2000的一个新特性允许对所有页面使用 第1章 ASP 基 础计计7 下载
8 ASP3高级编程 Chia° ub coM 下载 扩展名asp,包括对那些非服务器端的脚本代码,而不牺牲任何性能 在早先版本的IS和ASP中,所有有asp扩展名的页面,都会被逐行解释,即使它 们含有非ASP服务器端代码。这当然要比IS直接把它们从磁盘发送给客户端要慢很 当ASP从IS接收到包含有服务器端脚本代码的页面时,它会逐行进行解释。那些非服务 器端的脚本,或不需要ASP进行服务器处理的,将被返回给IS,进而发送给客户端。送来的 脚本都会送给相应的脚本引擎,脚本引擎处理后的结果被发送回IIS时,都会插入页面上相应 位置上。 为提高操作的效率,ASP也常把脚本引擎创建的编译代码,放在高速缓存中以备再次调 用。这个代码与发往客户端的输出结果是不相同的。客户看到的是脚本代码在经过解释、语 法检査和编译后的执行结果。在服务器上高速缓存的只是编译后的代码,在原来的源文件变 化后,这些代码会被放弃 1.辨别服务器端脚本段 ASP的解释器能够根据两种分隔方式之一,分辨出代码是否为服务器端脚本 (1)用<%%脚本分隔符 %和%>用以分隔脚本段的最常用字符是 m s text and HTML, that <B>will not</B> be e d is passed to the REM This is server-side script code that will be interpreted and executed by ASP 这个方法也用于在返回页面的其余文本和HTML中需要插入变量值或小段脚本语句的地 <HTML> ntResult 7+6-1 m'seven plus six minus one sult of calculating<= strThesum暑>is<告=cstr( intResult)悬> 这段代码产生如下结果 The result of calculating seven plus six minus one is 12 (2)使用< SCRIPT>元素 当编写在浏览器内执行的脚本时,使用< SCRIPT>元素。当在此元素中包含了 RUNAT属 性并设定其值为“ SERVER”时,该元素也可用在服务器端 <HTML> BODY> This is text and HTML, that <B>will not</B> be executed, and is passed to the SCRIPT RUNAT='SERVER'>
扩展名. a s p,包括对那些非服务器端的脚本代码,而不牺牲任何性能。 在早先版本的I I S和A S P中,所有有. a s p扩展名的页面,都会被逐行解释,即使它 们含有非A S P服务器端代码。这当然要比 I I S直接把它们从磁盘发送给客户端要慢很 多。 当A S P从I I S接收到包含有服务器端脚本代码的页面时,它会逐行进行解释。那些非服务 器端的脚本,或不需要 A S P进行服务器处理的,将被返回给 I I S,进而发送给客户端。送来的 脚本都会送给相应的脚本引擎,脚本引擎处理后的结果被发送回 I I S时,都会插入页面上相应 位置上。 为提高操作的效率, A S P也常把脚本引擎创建的编译代码,放在高速缓存中以备再次调 用。这个代码与发往客户端的输出结果是不相同的。客户看到的是脚本代码在经过解释、语 法检查和编译后的执行结果。在服务器上高速缓存的只是编译后的代码,在原来的源文件变 化后,这些代码会被放弃。 1. 辨别服务器端脚本段 A S P的解释器能够根据两种分隔方式之一,分辨出代码是否为服务器端脚本。 (1) 用<% %>脚本分隔符 < %和% >用以分隔脚本段的最常用字符是: 这个方法也用于在返回页面的其余文本和 H T M L中需要插入变量值或小段脚本语句的地 方: 这段代码产生如下结果: The result of calculating seven plus six minus one is 12 (2) 使用< S C R I P T >元素 当编写在浏览器内执行的脚本时,使用 < S C R I P T >元素。当在此元素中包含了 R U N AT属 性并设定其值为“S E RV E R”时,该元素也可用在服务器端: 8计计ASP 3 高级编程 下载
Chinaopub.com 第章ASP基础 下载 EM This is server-side script code that will be interpreted and executed by ASP BODY 认识到ASP页面可以包含服务器端脚本和客户端脚本是很重要的。客户端的脚本(包含 RUNAT=" CLIENT",或省略 RUNAT属性)不被ASP解释器处理,像带有.htm或htm文件扩展 名的普通HTML页一样直接送给客户端 <BODY> This is text and HTML that <B>will not</B> be executed, and is passed to the lient <SCRIPT RUNAT& SERVER'5 REM This is server-side script code that will be interpreted and executed by ASP <SCRIPTS REM This is client-side script code that will be executed within the client REM browser </SCRIPT> </BODY> HTML> (3)包含单独的脚本文件 ASP页面中能够包含单独的文件,而文件中包含脚本代码,这对编写可用于其他网页的 通用函数是非常方便的。用这种方法,改变这个文件中的脚本代码,则包含这个文件的所有 脚本在执行时都自动做相应的改变。为了包含单独的脚本文件,可使用< SCRIPT>元素的SRC 性,以指定相对的、物理的或虚拟的路径和文件名。 <SCRIPT RUNAT="SERVER SRC='/myscripts/script106 inc></SCRIPT> 这个单独的文件必须仅包含有效的脚本代码,不能包含原有页面内容如文本或HTMI 假如使用这个技术,其他的代码不能放在< SCRIPT>元素内,它必须是空的。如果要为页面增 加其他脚本,需使用另外一个< SCRIPT>元素或者由<%.%>分隔的脚本 也可以包含来自包含脚本、文本或HTML的文件的文本,通过使用服务器端包含 ( Server- Side include,SsI)指令可以实现这一点。在第4章中将研究这个问题, 2.定义脚本语言 ASP有两个脚本引擎: VBScript和 JScript。安装ASP时这两个脚本引擎已缺省安装。也有 由其他应用程序使用的脚本引擎,如微软的 Internet Explorer Web浏览器和 Windows Scripting Host。在 Windows2000中该浏览器的目前版本是5.0,可能还有新的升级版本。还有其他的脚 本引擎,如TCL和 PerlScript(一种 ActiveX脚本解释器而非传统的基于CGI的Per)。 因此必须告诉ASP,ASP页用什么引擎。通常使用的方法是用特定的环境声明元素中定义 引擎,这必须放在文件的第一行,并只能定义一次。这个元素一般用在ASP代码分隔符后面 跟着字符@来表示: <号 LANGUAGE=· language name·8> 这个定义行还可包含其他的定义内容,在本章后面能看到相关内容。定义一个用 SCript编码的页面,如下所示: <暑日 LANGUAGE= VBScript”>
认识到A S P页面可以包含服务器端脚本和客户端脚本是很重要的。客户端的脚本 (包含 R U N AT = " C L I E N T ",或省略R U N AT属性)不被A S P解释器处理,像带有 . h t m或. h t m l文件扩展 名的普通H T M L页一样直接送给客户端: (3) 包含单独的脚本文件 A S P页面中能够包含单独的文件,而文件中包含脚本代码,这对编写可用于其他网页的 通用函数是非常方便的。用这种方法,改变这个文件中的脚本代码,则包含这个文件的所有 脚本在执行时都自动做相应的改变。为了包含单独的脚本文件,可使用 < S C R I P T >元素的S R C 属性,以指定相对的、物理的或虚拟的路径和文件名。 这个单独的文件必须仅包含有效的脚本代码,不能包含原有页面内容如文本或 H T M L。 假如使用这个技术,其他的代码不能放在 < S C R I P T >元素内,它必须是空的。如果要为页面增 加其他脚本,需使用另外一个 < S C R I P T >元素或者由< % . . . % >分隔的脚本。 也可以包含来自包含脚本、文本或 H T M L的文件的文本,通过使用服务器端包含 ( S e r v e r-Side Include,S S I )指令可以实现这一点。在第 4章中将研究这个问题。 2. 定义脚本语言 A S P有两个脚本引擎:V B S c r i p t和J S c r i p t。安装A S P时这两个脚本引擎已缺省安装。也有 由其他应用程序使用的脚本引擎,如微软的 Internet Explorer Web 浏览器和Windows Scripting H o s t。在Windows 2000中该浏览器的目前版本是 5 . 0,可能还有新的升级版本。还有其他的脚 本引擎,如T C L和P e r l S c r i p t (一种A c t i v e X脚本解释器而非传统的基于C G I的P e r l )。 因此必须告诉A S P,A S P页用什么引擎。通常使用的方法是用特定的环境声明元素中定义 引擎,这必须放在文件的第一行,并只能定义一次。这个元素一般用在 A S P代码分隔符后面 跟着字符@来表示: 这个定义行还可包含其他的定义内容,在本章后面能看到相关内容。定义一个用 V B S c r i p t编码的页面,如下所示: 第1章 ASP 基 础计计9 下载
10s:3商级程 Chinapub.com 下载 对于 JScript引擎,使用: 经过上述定义,在<%%段内的页面的所有代码将被送至定义元素所定义的脚本引擎。 对于这种代码分隔方式,这是指定脚本语言的唯一方法 然而,使用< SCRIPT>定义元素,可以单独定义每一段的脚本语言,如果需要的话在同 页面上可使用不止一种脚本语言 <bGLANGUAGE-'VBScript8> BODY> This is text and HTML that <B>will not</B> be executed, and is passed to the <SCRIPT RUNAT="SERVER LANGUAGE="VBScript'> REM This is server-side VBScript code <SCRIPT RUNAT-"SERVER LANGUAGE=JScript'> // This is server-side JScript code / SCRIPT> < SCRI PT RUNAT two Script Bections define script code stored in separate --> hchL群 cluded into the by AsP at runtime - ='SERVER LANGUAGE:"VBScri rips/scr106inc></SCRIPT> <SCRI SERVER LANGUAGE="Scrip pts/scr106. inc'></SCRIPT> REM This is server-side VBScript code because the default language for the page REM is set as VBScript in the declaration element at the start of the page </BODY 不像在客户端,在注释元素内不需要隐藏脚本代码,因为当它执行时,代码将从页面移走, 取而代之的仅是输出结果。在客户端查看ASP页(在浏览器中选择 View Source厨时,只能看到文本 HIML和其他客户端脚本代码。所有的服务器脚本都被执行,只有结果被送到客户端。 缺省的脚本语言 当没有指定ASP页的脚本语言或没有单独的< SCRIPT>元素时,ASP将使用缺省的脚本引 擎。首次安装IS时,缺省的脚本语言是Ⅴ SCript。但对于整个Web站点或者一个站点内的独 立的虚拟应用程序,根据需要可相应改变设置。 在本章前面提到的 Application Configuration对话框中,有一个 App Options选项卡包含了 设置缺省语言的文本框,如图1-6所示 缺省语言也可在IS里通过编辑 Active Directory段的值来改变设置。在 Internet Services Manager mmc插件中所能见到的设置,都存放在 Windows2000中的 Active Directory中,只要 有相应的权限就可以进行读取和编辑。本书将在后面章节详细介绍 Active Directory 除此以外,可根据个人喜好选择脚本语言。假如读者认为一种语言很好,可一直坚持使 用它。因为所有的ASP代码都在服务器端执行而不用担心浏览器的兼容性问题。假如读者精 通Ⅴ SCript和 JScript.或者其他的语言,可根据需要选择最合适的一种。然而因为Ⅴ SCript各个 版本的功能不断扩充(例如 SCript5.0现在支持正规表达式),通常会选择Ⅴ SCript。其对类 型和语法的要求不是很高,并且有更简单的多语句结构,因此是一种容易使用的工具
对于JScript 引擎,使用: 经过上述定义,在 < % . . . % >段内的页面的所有代码将被送至定义元素所定义的脚本引擎。 对于这种代码分隔方式,这是指定脚本语言的唯一方法。 然而,使用< S C R I P T >定义元素,可以单独定义每一段的脚本语言,如果需要的话在同一 页面上可使用不止一种脚本语言: 不像在客户端,在注释元素内不需要隐藏脚本代码,因为当它执行时,代码将从页面移走, 取而代之的仅是输出结果。在客户端查看ASP页(在浏览器中选择View Source)时,只能看到文本、 HTML和其他客户端脚本代码。所有的服务器脚本都被执行,只有结果被送到客户端。 缺省的脚本语言 当没有指定A S P页的脚本语言或没有单独的 < S C R I P T >元素时,A S P将使用缺省的脚本引 擎。首次安装 I I S时,缺省的脚本语言是 V B S c r i p t。但对于整个We b站点或者一个站点内的独 立的虚拟应用程序,根据需要可相应改变设置。 在本章前面提到的Application Configuration对话框中,有一个App Options选项卡包含了 设置缺省语言的文本框,如图 1 - 6所示。 缺省语言也可在 I I S里通过编辑 Active Directory段的值来改变设置。在 Internet Services Manager MMC插件中所能见到的设置,都存放在 Windows 2000中的Active Directory中,只要 有相应的权限就可以进行读取和编辑。本书将在后面章节详细介绍 Active Directory。 除此以外,可根据个人喜好选择脚本语言。假如读者认为一种语言很好,可一直坚持使 用它。因为所有的 A S P代码都在服务器端执行而不用担心浏览器的兼容性问题。假如读者精 通V B S c r i p t和J S c r i p t或者其他的语言,可根据需要选择最合适的一种。然而因为 V B S c r i p t各个 版本的功能不断扩充 (例如VBScript 5.0现在支持正规表达式 ),通常会选择V B S c r i p t。其对类 型和语法的要求不是很高,并且有更简单的多语句结构,因此是一种容易使用的工具。 10计计ASP 3 高级编程 下载