来 源: 互联网
作 者: 不祥
发表日期: 2005-12-17 16:50:57
阅读次数: 65
文章标题:
ASP → ASP 3.0高级编程(十八)
查看权限: 普通文章
查看方式: 查看:[
大字 中字 小字 ] [双击滚屏]
正 文:
ASP 3.0高级编程(十八) |
5.2.5 引用对象类型库 在早先的ASP版本中,在脚本中使用对象或组件时,组件内定义的公共常数(如果有的话)在ASP里将不再有效。这意味着我们需要自己声明它们(或等价物)并指定相应的值。 例如,当在早期版本的ASP中使用ActiveX数据库对象(ADO)组件时(将在第8章进行详细的研究),不得不用记录集的Open方法加入预定义常数声明。例如: Const adOpenKeyset = &H0001 Const adLockPessimistic = &H0003 Const adCmdTable = &H0002 … rs.Open “Contact”,”DSN=GlobalExampleData;UID=examples;Password=;”, _ adOpenKeyset, adLockPessimistic, adCmdTable … 另一种方法是使用#include指令在页面插入一个名为adovbs.inc的文件。该文件由IIS/ASP提供,包含ADO所需的所有预定义常数。更新代码时,必须确认使用的是最新版本,并检查它对于所有的页面请求都可用。 对于IIS 5.0,有一个更好的方法,通过在HTML注释元素内使用METADATA指令,可以给组件或对象的类型库增加引用(IIS 4.0不支持这一功能)。 <!-- METADATA TYPE=”TypeLib” FILE=”path_and_name_of_file” UUID=”type_library_uuid” VERSSION=”major_version_number.minor_version_number” LCID=”locale_id” --> 其中: · path_and_name_of_file是某一类型库文件(.tlb)或ActiveX DLL的绝对物理路径,必须提供这一参数或者是type_library_uuid参数。 · type_library_uuid是该类型库的唯唯一标识符,必须提供这一参数或者是path_and_name_of_file参数。 · major_version_number.minor_version_number(可选)定义了所需组件的版本。如果没有该版本则使用最近的版本。 · locale_id(可选)是区域标志符。如果在该区域没有发现类型库,计算机将使用缺省的(安装时定义的)区域。 因此,使用这一技术,通过使用下面的代码,能使内置的ADO预定义常数在ASP页面可用: <!-- METADATA TYPE=”TypeLib” FILE=”C:\Program Files\Common Files\System\ado\msado15.dll” --> 文件名msado15.dll还可用于更高版本(2.50以后)的ADO组件。 如果ASP不能装载类型库,就返回一个错误并停止该页的执行。可能的错误提示如表5-1所示: 表5-1 错误提示代码及说明 错 误 说 明 ASP 0222 无效的类型库说明 ASP 0223 未找到类型库 ASP 0224 类型库不能加载 ASP 0225 类型库不能打包(即ASP不能从指定的类型库中创建类型库包装对象)
5.2.6 在客户端上创建对象实例 在ASP中讨论在服务器上实例化对象和组件的技术时,值得强调的是在浏览器中运行客户端页面而完成同样工作的方式。如果你使用ASP创建包含客户端脚本程序的页面,或者使用<OBJECT>元素创建客户端组件实例,将会发现这是非常有用的。在大多数情况下,脚本运行期对象可在客户端上实例化和使用,效果与服务器上的ASP相同。 1. VBScript CreateObject方法 在客户端使用CreateObject时,在浏览器的环境内创建组件或对象实例,它们与浏览器运行在相同的内存空间里(即进程内),除非实现的对象是带有.exe扩展文件名的可执行文件。 通常指定对象的ClassID,而不是使用ProgID字符串,这样就不可能与其他安装在客户端的对象发生冲突。 <SCRIPT LANGUAGE=”VBScript”> Dim objThis Set objThis = CreateObject(“clsid:892D6DA7-E0F9-00105A42AF30”) … </SCRIPT> 当然也可以使用ProgID,并且使用通用的对象或组件(特别是标准安装提供的对象或组件),那么得到错误的组件的风险是很小的: <SCRIPT LANGUAGE=”VBScript”> Dim objThis Set objThis = CreateObject(“Scripting.Dictionary”) … </SCRIPT> 2. Jscript ActiveXObject方法 为了在客户端上实例化Jscript的对象和组件,必须使用ActiveXObject方法和new操作符: <SCRIPT LANGUAGE=”JScript”> var objMyData = new ActiveXObject(‘clsid: 892D6DA7-E0F9-00105A42AF30’); </SCRIPT> 或: <SCRIPT LANGUAGE=”JScript”> var objMyData = new ActiveXObject(‘this.object’); </SCRIPT> 3. <OBJECT>元素技术 也可使用<OBJECT>元素创建客户端对象或组件的实例。应省略RUNAT属性或者将其设定为“CLIENT”。然而,这个属性在客户端上是被忽略的,因此设置这个属性的唯一目的就是,在ASP页面使用<OBJECT>元素实例化服务器端的组件实例时防止混淆。 <OBJECT ID=”objThis” RUNAT=”CLIENT” CLASSID=”clsid: 892D6DA7-E0F9-00105A42AF30” CODEBASE=”http://yourserver.com/components/mycomponent.cab”> <PARAM NAME=”param1” VALUE=”value1”> <PARAM NAME=”param2” VALUE=”value2”> </OBJECT> 注意,这里出现的CODEBASE属性,表示允许下载并安装来自URL的组件(如果该组件没有安装)。IE 3.0以上的版本有此功能。 对于使用<OBJECT>元素的方法、可使用的属性、在客户端使用的值,可查看网站http://msdn.Microsoft.com/workshop/author/dhtml/reference/objects/OBJECT.asp,或者Windows 2000 Platform SDK文档中的<OBJECT> tags,或者看看《IE5 Dynamic HTML Programmer’ Reference》一书,ISBN 1-861001-74-6,Wrox出版社。
5.3 Scripting.Dictionary对象 许多Microsoft的编程语言,如Visual Basic、VBScript和Jscript,都提供集合(collection)。可以把集合想象为数组,可以使用其中内建的函数完成存储和操纵数据等基本任务。无须担心数据是在哪些行列,而是使用唯一的键进行访问。 VBScript和Jscript都提供类似的对象,通称Scripting.Dictionary对象或Dictionary对象。它类似于二维数组,把键和相关条目的数据存放在一起。然而真正的面向对象的方法,不应直接访问数据条目,必须使用Dictionary对象支持的方法和属性来实现。 本章提供了一些示例页面,允许试验脚本运行期对象的方法和属性。这些实例在下载的文件的文件的Chaper05子目录里。
5.3.1 创建和使用Dictionary对象 创建一个Dictionary对象的示例如下: ‘In VBScript: Dim objMyData Set objMyData = Server.CreateObject(“Scripting.Dictionary”)
//In Jscript: var objMyData = Server.CreateObject(‘Scripting.Dictionary’);
<!-- Server-Side with an OBJECT element --> <OBJECT RUNAT=”SERVER” SCOPE=”PAGE” ID=”objMyData” PROGID=”Scripting.Dictionary”> </OBJECT> Dictionary对象还可用于客户端的IE中。 1. Dictionary对象的成员概要 表5-2和表5-3列出了Dictionary对象的属性和方法及相应的说明。 当增加一个键/条目对时,如果该键已存在;或者删除一个键/条目对时,该关键字/条目对不存在,或改变已包含数据的Dictionary对象的CompareMode,都将产生错误。 表5-2 Dictionary对象的属性和说明 属 性 说 明 CompareMode (仅用于VBScript)设定或返回键的字符串比较模式 Count 只读。返回Dictionary里的键/条目对的数量 Item(key) 设定或返回指定的键的条目值 Key(key) 设定键值 表5-3 Dictionary对象的方法和说明 方 法 说 明 Add(key,item) 增加键/条目对到Dictionary Exists(key) 如果指定的键存在,返回True,否则返回False Items() 返回一个包含Dictionary对象中所有条目的数组 Keys() 返回一个包含Dictionary对象中所有键的数组 Remove(key) 删除一个指定的键/条目对 RemoveAll() 删除全部键/条目对 2. 对Dictionary中增加和删除条目 一旦得到一个新的(空的)Dictionary,可以对其添加条目,从中获取条目以及删除条目: ‘ In VBScript: objMyData.Add “MyKey”, “MyItem” ‘Add Value MyItem with key MyKey objMyData.Add “YourKey”, ”YourItem” ‘Add value YourItem with key YourKey blnIsThere = objMyData.Exists(“MyKey”) ‘Returns True because the item exists strItem = objMyData.Item(“YourKey”) ‘Retrieve value of YourKey strItem = objMyData.Remove(“MyKey”) ‘Retrieve and remove YourKey objMyData.RemoveAll ‘Remove all the items 在JScript中,等价的代码为: // In JScript; objMyData.Add (‘MyKey’, ‘MyItem’); //Add Value MyItem with key MyKey objMyData.Add (‘YourKey’, ‘YourItem’); //Add value YourItem with key YourKey var blnIsThere = objMyData.Exists(‘MyKey’); //Returns True because the item exists var strItem = objMyData.Item(‘YourKey’); //Retrieve value of YourKey var strItem = objMyData.Remove(‘MyKey’); //Retrieve and remove YourKey objMyData.RemoveAll(); //Remove all the items 3. 修改键或条目的值 可以通过修改键的值,或通过修改与特定的键关联的条目的数据,来改变存储在Dictionary内的数据。下面的代码改变键为MyKey的条目中的数据。 ObjMyData.Item(“MyKey”) = “NewValue” ‘ In VBScript ObjMyData.Item(‘MyKey’) = ‘NewValue’; // In JScript 如果指定的键在Dictionary未找到,将在Dictionary中创建一个以MyKey为键,以New Value为其条目值的新的键/条目对。有意思的是,如果使用一个不存在的键来检索条目,不仅得到一个空的字符串(这是可以想到的),而且还在Dictionary里添加一个新的键/条目对,键即是指定的键,但条目的数据为空。 可以使用Key属性仅改变键的值而不改变与之对应的条目的数据。将一个已存在的键MyKey改变为MyNewKey,可以用: objMyData.Key(“MyKey”) = “MyNewValue” ‘ In VBScript objMyData.Item(‘MyKey’) = ‘MyNewValue’; // In JScript 如果指定的键未找到,则产生运行期错误。 4. 设置比较模式 Dictionary的CompareMode属性仅适用于VBScript,不能在JScript中使用。当比较字符串键时,允许指定比较的方式。两个允许的值为BinaryCompare(0)和TextCompare(1)。BinaryCompare(0)为二进制数对照(即区分大小写);TextCompare(1)为文本对照(即不区分大小写)。 5. 遍历Dictionary 研究Dictionary时,有两个方法和一个属性需要特别注意,它们允许我们遍历存储在Dictionary里的所有键/条目对。Items方法用一个一维数组的形式返回Dictionary里所有的条目数据,而keys方法用一个一维数组返回所有已存在的键值。可以使用Count属性得到键或条目的数量。 例如,可以使用下列代码得到名称为objMyData的Dictionary中所有的键和条目值。注意,虽然Count属性保存了在Dictionary里的键/条目数量,但VBScript和JScript的数组总是从下标0开始的。因此,数组下标应从0到Count-1。 ‘In VBScript: arrKeys = objMyData.Keys ‘Get all the keys into an array arrItems = objMyData.Items ‘Get all the items into an array
For intLoop = 0 To objMyData.Count –1 ‘Iterate through the array StrThisKey = arrKeys(intLoop) ‘This is the key value StrThisItem = arrItems(intLoop) ‘This is the item (data) value Next
// In JScript // Get VB-style arrays using the Keys() and Items() methods var arrKeys = new VBArray(objMyData.Keys()).toArray(); var arrItems = new VBArray(objMyData.Items()).toArray();
for (intLoop = 0; intLoop < objMyData.Count; intLoop++) { // Iterate through the arrays strThisKey = arrKeys[intLoop]; // This is the key value strThisItem = arrItems[intLoop]; // This is the item (data) value } 在VBScript里也可以使用For Each … Next语句完成同样的功能: ‘ Iterate the dictionary as a collection in VBScript For Each objItem in arrItems Response.Write objItem & “ = “ & arrItems(objItem) & “<BR>” Next |
分享到:
相关推荐
ASP3.0高级编程技术是Web开发领域中的一个重要里程碑,它是Active Server Pages的第三个主要版本,主要用于构建动态、交互式的网站。在这个版本中,开发者能够利用更强大的功能和改进的性能来创建复杂的Web应用程序...
本书《ASP3.0高级编程》应该是针对这一技术的深入解析和实践指导。 1. **ASP3.0基础**:ASP3.0的核心概念包括脚本语言支持、服务器端控件、内置对象等。学习者应掌握如何创建基本的ASP页面,理解Response、Request...
ASP3.0高级编程是针对Web开发人员深入学习ASP(Active Server Pages)技术的重要参考资料。在ASP3.0中,微软引入了许多增强功能,使得它成为构建动态网站和Web应用程序的强大工具。本教程旨在帮助开发者掌握ASP3.0的...
1.4 ASP 3.0对象模型概要 22 1.4.1 对象环境概念 22 1.4.2 ASP内置的对象 23 1.5 ASP 3.0中的新特性 24 1.5.1 ASP 3.0新特性概要 24 1.5.2 对ASP 2.0的改进 26 1.5.3 VBScript 5.0中的新特性 28 1.5.4 JScript 5.0中...
1.4 ASP 3.0对象模型概要 22 1.4.1 对象环境概念 22 1.4.2 ASP内置的对象 23 1.5 ASP 3.0中的新特性 24 1.5.1 ASP 3.0新特性概要 24 1.5.2 对ASP 2.0的改进 26 1.5.3 VBScript 5.0中的新特性 28 1.5.4 JScript 5.0中...
ASP.NET MVC3.0 是微软开发的一个开源框架,用于构建高度可测试和可维护的Web应用程序。...通过阅读《ASP.NET MVC3.0 高级编程》这本书,你可以获取更多关于这些主题的详细信息,掌握实际开发中的最佳实践。
通过深入研究"ASP 3.0高级编程",开发者不仅可以熟练运用ASP 3.0的各种特性和功能,还能为向更现代的技术栈过渡打下坚实的基础,例如ASP.NET或Node.js等。不断学习和适应新的技术,是IT行业从业者保持竞争力的关键。
### ASP 3.0高级编程知识点详解 #### ASP 3.0概述 ASP(Active Server Pages)3.0是微软开发的一种服务器端脚本环境,用于创建动态网页和应用程序。它允许网页开发者在HTML页面中嵌入脚本或ActiveX组件,从而实现更...
ASP 3.0高级编程.
通过"精通ASP3.0网络编程"的学习,你不仅将掌握ASP3.0的核心技术,还能培养解决实际问题的能力,从而成为一名熟练的Web开发者。在实践中不断磨炼,你将能够构建出高效、安全且用户友好的Web应用程序。
本书是C# 领域久负盛名的经典著作,深入全面地叙述了C# 编程语言和.NET...另外,还介绍了最新的C# 3.0 编程语言和LINQ 编程技术。本书由微软C# MVP Andrew Troelsen 编写,历经多次修订,适合各层次.NET 开发人员阅读。
在"ASP.NET MVC3.0 高级编程完整版"中,我们可能涵盖以下关键知识点: 1. **MVC模式**:MVC是一种软件设计模式,将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。模型负责处理...
在"ASP3.0高级编程_Part1"中,这些知识点可能被详细讲解,并结合实际案例进行阐述,以帮助读者理解并掌握ASP.NET 3.0的高级特性和最佳实践。通过阅读给出的PDF文件(01.PDF至05.PDF),读者将有机会深入学习这些内容...
《ASP.NET 3.0高级编程》是一本深入探讨ASP.NET技术的专业书籍,它涵盖了ASP.NET 3.0的核心概念和高级特性。该书通过图文并茂的方式,为读者提供了丰富的学习资源,还配备有详细的书签,使得阅读和查阅变得极其方便...
在这个“ASP3.0高级编程_Part2”中,我们将会深入探讨ASP.NET 3.0的一些核心概念和技术,包括但不限于控件编程、数据绑定、状态管理、安全性以及性能优化。 1. **控件编程**:ASP.NET 3.0引入了大量服务器控件,如...
ASP 3.0 网页制作教程
"ASP 3.0高级编程大学论文" 本文档主要介绍了ASP 3.0高级编程的相关知识点,涵盖了WWW的起源、HTML的基本结构、HTML的发展历史、动态内容的缺乏、早期网站的缺陷等方面。 一、WWW的起源 WWW(World Wide Web)...