Ch°N 第3章A5P应用程序与会活75 中就不能再用。但是在其他的应用程序或ASP网页中,将保留原有的值,因为根目录的应用 程序不能访问子目录应用中的值。 从一个子程序或函数的变量的角度考虑这个问题。如果定义一个变量 intMy value为 Public 或全局的变量,可以从任何的子程序或函数内部访问该变量。但是,如果又声明一个具有相 同名字的局部变量,并在该子程序或函数内对该变量进行引用,则得到此变量的局部值。不 能再访问原先的值。当子程序或函数结束,局部值被撤消,全局变量原有的值仍然保留着: Public intMyvalue 42 Function DoSomething() Response. Write intMyvalue ⊥veB42£zomg1oba1 varian1e Dim intMyvalue ntMyvalu Response, write intMyvalue"ava17tr。mnew1oca1vr⊥ab1。 the global value of Myvalue ig still 42 (3)创建自己的ASP虚拟应用程序 为了建立一个新的虚拟应用程序,使用 Internet Services Manager应用程序或具有相同功 能的 HTML Web Manager网页。在 Internet Services manager中,在要创建的虚拟应用程序的 目录上单击右键,并选择New,接着选择 Virtual Directory,屏幕如图3-3所示 Tn is-[Internet I n Services\.wrosbox(Defau喇 eb Site\te时】厂回 J Tb cor 图 ++m|xmBe)m回 book Service A Task 图3-3创建ASP虚拟应用程序的屏幕 这个操作启动 New Virtual Directory wizard,该向导的开始屏幕提供有关向导的操作信息 单击Next,在第二页中键入新的虚拟应用程序的名字(或别名)。这个名字与在 Internet Services Manager中选择的目录的路径联合起来,将成为该应用程序的URL。屏幕如图3-4所示。 为了把一个现有的目录转换为与该目录具有相同名字的一个应用程序,选择包 含想要转换的目录的目录,并在向导的 Virtual Directory Alias页中使用该目录名。例 如把已有的test目录转换为一个虚拟应用程序,应该在 Internet Services manager中选 择 Default Web site条目,并提供一个别名“test
中就不能再用。但是在其他的应用程序或 A S P网页中,将保留原有的值,因为根目录的应用 程序不能访问子目录应用中的值。 从一个子程序或函数的变量的角度考虑这个问题。如果定义一个变量 i n t M y Va l u e为P u b l i c 或全局的变量,可以从任何的子程序或函数内部访问该变量。但是,如果又声明一个具有相 同名字的局部变量,并在该子程序或函数内对该变量进行引用,则得到此变量的局部值。不 能再访问原先的值。当子程序或函数结束,局部值被撤消,全局变量原有的值仍然保留着: (3) 创建自己的A S P虚拟应用程序 为了建立一个新的虚拟应用程序,使用 Internet Services Manager应用程序或具有相同功 能的HTML Web Manager网页。在Internet Services Manager中,在要创建的虚拟应用程序的 目录上单击右键,并选择N e w,接着选择Virtual Directory,屏幕如图3 - 3所示。 图3-3 创建A S P虚拟应用程序的屏幕 这个操作启动New Virtual Directory Wi z a r d,该向导的开始屏幕提供有关向导的操作信息。 单击N e x t,在第二页中键入新的虚拟应用程序的名字 (或别名)。这个名字与在Internet Services M a n a g e r中选择的目录的路径联合起来,将成为该应用程序的 U R L。屏幕如图3 - 4所示。 为了把一个现有的目录转换为与该目录具有相同名字的一个应用程序,选择包 含想要转换的目录的目录,并在向导的 Virtual Directory Alias页中使用该目录名。例 如把已有的t e s t目录转换为一个虚拟应用程序,应该在 Internet Services Manager中选 择Default Web Site条目,并提供一个别名“t e s t”。 第 3章 A S P应用程序与会话计计75 下载
76s3高级编程 China°beo w Virtual Directory wizard You must gve the vitual rectory a shot name, or alas, for quck teference Type the aas you want to ue to gain access to this Web vitue directory. Ute the that you would for nang a decoy 图3-4 New Virtual Directory Wizard的屏幕 再单击Next,指定包含该应用程序的内容(页面)的路径。单击 Browse选择一个已有目录。 这个目录是新的虚拟应用指向的目录。屏幕如图3-5所示 Web Site Content Directory where is the content you want to publish on the Web site? Enter the path to the directory that contant the content 图3-5指定路径时的屏幕 单击Next打开 Access Permissions页,选择给予这个应用程序的所有用户的权限。缺省值 是Read和 Run Scripts,对大多数用户而言是适合的。屏幕如图3-6所示。 New Virtual Directory wizard Access Per persons do you want to set for this vitual directory Alow the folowng click Next to complete the wizard 图3-6设置用户许可权限时的屏幕 如果想编写用户可直接执行的、定制的编译的CGI应用程序,只选择“ Execute 例如,用户通过在请求的URL中指定相应名字的方法执行的一个exe文件,像"htt /mysite. com/... /Test Application/ create user. exe?user=JJones 单击Next,向导创建该虚拟应用程序。在图3-7所示的屏幕中,可在左边的列表栏中看到 带有一个包含一些填充物的打开的小盒子图标
图3-4 New Virtual Directory Wi z a r d的屏幕 再单击N e x t,指定包含该应用程序的内容 (页面)的路径。单击B r o w s e选择一个已有目录。 这个目录是新的虚拟应用指向的目录。屏幕如图 3 - 5所示。 图3-5 指定路径时的屏幕 单击N e x t打开Access Permissions页,选择给予这个应用程序的所有用户的权限。缺省值 是R e a d和Run Scripts,对大多数用户而言是适合的。屏幕如图 3 - 6所示。 图3-6 设置用户许可权限时的屏幕 如果想编写用户可直接执行的、定制的编译的 C G I应用程序,只选择“E x e c u t e”: 例如,用户通过在请求的U R L中指定相应名字的方法执行的一个 . e x e文件,像"h t t p: / / m y s i t e . c o m /. . ./ Test Application/ create_user. e x e ? u s e r = J J o n e s"。 单击N e x t,向导创建该虚拟应用程序。在图 3 - 7所示的屏幕中,可在左边的列表栏中看到 带有一个包含一些填充物的打开的小盒子图标。 76计计ASP 3 高级编程 下载
rhinapub.com 第3章ASP应用程序与会活77 in iis-[Internet Information Servicest'wronbox\Default web Site test\Te-A KX 如m+回X日‖盟■回 + PBSData Arequest ADSI Test □ Phone Book Service 司 sample_ template 国ses9pbk applcation 图口 request Open AI Tacks DO vti log window from here A Administration Web St Ha imag OSDrBrowser 图3-7虚拟应用程序创建完成后的屏幕 如果现在用右键单击新的应用程序并选择 Properties,可以看到向导已经选择的设置。在 这里可根据需要修改访问权限、“ Local path”和“ Application Settings"。同时会看到一个 Remove按钮,可以用来删除该虚拟应用程序,如图3-8所示。 When connect the content thould cone homm o directory located on this comouter CAthee located on another 广 A reduction to at阻L no source accent rectory browing Applcation Settings aptt only 图3-8虚拟应用程序属性设置的屏幕
图3-7 虚拟应用程序创建完成后的屏幕 如果现在用右键单击新的应用程序并选择 P r o p e r t i e s,可以看到向导已经选择的设置。在 这里可根据需要修改访问权限、“Local Path”和“Application Settings”。同时会看到一个 R e m o v e按钮,可以用来删除该虚拟应用程序,如图 3 - 8所示。 图3-8 虚拟应用程序属性设置的屏幕 第 3章 A S P应用程序与会话计计77 下载
78s93高缓编程 Chinapub coM 删除虚拟应用程序 单击“ Remove”按钮不会真正地删除 Internet services manager中的该条目。而是把现有 的虚拟应用程序转换为一个虚拟目录。这个目录有一个带有蓝色球的“文件夹”图标,该图 标表示这并不是Web网站中一个真正的目录,而是对磁盘上另一个文件夹的一个重定向。对 它进行的访问方式与创建它的虚拟应用程序相同(即使用相同的URL,但是不作为一个应用程 序。换句话说,它不支持自己的 Application对象,而是继承缺省Web网站的 Application对象, 或者是在该目录的父目录中的另一个应用程序的 Application对象。 为了删除一个虚拟应用程序,可简单地在 Internet Services manager中的对象上单击右键 在弹出的菜单中选择 Delete e (5)应用程序存储的内容 ASP Application对象提供的全局存储空间可以用来存储下列内容: 简单变量,例如字符串和数字(存储为 Variant,类似于ASP脚本变量)。 Variant类型数组,一维或多维 ·对一个COM对象实例的变量引用(类似于 Variant)。 (6) Variant的定义 Variant是在Ⅴ SCript脚本引擎中为ASP(和 Internet Explorer)提供的唯一变量类型,与在 VB和VBA中定义的数据类型 Variant相类似。与大多数常用的基本数据类型(例如字符串或整 数)相比,尽管它不能使存储单元最高效地存储变量,需要进行额外的处理,但 Varian提供许 多用处 从内部来讲, Variant数据类型存储数值作为独立的子类型。它能自动地处理隐含的类型 转换,允许使用如下的代码: strstring :1:计21中H= 隐含的数据类型转换允许忽略HTML文本的值和列表控件是字符串的情况,并且如果需 要的话可以把它们当成数字(假设字符串确实包含一个有效的数字)。也可以随意地做一些其他 的事情,诸如使用Ⅴ SCript的Len方法检查 Request.Form集合中并不存在的一个值的长度← Len函数试图把从 Request.Form的调用的值转换成一个字符串。如果该值丢失,返回空 ( Empty),转换为带有""的一个字符串,因此长度是零。 7)Ⅴ SCript数据类型及转换 也可以进行显式的数据类型转换。在Ⅴ SCript中, VarType方法返回一个整数,表明 Variant当前保存的子类型: Select Case VarType(varMyvalue) Case 0: Response. write " Empty (uninitialized) Case i: Response. Write Null(no valid data ase 4 Response Write ' Single-precision floating-point number Case 5: Response. Write Double-precision floating-point number onse. write·cur
(4) 删除虚拟应用程序 单击“R e m o v e”按钮不会真正地删除 Internet Services Manager中的该条目。而是把现有 的虚拟应用程序转换为一个虚拟目录。这个目录有一个带有蓝色球的“文件夹”图标,该图 标表示这并不是 We b网站中一个真正的目录,而是对磁盘上另一个文件夹的一个重定向。对 它进行的访问方式与创建它的虚拟应用程序相同 (即使用相同的U R L ),但是不作为一个应用程 序。换句话说,它不支持自己的 A p p l i c a t i o n对象,而是继承缺省 We b网站的A p p l i c a t i o n对象, 或者是在该目录的父目录中的另一个应用程序的 A p p l i c a t i o n对象。 为了删除一个虚拟应用程序,可简单地在 Internet Services Manager中的对象上单击右键, 在弹出的菜单中选择D e l e t e。 (5) 应用程序存储的内容 ASP Application对象提供的全局存储空间可以用来存储下列内容: • 简单变量,例如字符串和数字 (存储为Va r i a n t,类似于A S P脚本变量)。 • Va r i a n t类型数组,一维或多维。 • 对一个C O M对象实例的变量引用(类似于Va r i a n t )。 (6) Va r i a n t的定义 Va r i a n t是在V B S c r i p t脚本引擎中为 A S P (和Internet Explorer)提供的唯一变量类型,与在 V B和V B A中定义的数据类型 Va r i a n t相类似。与大多数常用的基本数据类型 (例如字符串或整 数)相比,尽管它不能使存储单元最高效地存储变量,需要进行额外的处理,但 Va r i a n t提供许 多用处。 从内部来讲, Va r i a n t数据类型存储数值作为独立的子类型。它能自动地处理隐含的类型 转换,允许使用如下的代码: 隐含的数据类型转换允许忽略 H T M L文本的值和列表控件是字符串的情况,并且如果需 要的话可以把它们当成数字 (假设字符串确实包含一个有效的数字 )。也可以随意地做一些其他 的事情,诸如使用 V B S c r i p t的L e n方法检查 R e q u e s t . F o r m集合中并不存在的一个值的长度。 L e n函数试图把从 R e q u e s t . F o r m的调用的值转换成一个字符串。如果该值丢失,返回空 ( E m p t y ),转换为带有" "的一个字符串,因此长度是零。 (7) VBScript数据类型及转换 也可以进行显式的数据类型转换。在 V B S c r i p t中,Va r Ty p e方法返回一个整数,表明 Va r i a n t当前保存的子类型: 78计计ASP 3 高级编程 下载
aopub.com 第3章ASP应用程序与会话 下载 Case 12 se. write = (used only with items in arrays of variants) cess object Case 8192 nse.Write 'Variant Array nd select 还有一些函数,如 IsArray、 Is Date、 IsEmpty、 IsNull, IsNumeric和 Subject,对特定的子 类型返回一个 Boolean结果。一旦知道了数据的子类型,如果包含的数据合适的话,就可以将 之转换成不同的 Variant子类型。这对代码的透明性和检查变量是否包含合法值都是有用的, 非法的转换将导致运行期错误,转换如下所示 blnBoolean CBool (varvariant) Converte to a variant Cur(varvariant) a variant ngOng CLng(var averts to a variant Integer ariant estrone cstg (varvarianty Converts subtype (8) JScript数据类型及转换 在 JScript中,其他一些变量类型类似于Ⅴ SCript,但是没有代表对象的 Variant。所有值都 是对象,类型是下列六种数据类型之 undefined:只有单个值? undefined?,用于表明请求中的变量没有声明和创建,或者若是 隐含创建但还未分配任何值。类似于 VBScript的 Empty Null变量不包含一个有效的值。类似于Ⅴ SCript的 Nothing String · Number Object JScript提供了一个 type函数,返回表示数据的类型的字符串,例如: strstring='30; Response. Write(typeof (strstring)) Response. Write(typeof (intInteger)); mx址t: strlng: a the results2P 每种数据类型都有 toString方法和 valueof方法, tostring方法将变量的值转换为一个字符 串返回, valuec方法把变量的值作为它的原有数据类型返回 (9) JScript的级联和加法问题 JScript在许多方面不同于 VBScript,在一定程度上是因为没有“&”级联运算符可用。当 使用加法运算符时,它先检査变量的数据类型以决定要做什么。如果两个变量都是数值,结 果是数值的和。如果一个或两个是字符串,结果是字符串的级联 strstring = 30' intIntege 5=::::2:=:3出 suiting pag 如果进行加法的值超过两个,要看执行的顺序。下面的代码行进行相应的示范: Response. write (intInteger intInteger +.<P>"): ′Reau1t⊥24<P +intInteger +*</P>
还有一些函数,如I s A r r a y、I s D a t e、I s E m p t y、I s N u l l、I s N u m e r i c和I s O b j e c t,对特定的子 类型返回一个B o o l e a n结果。一旦知道了数据的子类型,如果包含的数据合适的话,就可以将 之转换成不同的 Va r i a n t子类型。这对代码的透明性和检查变量是否包含合法值都是有用的, 非法的转换将导致运行期错误,转换如下所示: (8) JScript数据类型及转换 在J S c r i p t中,其他一些变量类型类似于 V B S c r i p t,但是没有代表对象的Va r i a n t。所有值都 是对象,类型是下列六种数据类型之一: • u n d e f i n e d:只有单个值? u n d e f i n e d ?,用于表明请求中的变量没有声明和创建,或者若是 隐含创建但还未分配任何值。类似于 V B S c r i p t的E m p t y。 • N u l l:变量不包含一个有效的值。类似于 V B S c r i p t的N o t h i n g。 • Boolean。 • String。 • Number。 • Object。 J S c r i p t提供了一个t y p e o f函数,返回表示数据的类型的字符串,例如: 每种数据类型都有 t o S t r i n g方法和v a l u e O f方法,t o S t r i n g方法将变量的值转换为一个字符 串返回,v a l u e O f方法把变量的值作为它的原有数据类型返回。 (9) JScript的级联和加法问题 J S c r i p t在许多方面不同于V B S c r i p t,在一定程度上是因为没有“ &”级联运算符可用。当 使用加法运算符时,它先检查变量的数据类型以决定要做什么。如果两个变量都是数值,结 果是数值的和。如果一个或两个是字符串,结果是字符串的级联: 如果进行加法的值超过两个,要看执行的顺序。下面的代码行进行相应的示范: 第 3章 A S P应用程序与会话计计79 下载