标题: ASP 3.0高级编程(七)
轻骑兵
中校
Rank: 1



UID 90
精华 1
积分 1464
帖子 717
威望 13
金币 727
热心 0
阅读权限 50
注册 2005-9-15
状态 离线
ASP 3.0高级编程(七)

(4)  删除虚拟应用程序
单击“Remove”按钮不会真正地删除Internet Services Manager中的该条目。而是把现有的虚拟应用程序转换为一个虚拟目录。这个目录有一个带有蓝色球的“文件夹”图标,该图标表示这并不是Web网站中一个真正的目录,而是对磁盘上另一个文件夹的一个重定向。对它进行的访问方式与创建它的虚拟应用程序相同(即使用相同的URL),但是不作为一个应用程序。换句话说,它不支持自己的Application对象,而是继承缺省Web网站的Application对象,或者是在该目录的父目录中的另一个应用程序的Application对象。
为了删除一个虚拟应用程序,可简单地在Internet Services Manager中的对象上单击右键,在弹出的菜单中选择Delete。
(5)  应用程序存储的内容
ASP Application对象提供的全局存储空间可以用来存储下列内容:
· 简单变量,例如字符串和数字(存储为Variant,类似于ASP脚本变量)。
· Variant类型数组,一维或多维。
· 对一个COM对象实例的变量引用(类型于Variant)。
(6)  Variant的定义
Variant是在VBScript脚本引擎中为ASP(和Internet Explorer)提供的唯一变量类型,与在VB和VBA中定义的数据类型 Variant相类似。与大多数常用的基本数据类型(例如字符串或整数)相比,尽管它不能使存储单元最高效地存储变量,需要进行额外的处理,但Variant提供许多用处。
从内部来Variant数据类型存储数值作为独立的子类型。它能自动地处理隐含的类型转换,允许使用如下的代码:
strString = ”30”
intInteger = 12
Response.Write strString & intInteger ‘Writes 3012 in the resulting page
Response.Write strString + intInteger ‘Writes 42 in the resulting page
隐含的数据类型转换允许忽略HTML广西的值和列表控件是字符串的情况,并且如果需要的话可以把它们当成数字(假设字符串确实包含一个有效的数字)。也可以随意地做一些其他的事情,诸如使用VBScript的Len方法检查Request.Form集合中并不存在的一个值的长度。Len函数试图把从Request.Form的调用的值转换成一个字符串。如果该值丢失,返回空(Empty),转换为带有””的一个字符串,因此长度是零。
(7)  VBScript数据类型及转换
也可以进行显式的数据类型转换。在VBScript中,VarType方法返回一个整数,表明Variant当前保存的子类型:
Select Case VarType(varMyValue)
    Case 0: Response.Write “Empty (uninitialized)”
    Case 1: Response.Write “Null (no valid data)”
    Case 2: Response.Write “Integer”
    Case 3: Response.Write “Long integer”
    Case 4: Response.Write “Single-precision floating-point number”
    Case 5: Response.Write “Double-precision floating-point number”
    Case 6: Response.Write “Currency”
    Case 7: Response.Write “Date”
    Case 8: Response.Write “String”
    Case 9: Response.Write “Automation Object reference”
    Case 10: Response.Write “Error”
    Case 11: Response.Write “Boolean”
    Case 12: Response.Write “Variant (used only with items in arrays of Variants)”
    Case 13: Response.Write “Data-access Object”
    Case 17: Response.Write “Bytes”
    Case 8192: Response.Write “Variant Array”
End Select
还有一些函数,如IsArray、IsDate、IsEmpty、IsNull、IsNumeric和IsObject,对于特定的子类型返回一个Boolean结果。一旦知道了数据的子类型,如果包含的数据合适的话,就可以将之转换成不同的Variant子类型。这对代码的透明性和检查变量是否包含合法值都是有用的,非法的转换将导致运行期错误,转换如下所示:
blnBoolean = Cbool(varVariant)  ‘Converts to a Variant of subtype Boolean
bytByte = Cbyte(varVariant)     ‘Converts to a Variant of subtype Byte
curCurrency = CCur(varVariant)  ‘Converts to a Variant of subtype Currency
dtmDate = CDate(varVariant)     ‘Converts to a Variant of subtype Date
dblDouble = CDbl(varVariant)    ‘Converts to a Variant of subtype Double
intInteger = CInt(varVariant)   ‘Converts to a Variant of subtype Integer
ingLong = CLng(varVariant)      ‘Converts to a Variant of subtype Long
sngSingle = CSng(varVariant)    ‘Converts to a Variant of subtype Single
strString = CStr(varVariant)    ‘Converts to a Variant of subtype String
(8)  JScript数据类型及转换
在JScript中,其他一些变量类型类似于VBScript,但是没有代表对象的Variant。所有值都是对象,类型是下列六种数据类型之一:
· undefined:只有单个值,用于表明请求中的变量没有声明和创建,或者若是隐含创建但还未分配任何值。类似于 VBScript的Empty。
· Null:变量不包含一个有效的值。类似于VBScript的Nothing。
· Boolean。
· String。
· Number。
· Object。
JScript提供了一个typeof函数,返回表示数据的类型的字符串,例如:
StrString = ‘30’;
IntInteger = 12;
Response.Write(typeof(strString));  //Write ‘string’ in the resulting page
Response.Write(typeof(intInteger)); //Write ‘number’ in the resulting page
每种数据类型都有toString方法和valueOf方法,toString方法将变量的值转为一个字符串返回,valueOf方法把变量的值作为它的原有数据类型返回。
(9)  JScript的级联和加法问题
JScript在许多方面不同于VBScript,在一定程度上是因为没有“&”级联运算符可用。当使用加法运算符时,它先检查变量的数据类型以决定要做什么。如果两个变量都是数值,结果是数值的和。如果一个或两个是字符串,结果是字符串的级联:
strString = ‘30’;
intInteger = 12;
Response.Write(intInteger + intInteger);    //Writes 24 in the resulting page
Response.Write(strString + intInteger); //Writes 3012 in the resulting page
Response.Write(intInteger + strString); //Writes 1230 in the resulting page
如果进行加法的值超过两个,要看执行的顺序。下面的代码进行相应的示范:
intInteger = 12;
Response.Write(intInteger + intInteger + “<P>”);  //Result is ‘24<P>’
Response.Write(“<P>” + intInteger + intInteger + “</P>”);
                   ;                 &nbs p;                //Result is ‘<P>1212</P>’
在第一种情况下,两个数相加,结果被转换为一个字符串并与“<P>”字符串进行级联。在第二种情况下,第一个运算符是一个字符串和一个数的级联,所以数被转换为一个字符串。而后,所有的运算符都是级联运算符。为了避免这个问题,可以使用括号强制第一个运算符是两个数值的加法:
Response.Write(“<P>” + (intInteger + intInteger) + “</P>”);
                   ;                 &nbs p;            //Result is ‘<P>24</P>’
1.     Web应用程序中的组件管理
在ASP中使用虚拟应用程序的第二个主要方面是:具有较好的对在脚本代码内实例化和执行的组件进行管理的能力。先不讨论有关它怎样进行工作以及为什么会如此有用的详细情况,在学习ASP组件的部分时再讨论相关内容。
这里非常简要地介绍在ASP网页(此ASP网页在该应用程序中)中使用组件时,如何对一个虚拟应用程序在Properties对话框(在Internet Services Manager中)进行设置。
在一个虚拟应用程序的Properties对话框的Home Directory页的底部,有两个组合框,为Execute Permissions和 Application Protection,如图3-9所示:
[img]http://go2.163.com/~davelu/asp35.jpg></img>
图3-9[/img]
</img>
图3-10 Home Directory页
在出现的Configuration对话框中,打开App Option。这里可以允许或禁止整个应用程序的会话(在本例中是整个缺省Web 站点),也可以修改缺省的会话Timeout值。在图3-11中可以看到Timeout设置为20min。在ASP的早期的版本中这是缺省值,可根据要求设置相应的值(在ASP 3.0中,缺省值是10min)。
<img src=http://go2.163.com/~davelu/asp37.jpg></img>
图3-11 App Options页
如果要禁止一个指定网页的会话,同时允许它们在同一个应用程序的其他网页中创建和使用,可为该页面增加一条ASP处理指令。它跟在指定缺省语言的语句后(如果没指定一个缺省语言,可单独使用该指令):
<%@LANGUAGE=”VBScript” ENABLESESSIONSTATE=”False”%>到此为止,大致介绍了ASP应用程序和Session对象的一些情况,下面详细地进行讨论。

顶部
[广告] 免费域名(Free Subdomain) 免费空间(Free hosting) PR查询(Google Pagerank)



当前时区 GMT+8, 现在时间是 2008-8-29 07:35
信产部ICP备案:京ICP备05066424号 北京市公安局网监备案:1101050648号

Powered by Discuz! 5.5.0
清除 Cookies - 联系我们 - 网友俱乐部 - Archiver - WAP