在ASP中使用COM組件開發(fā)Web應(yīng)用程序
發(fā)表時(shí)間:2024-05-30 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]作者: 沈曉剛 如果你是一名Active Server Page (ASP) 開發(fā)者,相信你可能經(jīng)常使用COM對(duì)象來創(chuàng)建ASP頁面。甚至在你使用中都忽略了他就是COM對(duì)象。比如:ADO。只個(gè)調(diào)用率最高的組件已讓你的頁面擴(kuò)展了無限的功能。然而ASP本身是解釋型腳本,在功能上不足COM強(qiáng)大。作為擁...
作者: 沈曉剛
如果你是一名Active Server Page (ASP) 開發(fā)者,相信你可能經(jīng)常使用COM對(duì)象來創(chuàng)建ASP頁面。甚至在你使用中都忽略了他就是COM對(duì)象。比如:ADO。只個(gè)調(diào)用率最高的組件已讓你的頁面擴(kuò)展了無限的功能。然而ASP本身是解釋型腳本,在功能上不足COM強(qiáng)大。作為擁有快速開發(fā),易用性強(qiáng),支持COM的VB自然的作為了ASP中開發(fā)COM的首要工具。下面的示范和描述中,通過Visual Basic 語言在告訴大家如何寫COM及COM對(duì)象模型的使用,相信會(huì)讓你有所收獲。
屬性和方法之間有什么不同?
介紹一個(gè)屬性的要點(diǎn)?
什么是一個(gè)只讀屬性的含義?
什么是集合對(duì)象?
什么是集合對(duì)象中的標(biāo)準(zhǔn)屬性?
........
COM是一個(gè)面向?qū)ο蟮臉?biāo)準(zhǔn),在定義COM對(duì)象中只有方法和屬性。他們沒有其他的接口,方法能擁有參數(shù),屬性不能,屬性又擁有讀/寫兩種屬性,方法可以返回一個(gè)值。
屬性
屬性不接收任何參數(shù)并通常使用描述對(duì)象狀態(tài)或設(shè)置一個(gè)對(duì)象而被使用。所有屬性返回一個(gè)值,然而一些屬性是只讀,一些是讀/寫。在這里介紹一個(gè)用Visual Basic 語法的例子幫助解讀屬性:
例1
讀
value = object.property
寫
object.property = value
注意:這里并沒有熟悉的圓括號(hào),只是像變量一樣的賦值。這里就是與方法(function/sub)不同之處。以上是用Visual Basic 語法設(shè)置一個(gè)屬性。
方法
方法能返回值或賦值,通常是被使用一個(gè)對(duì)象初始化事件,或一個(gè)函數(shù)過程的調(diào)用。方法能被賦值,但只有存在與參數(shù)列表,如果一個(gè)方法沒有參數(shù),那么語法如下:
例2
value = object.method()
注意在 例2中這個(gè)方法被設(shè)置空(),方法能有一個(gè)返回值必須有帶().以例所述,這個(gè)連接對(duì)象有一個(gè)執(zhí)行方法并返回一個(gè)Recordset對(duì)象。這里是例子:
例3
Set Rs = Conn.Execute ("select * from table")
方法不返回一個(gè)值,在參數(shù)中沒有().例如連接對(duì)象中的關(guān)閉方法。
例4
Conn.Close
重點(diǎn):
方法能獲取一個(gè)或多個(gè)參數(shù)或不獲取參數(shù)。然而,參數(shù)也同樣是可選的。參數(shù)一但存在,就必須全部賦值。如果有一個(gè)參數(shù)是可選,所有在該參數(shù)后的其他參數(shù)也同樣可選。例:打開數(shù)據(jù)庫連接的方法是一個(gè)關(guān)于可選參數(shù)方法的好的例子。這個(gè)打開方法有八個(gè)可選參數(shù)。第一,第二是建立數(shù)據(jù)庫和登錄信息。如例5
例5
Conn.Open "DSN","sa",""
顯示一個(gè)DSN的數(shù)據(jù)源,一個(gè) sa 的登錄帳號(hào)和一個(gè)空的密碼。或是你能知道關(guān)于例6中打開的方法:
例6
Conn.Open "driver=SQL Server;server=yourServerName;uid=someUID;" &_
"pwd=somePWD;database=someDatabase;"
注意在例6中我們只使用了一個(gè)參數(shù)和例5中我們使用的三個(gè)可選參數(shù)結(jié)果是一樣的。 可選參數(shù)是一個(gè)在被呼叫的方法中的參數(shù)允許為空或已被插入了默認(rèn)值。在例6中被使用的可選參數(shù)是默認(rèn)值,在例7中使用的可選參數(shù)是空。
例7
Conn.Open "DSN","sa","", , , ,
在例8中參數(shù)為空值的這幾個(gè)可選參數(shù)是不同與例5的。,
集合
集合對(duì)象可以存儲(chǔ)許多元素而且在創(chuàng)建以后也可以改變他們的數(shù)據(jù)。一個(gè)集合有Item方法,一個(gè)Count屬性和一個(gè)遍歷方法。一個(gè)集合的集合類型也同樣需要擁有創(chuàng)建對(duì)象的能力。換句話說。如果一個(gè)特別的對(duì)象需要在一個(gè)集合對(duì)象中創(chuàng)建一個(gè)對(duì)象群。如例,一個(gè)驅(qū)動(dòng)器集合對(duì)象需要提供顯示驅(qū)動(dòng)器在電腦中的詳細(xì)信息。
用Count屬性返回在這個(gè)集合中有多少對(duì)象。遍歷方法允許程序員在一個(gè)集合對(duì)象中從頭到尾地循環(huán)。例8中說明了遍歷方法:
例8
For Each Object in Collection
Next Object
注意在這個(gè)遍歷方法中沒有應(yīng)用如例中的語法。這是因?yàn)橐粋(gè)遍歷方法是特例在Visual Basic允許在開始使用并用For Next聲明。
默認(rèn)方法或?qū)傩?/p>
方法或?qū)傩允荂OM索引從0被獲取的默認(rèn)屬性。Visual Basic 允許程序員在不知道如何使用方法和屬性語法時(shí)自動(dòng)呼叫默認(rèn)值。相關(guān)說明看例9。
例9
Set Object = Collection.Item(2)
這里是獲取在集合中獲取第二列并分配給Object對(duì)象。因?yàn)镮tem方法是一個(gè)默認(rèn)方法。你因此可以使用像例10中的Item方法。
例10
Set Object = Collection(2)
對(duì)象初試化
在ASP中創(chuàng)建一個(gè)對(duì)象實(shí)例。你可以使用一個(gè)像例11中的聲明
例11
Set Object = Server.CreateObject("SMUM.XCheck.1")
這里服務(wù)端的CreateObject方法中的參數(shù)是一個(gè)ProgId(Program ID).這個(gè)ProgId是一個(gè)唯一分配的COM對(duì)象.你必須知道這個(gè)COM對(duì)象的ProgId才能創(chuàng)建這個(gè)COM對(duì)象.
這里介紹另一種方法來創(chuàng)建COM對(duì)象.你能使用其他的COM對(duì)象來創(chuàng)建返回一個(gè)新的對(duì)象.這里介紹一個(gè)集合工作.你在一個(gè)集合方法返回一個(gè)COM對(duì)象所在集合對(duì)象中的索引號(hào),另一個(gè)對(duì)象隨時(shí)會(huì)返回一個(gè)COM對(duì)象.在例12中你必須用類似set來聲明。
例12
Set Object = Collection.Item(2)
服務(wù)端是一個(gè)COM對(duì)象。例11和例16許多地方都很相似。他們是從一個(gè)COM對(duì)象中訪問另外一個(gè)COM對(duì)象。他們不同之處就在于一個(gè)是在服務(wù)端使用CreateObject的方法來創(chuàng)建一個(gè)服務(wù)端對(duì)象從而返回一個(gè)COM對(duì)象。另一個(gè)是用在一個(gè)集合內(nèi)通過Item方法返回一個(gè)COM對(duì)象。因此如果你需要在一個(gè)COM對(duì)象中創(chuàng)建另一個(gè)COM對(duì)象。服務(wù)端對(duì)象來自與哪?答案就如是先有雞還是先有蛋的問題他們是聲名一個(gè)ASP中的內(nèi)置COM對(duì)象。
內(nèi)置COM對(duì)象
在ASP環(huán)境中有六個(gè)內(nèi)置的COM對(duì)象。
Server
Request
Response
Application
Session
ObjectContext
關(guān)于ASP內(nèi)置對(duì)象在這里不多說。