明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

在ASP中使用COM組件開發(fā)Web應(yīng)用程序

[摘要]作者: 沈曉剛   如果你是一名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ì)象在這里不多說。