⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 210005.htm

📁 探索Windows 2000发展策略以及中介层技术设计的基本概念
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<html><body><span  id=Layer1><a name=210005><font color=#3e70d7 face=arial size=5><b>了解ASP</span><span  id=Layer2></b></font><p><font size=2 color=#3c3c3c face=arial>ASP网页的基本概念并不难理解。如</span><span  id=Layer3>&nbsp;<a href="#10-3" target=_new>图10-3</span><span  id=Layer4></a>&nbsp;所示,一个包含HTML的档案中也可以包含可执行的程式码,通常使用JavaScript或VBScript语言撰写。在前面的例子中,这个程式码将会传送到客户端,然後在浏览器上执行。ASP网页的概念很简单,包含内嵌在HTML档案中的script程式码。然而使用ASP,包含在档案中的程式码是在伺服器上执行,而非在客户端机器上执行的。执行的结果以及包含在档案中的HTML或其它资讯将会传送到客户端,由浏览器负责显示。这个运作的过程如图10-6所示。</span><span  id=Layer5></font></p><p><font size=2 color=#3c3c3c face=arial>一个ASP网页包含了执行在伺服器上的Script程式码</span><span  id=Layer6></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>一个ASP网页包含了执行在伺服器上的Script程式码</span><span  id=Layer7></font></p><hr><p><font size=2 color=#3c3c3c face=arial>就这个例子的启发,ASP的功能可分为两个不同的部份。其一是真正读取并解译网页上script程式码的scripting引擎,其二为一个标准的ISAPI 扩充程式,称为asp.dll,它真正实作了核心的ASP函数。欲载入哪一个scripting引擎视网页包含的开发语言而定。图10-6中的script使用预设的ASP语言、VBScript,因此载入的便是VBScript scripting引擎。本章其馀的部份并不会将scripting引擎显示在图表中,不过它是永远存在的。</span><span  id=Layer8></font></p><p><font size=2 color=#3c3c3c face=arial>一个ASP网页上的程式码是由Scripting引擎解译的</span><span  id=Layer9></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>一个ASP网页上的程式码是由Scripting引擎解译的</span><span  id=Layer10></font></p><hr><br><center><a target=_new href=imagesh/10-6.gif><img border=0 src='imagesl/10-6.gif'></a></center></span><span  id=Layer11><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b>&nbsp;图10-6</span><span  id=Layer12>&nbsp;</b></font>一个参考到ASP网页的要求,将导致IIS执行这个档案中的script,然後将结果传送到客户端。</span><span  id=Layer13></td></table></font></center><p><font size=2 color=#3c3c3c face=arial>值得一提的是图10-6的ASP网页范例是个过於不切实际的简单范例。事实上这个范例输出的结果与前一张图的范例一样。在实际的应用程式中,没有人会建立这麽简单的网页。然而在此的目的是尽量让ASP运作的基本机制更为清楚,因此才会有这样简单的script范例出现。</span><span  id=Layer14></font></p><p><font size=2 color=#3c3c3c face=arial>ASP档案中可以包含HTML标注、一般的文字、或某些语言的script叙述句。有被虐狂的人可以选择一般的文字编辑器来建立一个ASP网页,如使用记事本(Windows Notepad)。不想在痛苦中生存的人可以使用内建支援ASP script撰写能力的工具,如Microsoft Visual InterDev。不管如何完成这个网页,伺服器机器都需具备用来撰写script叙述的语言之script引擎。Windows 2000包含VBScript与Microsoft Jscript (Microsoft实作的JavaScript) 的script引擎,以及其它第叁协力厂商开发的语言之script引擎。虽然ASP是语言中立的,但VBScript却是ASP开发者最不常用的选择。</span><span  id=Layer15></font></p><p><font size=2 color=#3c3c3c face=arial>大部份的ASP开发者通常使用VBScript</span><span  id=Layer16></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>大部份的ASP开发者通常使用VBScript</span><span  id=Layer17></font></p><hr><p><font size=2 color=#3c3c3c face=arial>虽然它们是很简单的语言,VBScript与JScript允许ASP开发者以类似的方式撰写程式:使用变数、条件式判断、回圈以及副程式。本章并未尝试教授任一种语言,不过放心,撰写ASP网页和撰写其它类型的程式没有什麽不同。不管使用何种语言撰写script,script不过是包装在HTML中的程式码,储存在某些档案中。因此当HTML中包含程式码时,也就是说包含ASP script,就必须要有某种方法告诉IIS该执行这些程式码。为了达到这个目的,伺服器机器上包含ASP Script的任何档案其名称都需以 .asp结束。一开始若副档名为 .asp的档案中只包含HTML档案,这是个很差的主意(也就是说没有包含任何伺服端的script程式码),因为处理这种档案所花费的时间比副档名为 .htm的还要长很多。然而在Windows 2000中,这个事实再也不能成立了。因此 .asp档案可用在不含ASP script的程式码档案中。</span><span  id=Layer18></font></p><p><font size=2 color=#3c3c3c face=arial>包含ASP网页的档案名称,都拥有 .ASP的副档名</span><span  id=Layer19></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>包含ASP网页的档案名称,都拥有 .ASP的副档名</span><span  id=Layer20></font></p><hr><p><font size=2 color=#3c3c3c face=arial>在ASP网页的HTML中,伺服端scripting指令通常都是以「&lt;%」与「%>」符号包围起来。这些指令必须存在於所谓的主要scripting语言,预设为VBScript。也有可能将script程式码以&lt;SCRIPT>与&lt;/SCRIPT>标注包围起来。若你要在预设使用VBScript的ASP网页中包含一段JScript,举例来说,你可以以&lt;SCRIPT LANGUAGE=JScript RUNAT=SERVER>与&lt;/SCRIPT>标注将程式码包围起来。因为&lt;SCRIPT>标注也可以用来包装客户端的script,因此在这个情况下还需使用RUNAT关键字,以便允许IIS辨识传送到客户端浏览器并执行的script为哪一种。</span><span  id=Layer21></font></p><p><font size=2 color=#3c3c3c face=arial>执行在伺服器上的程式码必需使用特殊的符号包围起来</span><span  id=Layer22></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>执行在伺服器上的程式码必需使用特殊的符号包围起来</span><span  id=Layer23></font></p><hr><p><font size=2 color=#3c3c3c face=arial>不管使用的script为何,一个ASP网页中也可以包含和语言无关 (language-independent)的指令。其中一种指令称为处理指令,格式为&lt;%@keyword=value %>。端赖写在关键字 (keyword) 部份的指令,每一个指令指示ASP解译器完成一个特定的工作。而&lt;%@ LANGUAGE=JScript %>可用来设定网页预设的script语言为JScript。举例来说,TRANSACTION关键字可设定网页的交易性需求。(ASP如何使用交易的动作将在本章稍後部份详述)。</span><span  id=Layer24></font></p><p><font size=2 color=#3c3c3c face=arial>ASP网页可以包含指令</span><span  id=Layer25></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>ASP网页可以包含指令</span><span  id=Layer26></font></p><hr><font color=#3e72d7 face=arial size=4><b>ASP应用程式</span><span  id=Layer27></b></font><p><font size=2 color=#3c3c3c face=arial>一个ASP应用程式是由一群ASP档案组成,储存在档案系统一个单独的目录中。网站管理员或应用程式设计者可以使用 IIS嵌入式管理单元指定一个目录做为一个应用程式的根目录,而所有的 .asp档案便储存在这个目录中,而此目录之下的子目录都视为这个ASP应用程式的一部份。这个目录可能(或不可能)会被指定一个虚拟目录名称,任一种选择都是可被允许的。</span><span  id=Layer28></font></p><p><font size=2 color=#3c3c3c face=arial>一组ASP网页可以组态为一个ASP应用程式</span><span  id=Layer29></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>一组ASP网页可以组态为一个ASP应用程式</span><span  id=Layer30></font></p><hr><p><font size=2 color=#3c3c3c face=arial>不要将一个ASP应用程式与一个COM+应用程式搞混了,它们是不同的概念。</span><span  id=Layer31></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b> 附注</b></font><p><font size=2 color=#3c3c3c face=arial>不要将一个ASP应用程式与一个COM+应用程式搞混了,它们是不同的概念。</span><span  id=Layer32></font></p><hr><p><font size=2 color=#3c3c3c face=arial>举例来说,假设QwickBank提出一个退休计算服务,让Web客户估计需储备多少退休金才能避免一辈子都在工作,另一个方案是提供一个方法让顾客管理他们的银行帐户。假设上面两种服务都透过ASP网页来提供。图10-7显示这些档案在硬碟中储存的位置。实作的退休计算服务的rc1.asp与rc2.asp 这两个ASP网页储存在retirecalc目录之下,同时设定成一个单独的ASP应用程式。am1.asp、am2.asp、am3.asp这叁个ASP网页实作了帐户管理的应用程式,储存在acctmgmt子目录中,同时也设定成第二个应用程式。</span><span  id=Layer33></font></p><br><center><a target=_new href=imagesh/10-7.gif><img border=0 src='imagesl/10-7.gif'></a></center></span><span  id=Layer34><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b>&nbsp;图10-7</span><span  id=Layer35>&nbsp;</b></font>组成一个特殊ASP应用程式的许多ASP网页都是储存在伺服器机器的档案系统中特定的目录之下。</span><span  id=Layer36></td></table></font></center><p><font size=2 color=#3c3c3c face=arial>若ASP应用程式的根目录没有包含任何的子目录(如图10-7中两个应用程式的情况所示),而根目录只包含图中的档案。不过若根目录中包含子目录,则这个ASP应用程式同样也包含所有子目录中的全部档案。不过有一个例外情况:若根目录中的某个子目录也被设定成一个ASP应用程式的根目录,则此目录其下的档案自然形成一个应用程式,再也不属於此目录阶层中上层目录的一部份。</span><span  id=Layer37></font></p><p><font size=2 color=#3c3c3c face=arial>特定ASP应用程式下的所有档案都必需存在於一个公用根目录之下</span><span  id=Layer38></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>特定ASP应用程式下的所有档案都必需存在於一个公用根目录之下</span><span  id=Layer39></font></p><hr><p><font size=2 color=#3c3c3c face=arial>在一个单独应用程式(更精确的说,是指用来解译这些网页的scripting引擎)中的ASP网页与网页中使用的任何COM元件都会以不同的方式载入行程中执行。其中一种可能是,它们全部会执行在IIS的行程中,这也就是说在Web伺服器自己的行程中执行。这样将可达到最佳的执行效能,不过也是个相当冒险的方法,元件中的某些臭虫可能会使Web伺服器当机。另一种选择便是将ASP应用程式执行在另一个行程,或乾脆将ASP网页与COM元件分开,在不同的行程中执行它们。这是一种安全的作法,因为应用程式中的错误并不会影响到Web伺服器本身。同样它执行时很慢,因为客户端发出的每个要求都必需从主要的IIS行程传递到另一个行程,再回传之。程式设计师可依照应用程式的执行效能与可靠性需求选择任一种方式。</span><span  id=Layer40></font></p><p><font size=2 color=#3c3c3c face=arial>ASP网页与COM元件可以以很多不同的方式分组成多个行程</span><span  id=Layer41></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>ASP网页与COM元件可以以很多不同的方式分组成多个行程</span><span  id=Layer42></font></p><hr><p><font size=2 color=#3c3c3c face=arial>在图10-7中,c:\inetpub\applications\acctmgmt目录中包含一个档案,名称为global.asa。任何ASP应用程式的根目录中都可以拥有一个这样名称的档案。(虽然这不是必须的,注意图10-7的其它ASP应用程式中并没有包含global.asa档案。)如果这个档案目前包含script程式码,当不同的事件发生时便执行这些程式。举例来说,有时当一个ASP应用程式初次执行,或关闭时可用来执行一些动作。(定义上,一个ASP应用程式开始於任一个客户端存取到此应用程式的任一个网页,而结束於IIS本身关闭时。) 举例来说,当应用程式启动,建立一个共享的COM物件,或是在应用程式结束时,删除一个暂存的目录可能是很有用的。为了达到这个目的,应用程式中的globas.asa档案内就可以包含script,当应用程式的OnStart事件与OnEnd触发时便执行这些script。就名称所暗示,这些事件发生在ASP应用程式开始与结束,因此关联到它们的script叙述只会在应用程式的生命周期中分别执行一次。</span><span  id=Layer43></font></p><p><font size=2 color=#3c3c3c face=arial>一个Glogal.asa档案可以包含在一个应用程式初始化与结束时的程式码</span><span  id=Layer44></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>一个Glogal.asa档案可以包含在一个应用程式初始化与结束时的程式码</span><span  id=Layer45></font></p><hr><p><font size=2 color=#3c3c3c face=arial>对於某些应用程式来说,在每个session的开始与(或者)结束执行一些标准的script也是很有帮助的。为了达到这个目的,应用程式的global.asa档案也可以包含在两个事件发生时执行的script,即Session OnStart与Session OnEnd事件。Session OnStart事件发生在一个新session开始时,而关联到这个事件的script (如果有的话),便在使用者所要求的网页执行之前先执行。ASP应用程式中Session的结束点将在本节稍後部份讨论。不过不管何时触发Session OnEnd事件,时机到了总是会发生的。关联到Session OnEnd事件的script便根据session的结果撰写一笔记录到日志中,或是执行一些清除的善後工作。</span><span  id=Layer46></font></p><p><font size=2 color=#3c3c3c face=arial>一个Glogal asa档案可以包含可以一个Session初始化与结束时的程式码</span><span  id=Layer47></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>一个Glogal asa档案可以包含可以一个Session初始化与结束时的程式码</span><span  id=Layer48></font></p><hr><font color=#3e72d7 face=arial size=4><b>ASP内建的物件</span><span  id=Layer49></b></font><p><font size=2 color=#3c3c3c face=arial>ASP扩充程式内建就实作了许多不同的COM类别。每个类别提供一组特殊的method与属性,从每个类别衍生的物件便可以让ASP网页使用。ASP网页中的程式码使用类别之前并不需要先建立类别的实例(instance)。而是在需要时由ASP扩充程式自动地建立这些物件。如图10-8所示,ASP网页可以使用的物件包含:Request、Response、Server、Application、Session、ASPError,与ObjectContext (如图所示,它是由COM执行时期程式库所提供的。)每个物件的使用方法将描述於下文。</span><span  id=Layer50></font></p><p><font size=2 color=#3c3c3c face=arial>ASP网页也可以其它方式建立COM物件</span><span  id=Layer51></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>ASP网页也可以其它方式建立COM物件</span><span  id=Layer52></font></p><hr><br><center><a target=_new href=imagesh/10-8.gif><img border=0 src='imagesl/10-8.gif'></a></center></span><span  id=Layer53><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b>&nbsp;图10-8</span><span  id=Layer54>&nbsp;</b></font>ASP扩充程式提供许多内建的物件让ASP网页使用。</span><span  id=Layer55></td></table></font></center><p><font size=2 color=#3c3c3c face=arial><font size=2 face=arial color=#3e80d7><b>&nbsp;Request</span><span  id=Layer56>&nbsp;</b></font>回顾一下ASP网页回应客户端的要求而执行,使用者通常是透过浏览器来发出这项要求。一旦ASP网页执行了,便可以使用Request物件学习与客户端相关的资讯,并得知透过客户端的要求所传送的资讯。常见的情况是,IIS传送一个包含一个或多个FORM标注的HTML网页到浏览器。通常FORM标注用来让使用者输入欲传送到伺服器的资讯,如名称、欲搜寻的字串,或信用卡号码。一个包含一个或多FORM标注的网页,也可能包含用来验证使用者输入的资讯之客户端script。这些script可能用来验证电话号码栏位中只能包含数字,或密码设定时最少要达到指定的长度。</span><span  id=Layer57></font></p><p><font size=2 color=#3c3c3c face=arial>Request物件能让ASP网页得知客户端的要求</span><span  id=Layer58></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>Request物件能让ASP网页得知客户端的要求</span><span  id=Layer59></font></p><hr><p><font size=2 color=#3c3c3c face=arial>不管客户端script是否用来进行验证的动作,每个FORM标注都可以包含一个ACTION属性指明当使用者提交这个表单时,该执行的网页名称。其中一种可能便是让这个属性参考到一个ASP网页,因此当使用者提交这个表单时,适当的ASP网页便会执行。若将表单传送到IIS时使用HTTP GET method,则使用者输入在表单的资讯就会跟随在URL之後,并以「?」号分开。一旦ASP网页开始执行,网页中的script程式码便可以存取Request物件,这个物件中将会包含表单的资讯、随要求而来的cookie(若存在的话),等等。</span><span  id=Layer60></font></p><p><font size=2 color=#3c3c3c face=arial>透过Request物件可取得的资讯包含:</span><span  id=Layer61></font></p><font size=2 color=#3c3c3c face=arial><ul><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Query String</span><span  id=Layer62>&nbsp;</b></font>出现在浏览器传送过来的URL「?」号之後的文字。就如先前所描述的一样,使用者使用FORM标注输入的资讯将会出现在此。</span><span  id=Layer63></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Client certificate</span><span  id=Layer64>&nbsp;</b></font>若存在的话。虽然让客户端传送certificate是目前很平常的作法,不过这也会随时间而转变,由其是smart card变得愈来愈受欢迎了。然而,若传送了client certificate,ASP网页便可以存取Request物件来取得certificate更详细的内容,以便能更聪明地决定授权的动作。</span><span  id=Layer65></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Cookie</span><span  id=Layer66>&nbsp;</b></font>包含随着要求而来的cookie之内含值。ASP扩充程式自动提供session管理,因此ASP开发者并不需要自行操作cookie</span><span  id=Layer67></li><br></font><br><font size=2 color=#3c3c3c  face=arial>以达到管理的目的。若cookie包含应用程式专属的资讯,如使用者的名称,则ASP网页可能会进行内容的检查。</span><span  id=Layer68></font><font size=2 face=arial color=#3c3c3c><li>各种环境变数,IIS与ASP扩充程式在每个要求发生时会自动设定环境变数。这些资讯包含取回的MIME类型资讯,描述发出要求的浏览器资讯、这个要求是否使用SSL、发出要求的客户端IP位址...等等。</span><span  id=Layer69></li><br></font></ul></font><p><font size=2 color=#3c3c3c face=arial><font size=2 face=arial color=#3e80d7><b>&nbsp;Response</span><span  id=Layer70>&nbsp;</b></font>Response物件允许ASP网页控制欲回传的浏览器的资讯。除ASP档案中的伺服端script之外的所有东西,如HTML标注、客户端script,与一般的文字等都不会经过任何转换直接传送到浏览器。若你希望在ASP网页中新增一些东西到欲显示的HTML (这是ASP存在的理由),你便可以使用Response物件。这个物件提供的method包含:</span><span  id=Layer71></font></p><font size=2 color=#3c3c3c face=arial><ul><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Write</span><span  id=Layer72>&nbsp;</b></font>允许script将字串,或变数的值新增成一个资讯的串流,然後再传送回浏览器。图10-6展示的这个简单的script便使用此method将两个HTML标注与「Hello」这个字传送给使用者。</span><span  id=Layer73></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Redirect</span><span  id=Layer74>&nbsp;</b></font>自动将客户端引导到其它的网页。这个method一般都应用在目标的网页存在於其它机器上时。然而,若客户端欲导向的网页存在同一台机器上,则这个方式将会比使用Server物件的Transfer method更有效率。稍後再讨论。</span><span  id=Layer75></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Flush</span><span  id=Layer76>&nbsp;</b></font>马上将缓冲区欲输出的资料传送出去。若开启缓冲功能,则在任何的结果传送至客户端之前,会先进行整个ASP网页的处理过程,这些结果会放在缓冲区,直到处理的过程结束为止。若关闭缓冲功能,则一产生结果便传送出去,不等待整个网页处理结束。IIS 5.0预设将缓冲的功能开启,与先前的版本不同。</span><span  id=Layer77></li><br></font></ul></font><p><font size=2 color=#3c3c3c face=arial>Response物件允许一个ASP网页传送一个回应到客户端</span><span  id=Layer78></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>Response物件允许一个ASP网页传送一个回应到客户端</span><span  id=Layer79></font></p><hr><p><font size=2 color=#3c3c3c face=arial>Response物件同样显露许多的属性。在这些属性指定的值会影响到传送至使用者的内容。这些属性包含:</span><span  id=Layer80></font></p><font size=2 color=#3c3c3c face=arial><ul><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;ContentType</span><span  id=Layer81>&nbsp;</b></font>允许设定传送MIME类型的资讯。</span><span  id=Layer82></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Buffer</span><span  id=Layer83>&nbsp;</b></font>允许开启或关闭缓冲的功能。</span><span  id=Layer84></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;CacheControl</span><span  id=Layer85>&nbsp;</b></font>控制ASP网页的内容是否可以暂存在proxy server。Proxy server介於Web伺服器与浏览器之间,可能会将经常存取的网页储存起来。因为这个复本可以快取在proxy server上,然後满足未来浏览器发出的要求无庸再次打扰Web伺服器,如此将可大幅加快存取静态网页的速度。但是对於动态即时网页(如典型的ASP)而言,将网页放入快取与重复使用这个复本将会造成问题。预设并不允许快取的机制,不过可透过这个属性更改。</span><span  id=Layer86></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Expires</span><span  id=Layer87>&nbsp;</b></font>假设ASP网页产生的结果可以储存的话,此属性可用来控制ASP网页放在浏览器快取中时间的长短。</span><span  id=Layer88></li><br></font></ul></font><p><font size=2 color=#3c3c3c face=arial>Response物件同样包含一个资讯的集合,称cookie。若使用cookie,则ASP应用程式便可以设定特定的cookie值,然後回传到客户端,再设定这些cookie的有效期限。</span><span  id=Layer89></font></p><p><font size=2 color=#3c3c3c face=arial>因为呼叫Response.Write的动作常发生,因此便有了缩写。不必明确呼叫write,ASP网页中可以包含此型式的指令&lt;%= expression %>,它们代表的意义是相同的。举例来说,下面的范例:</span><span  id=Layer90></font></p><div style="background-color: #D7D7D7;"><font face=Arial size=3><pre>&lt;%="Hello " %></span><span  id=Layer91></pre></font></div><p><font size=2 color=#3c3c3c face=arial>ASP提供了Response.Write的缩写</span><span  id=Layer92></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>ASP提供了Response.Write的缩写</span><span  id=Layer93></font></p><hr><p><font size=2 color=#3c3c3c face=arial>是一个ASP网页,它与下面的叙述具有相同的效果:</span><span  id=Layer94></font></p><div style="background-color: #D7D7D7;"><font face=Arial size=3><pre>&lt;%response.write "Hello" %></span><span  id=Layer95></pre></font></div><p><font size=2 color=#3c3c3c face=arial>这两行程式都将「Hello」字串新增到一个位元组串流,然後传送回浏览器。</span><span  id=Layer96></font></p><p><font size=2 color=#3c3c3c face=arial><font size=2 face=arial color=#3e80d7><b>&nbsp;Server</span><span  id=Layer97>&nbsp;</b></font>目前为止关系到Server内建物件最重要的事便是它允许使用自己的CreateObject method来建立server-side COM物件。举例来说,若要建立一个ProgID为QwickBank.FinCalc 的COM类别实例,则ASP script的程式码可以包含这一行:</span><span  id=Layer98></font></p><div style="background-color: #D7D7D7;"><font face=Arial size=3><pre>&lt;%Obj =Server.CreateObject("QwickBank.FinCalc")%></span><span  id=Layer99></pre></font></div><p><font size=2 color=#3c3c3c face=arial>Server物件能让一个ASP网页建立COM物件</span><span  id=Layer100></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>Server物件能让一个ASP网页建立COM物件</span><span  id=Layer101></font></p><hr><p><font size=2 color=#3c3c3c face=arial>也有其它的方式可以让ASP网页建立COM物件。举例来说,script中可以包含HTML的&lt;OBJECT>标注,指定RUNAT=SERVER属性。也可以使用scripting语言本身提供的函数从ASP网页来建立COM物件:如VBScript中的CreateObject,JScript中的NEW。不过,通常来说这并不是个好主意。ASP 扩充程式并不会牵涉到物件建立的过程,因此它不能以此方式对物件进行有效的管理。</span><span  id=Layer102></font></p><p><font size=2 color=#3c3c3c face=arial>ASP网页也可以其它方式建立COM物件</span><span  id=Layer103></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>ASP网页也可以其它方式建立COM物件</span><span  id=Layer104></font></p><hr><p><font size=2 color=#3c3c3c face=arial>不管它们是怎样建立的,从VBScript或JScript,或典型的ASP语言存取的COM物件都必须使用dual interface来显露它们的method。ASP script无法使用只能透过vtable存取其method的物件。这个限制也是为何大部份开发专案不建立只使用vtable介面的物件之其中一个原因  从ASP网页存取COM元件是很常见的需求,不得不允许之。</span><span  id=Layer105></font></p><p><font size=2 color=#3c3c3c face=arial>能让ASP网页存取的COM物件必需是Dual Interface</span><span  id=Layer106></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>能让ASP网页存取的COM物件必需是Dual Interface</span><span  id=Layer107></font></p><hr><p><font size=2 color=#3c3c3c face=arial>预设使用Server.CreateObject建立的物件其存活的生命周期只在建立此物件的ASP网页执行时。(这也是使用&lt;OBJECT>标注建立物件的预设状态) 在同一个ASP档案中的任何script叙述都可以使用这个物件,但其它的.asp档案无法存取这个特殊的实例。这类物件的生命周期为一个网页,代表当网页执行完毕时,ASP 扩充程式便呼叫物件上的Release,让物件自我摧毁。你也可以给予物件application或session范围的生命周期。本章稍後再讨论如何完成这个动作。</span><span  id=Layer108></font></p><p><font size=2 color=#3c3c3c face=arial>ASP网页建立的COM物件预设的生命周期范围为网页(page scope)</span><span  id=Layer109></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>ASP网页建立的COM物件预设的生命周期范围为网页(page scope)</span><span  id=Layer110></font></p><hr><p><font size=2 color=#3c3c3c face=arial>ASP网页同样可使用Server物件来做一些很有用的事。举例来说,藉由物件ScriptTimeout属性的设定,可让网页控制在逾期之前可执行的时间长度,或呼叫它的GetLastError method回传一个ASPError物件,以便检视错误发生的原因。ASP网页也可以呼叫Server物件的Execute method来执行另一个ASP网页,或呼叫Transfer method将客户端送出的要求转送到同一台机器上的另一个网页。实际上,它提供一个主要的机制让ASP网页建立COM物件,这对ASP开发者来说是相当重要的。</span><span  id=Layer111></font></p><p><font size=2 color=#3c3c3c face=arial><font size=2 face=arial color=#3e80d7><b>&nbsp;Application</span><span  id=Layer112>&nbsp;</b></font>有时让ASP应用程式中所有的网页共享一些资讯是很有帮助的。这也就是说共享状态资讯的意思。为了让这件事变得简单,ASP 扩充程式为每个执行的ASP应用程式,另外维护一个Application物件。应用程式中任何网页内的script程式码可以将资讯储存在这个物件上,而这些资讯可以让应用程式中的任何网页存取。</span><span  id=Layer113></font></p><p><font size=2 color=#3c3c3c face=arial>Application物件允许ASP应用程式中所有的网页分享资讯</span><span  id=Layer114></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>Application物件允许ASP应用程式中所有的网页分享资讯</span><span  id=Layer115></font></p><hr><p><font size=2 color=#3c3c3c face=arial>将资讯储存在Application物件是很简单的。Script中可以包含如下的叙述:</span><span  id=Layer116></font></p><div style="background-color: #D7D7D7;"><font face=Arial size=3><pre>&lt;%Application("StartTime")=Now()%></span><span  id=Layer117></pre></font></div><p><font size=2 color=#3c3c3c face=arial>这将会呼叫VBScript内建的函数以便回传目前的时间,然後将函数回传的结果储存在Application物件内名为StartTime的变数中。若要存取这个值,ASP应用程式中的任何网页可以使用下面的程式码:</span><span  id=Layer118></font></p><div style="background-color: #D7D7D7;"><font face=Arial size=3><pre>Application started at &lt;%=Application("StartTime")%></span><span  id=Layer119></pre></font></div><p><font size=2 color=#3c3c3c face=arial>这个动作将会产生如下的输出文字串流:</span><span  id=Layer120></font></p><div style="background-color: #D7D7D7;"><font face=Arial size=3><pre>Application started at 10/01/00 5:28:00 PM</span><span  id=Layer121></pre></font></div><p><font size=2 color=#3c3c3c face=arial>Application物件也提供了一些method让ASP网页呼叫。最有趣的事莫过於锁定 (Lock),锁定允许网页将储存在Application物件中的所有变数锁定起来;以及UnLock,用来释放这把锁。因为IIS使用多条执行绪处理ASP网页发出的要求,所以同一个应用程式中的多个网页便可以在相同的时间点执行。锁定的动作可以用来确保网页以独占的方式来更改Application物件变数。真正锁定的时间若比锁定必要的时间长,便可能降低执行效能。</span><span  id=Layer122></font></p><p><font size=2 color=#3c3c3c face=arial>ASP网页可以锁定Application物件以确保独占存取</span><span  id=Layer123></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>ASP网页可以锁定Application物件以确保独占存取</span><span  id=Layer124></font></p><hr><p><font size=2 color=#3c3c3c face=arial>ASP应用程式中的网页也可以建立COM物件,然後将此物件的介面指标储存在Application物件。以ASP的行话来说,这就是所谓的赐予物件以应用程式为范围的生命周期。若要达到这个目的,网页中可以包含如下的程式码:</span><span  id=Layer125></font></p><div style="background-color: #D7D7D7;"><font face=Arial size=3><pre>&lt;% Set Application("FinCalc")=							  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -