人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

ASP集合運(yùn)用

ASP集合運(yùn)用

更新時(shí)間:2022-07-18 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):


大多數(shù)ASP 內(nèi)建對象支持集合。集合是存儲字符串、數(shù)字、對象和其他值的地方。除了
在存儲或取出項(xiàng)目時(shí)集合會自動(dòng)擴(kuò)展與搜索外,集合與數(shù)組非常相近。與數(shù)組不同的是,
集合被修改后,項(xiàng)目的位置將會移動(dòng)。可以通過集合中項(xiàng)目的名稱、索引或者通過在集
合的所有項(xiàng)目中遍歷訪問項(xiàng)目。
通過名稱和索引訪問項(xiàng)目
通過使用項(xiàng)目名稱可以訪問集合中的具體項(xiàng)目。例如,Contents 集合擁有在 Session
對象中保存的所有變量。同樣也擁有由 Server.CreateObject 創(chuàng)建的所有對象。假設(shè)
在Session 對象中存儲了下列用戶信息:
可以使用在集合中存儲項(xiàng)目時(shí)關(guān)聯(lián)的名稱訪問項(xiàng)目。例如,下面的表達(dá)式返回字符串
“Sam”:
通過使用與項(xiàng)目關(guān)聯(lián)的索引或號碼也可以訪問項(xiàng)目。例如,下面的表達(dá)式檢索存儲在
Session 對象的第二個(gè)存儲槽中的信息并且返回“Woo”:
ASP 集合從 1開始編號。當(dāng)在集合中增加或刪除項(xiàng)目時(shí),與項(xiàng)目關(guān)聯(lián)的索引將會改變。
所以不能認(rèn)為項(xiàng)目的索引始終不變。正如將在下面的主題中說明的那樣,利用索引的
訪問一般用來遍歷集合,或訪問只讀集合中的項(xiàng)目。
通過使用速記的名稱可以訪問項(xiàng)目。ASP 以特定的順序搜索與對象關(guān)聯(lián)的集合。如果
在對象的集合中特定名稱的項(xiàng)目只出現(xiàn)一次的話,可以消除該集合的名稱:
訪問存儲在 Application 或 Session 對象中的項(xiàng)目時(shí),消除集合名稱一般是安全的。
但是,對于 Request 對象,最好指定集合名稱,因?yàn)樵摷虾芸赡馨貜?fù)的名稱。
遍歷集合
在集合的所有項(xiàng)目中遍歷可以了解集合中存儲的項(xiàng)目或修改項(xiàng)目。遍歷集合時(shí),必須
提供集合名稱。例如,可以使用 VBScript 中的 For...Each 語句訪問存儲在Session
對象中的項(xiàng)目:
可以使用 VBScript 中的 For...Next 語句遍歷集合。例如,要列出上例中存儲在
Session 中的三個(gè)項(xiàng)目,可以使用下列語句。
因?yàn)橐话悴恢来鎯υ诩现械捻?xiàng)目個(gè)數(shù),ASP 支持集合的 Count 屬性,這個(gè)屬性返
回集合中的項(xiàng)目數(shù)。可以使用 Count 屬性指定計(jì)數(shù)器的終值。
可以在腳本中使用 for 語句在集合中循環(huán)。在 JScript 的 for 語句中使用Count 屬
性時(shí),為了收到更大的效果,應(yīng)該將 Count 值分配給本地變量并使用該變量設(shè)置計(jì)數(shù)
器終值。這樣,腳本引擎就不需要每次循環(huán)都查尋 Count 的值。下面的例子展示了這
個(gè)技巧:
Microsoft JScript 3.0 引入了 Enumerator 對象。可以使用該對象遍歷 ASP 集合。
atEnd 方法指出了集合中是否還存在項(xiàng)目。moveNext 方法移動(dòng)到集合中的下一個(gè)項(xiàng)目。
遍歷帶子關(guān)鍵字 (Subkeys) 的集合
腳本在單一 cookie 中嵌入相關(guān)值以減少在瀏覽器和 Web 服務(wù)器之間傳送的 cookie
數(shù)目。因此 Request 和 Response 對象的 Cookies 集合能夠在單一項(xiàng)目中擁有多個(gè)值。
這些子項(xiàng)目或子關(guān)鍵字可以被單個(gè)訪問。只有 Request.Cookies 和 Response.Cookies
集合支持子關(guān)鍵字 (Subkeys)。Request.Cookies 只支持讀操作;Response.Cookies只
支持寫操作。
可以列舉 Request.Cookie 集合中所有的 cookie 以及 Cookie 中所有的子關(guān)鍵字
(Subkeys)。但是,如果在沒有子關(guān)鍵字 (Subkeys) 的 Cookie 上遍歷子關(guān)鍵字,將不
會產(chǎn)生任何結(jié)果。通過使用 .HasKeys 語法首先檢查cookie是否含有子關(guān)鍵字(Subkeys),
就可以避免這種情況。下面的這個(gè)例子展示了這個(gè)技巧。
遍歷對象集合
Session 和 Application 集合可以保存數(shù)量變量或者對象實(shí)例。Contents 集合擁有數(shù)
量變量和通過調(diào)用 Server.CreateObject 生成的對象實(shí)例。StaticObjects集合擁有在
Global.asa 文件中使用 HTML 元素創(chuàng)建的對象。 在遍歷包含對象的集合時(shí),可以訪問
對象的標(biāo)識符或?qū)ο蟮姆椒ê蛯傩浴@纾僭O(shè)應(yīng)用程序使用一些對象創(chuàng)建用戶帳號,
而且每個(gè)對象有初始化方法,可以遍歷 StaticObjects 集合來調(diào)用每個(gè)初始化方法:
ASP 集合有何不同之處? 盡管在本主題中討論的 ASP 集合與 Visual Basic的
Collection 對象非常相似,但還是有些不同。ASP 集合支持 Count 屬性和 Item 方法,
但不支持 Add 和 Remove 方法。 設(shè)置對象作用域 對象的作用域決定哪些腳本可以使
用該對象。默認(rèn)情況下,當(dāng)您創(chuàng)建對象實(shí)例時(shí),該對象具有頁作用域。同一 ASP 頁中
的任何腳本命令都能使用該頁作用域的對象;當(dāng) ASP 頁送回客戶端時(shí),該對象即被釋
放。對大多數(shù)對象來說,推薦的作用域是頁作用域。您可以改變一個(gè)對象的作用域,使
其可被其他頁的腳本使用。本主題將解釋如何使用頁作用域的對象以及如何改變對象的
作用域。
使用頁作用域?qū)ο?在 ASP 頁上用 Server.CreateObject 創(chuàng)建的對象在該頁的生存期內(nèi)
一直存在。該對象對該頁的任何腳本命令都是可訪問的,當(dāng) ASP 處理完該頁時(shí),該對象
即被釋放。因此,對象具有該頁的作用域或生命周期。 在用Visual Basic 或 VBScript
編程時(shí),要注意在 ASP 處理完該頁之前不要釋放對象。例如,以下語句經(jīng)常用于通過將
對象變量賦以 Nothing 值來釋放對象: Set myObj = Nothing 如果您在 ASP 頁中包含
了該語句,那么任何使用 myObj 的企圖都將會返回一個(gè)預(yù)期的錯(cuò)誤代碼。但在內(nèi)部,即
使在對象釋放以后,ASP仍保留對它的引用。當(dāng)您在腳本中不能使用對象時(shí),對象的資源
直到ASP處理完頁之后才釋放。同樣,如果您通過創(chuàng)建另一個(gè)對象實(shí)例并將其賦給已使用
過的對象變量來釋放該對象時(shí),ASP 將保留對原對象實(shí)例的引用。對大多數(shù)腳本來說,
創(chuàng)建多個(gè)對象可能不會產(chǎn)生問題,但如果對象使用共享資源,比如數(shù)據(jù)庫連接,就有可
能出現(xiàn)問題。由于對象有頁作用域,所以不要依靠手工釋放的對象。例如,以下的循環(huán)
創(chuàng)建 1001 個(gè) Connection 對象,它將能打開大多數(shù)的連接甚至于一個(gè)大型的 SQL
server: 總的來說,應(yīng)該盡量避免在一個(gè)循環(huán)內(nèi)部創(chuàng)建對象。如果無法避免,您應(yīng)該手
工釋放被對象使用過的資源。如果 Connection 對象僅被創(chuàng)建一次,且數(shù)據(jù)資源的物理
連接在每個(gè)循環(huán)中被打開然后關(guān)閉,那么上例將會正常運(yùn)行: 為對象賦予會話作用域
在應(yīng)用程序中,對于每個(gè)新會話,都會創(chuàng)建session-scope 對象,并且在會話結(jié)束后會
將其釋放。因此,每個(gè)活動(dòng)的會話都有一個(gè)對象。會話作用域用于從多個(gè)腳本中調(diào)用的
對象,但只影響一個(gè)用戶會話。您可以只在需要時(shí)才為對象賦予會話作用域。如果確實(shí)
需要使用會話作用域,那么就必須了解提供對象的組件的線程模型,因?yàn)樗绊懶阅芎?
對象的安全環(huán)境。詳細(xì)信息,請參閱本主題的“高級信息:性能問題” 。 要為對象賦
予會話作用域,請將對象存儲在 ASP Session 內(nèi)建對象中,您既可以在 Global.asa
文件中使用 標(biāo)記,也可以在 ASP 頁上使用 Server.CreateObject 方法創(chuàng)建具有會話
作用域的對象實(shí)例。 在 Global.asa 文件中,您可用擴(kuò)展了 RUNAT 屬性(必須設(shè)置為
Sever)和 SCOPE 屬性(必須設(shè)置為 Session)的 ;OBJECT> 標(biāo)記。以下示例創(chuàng)建一個(gè)
Ad Rotator 對象的會話作用域?qū)嵗?
一旦您在 Session 對象中存儲了對象,您就可以從應(yīng)用程序的任何頁中訪問該對象。
下面的語句使用上例中由 標(biāo)記創(chuàng)建的對象實(shí)例: 在 ASP 頁上,您也可以使用
Server.CreateObject 方法將對象存儲在 Session 內(nèi)建對象中。以下示例在 Session
對象中存儲 Ad Rotator 對象的一個(gè)實(shí)例。 要顯示廣告,您首先應(yīng)該獲取存儲在
Session 對象中的 Ad Rotator 對象的實(shí)例,然后才能調(diào)用方法來顯示對象: 在用標(biāo)
記聲明的對象被某個(gè) .asp 文件中的腳本命令引用之前,ASP 并不創(chuàng)建其實(shí)例。
Server.CreateObject 方法則立即創(chuàng)建該對象實(shí)例。因此,對會話作用域?qū)ο髞碚f,使
用 標(biāo)記要比 Server.CreateObject 屬性更好。 為對象賦予應(yīng)用程序作用域
application-scope 對象是在應(yīng)用程序啟動(dòng)時(shí)就創(chuàng)建的對象的單個(gè)實(shí)例。該對象由所有
客戶端請求共享。僅在極少數(shù)情況下,您才需要為對象賦予應(yīng)用程序作用域。一些實(shí)用
程序?qū)ο螅缬?jì)數(shù)器等,可能需要應(yīng)用程序作用域。但一般來說,您可用在下一節(jié)中
建議的替代方案。另外,線程模型會影響性能和對象安全環(huán)境(請參閱本主題的“高級
信息:性能問題”)。 要為對象賦予應(yīng)用程序作用域并將其存儲在ASP Application內(nèi)
建對象中,既可以使用 Global.asa 文件中的 標(biāo)記,也可以使用 ASP 頁上的
Server.CreateObject 方法創(chuàng)建應(yīng)用程序作用域的對象實(shí)例。 在 Global.asa 文件中,
您可用擴(kuò)展了 RUNAT 屬性(必須設(shè)置為 Sever)和 SCOPE 屬性(必須設(shè)置為 Session)
的 ;OBJECT> 標(biāo)記。在 ASP 頁中,您可以使用 Server.CreateObject 將對象實(shí)例存儲
在 Application 內(nèi)建對象中。關(guān)于使用 標(biāo)記和 Server.CreateObject的示例,請參閱
上一節(jié)“為對象賦予會話作用域”。 會話和應(yīng)用程序作用域的替代方案 僅當(dāng)需要時(shí),
才能為對象賦予會話或應(yīng)用程序作用域。因?yàn)樵跁捇驊?yīng)用程序結(jié)束運(yùn)行之前,這些對
象會一直保留。它們會占用內(nèi)存或數(shù)據(jù)庫連接等資源,這些資源可能會在其他方面更有
用。另外,組件的線程模型會影響您從中所創(chuàng)建的對象的性能,尤其是那些具有會話或
應(yīng)用程序作用域的對象。在很多情況下,比創(chuàng)建應(yīng)用程序或會話作用域?qū)ο蟾玫姆椒?
就是利用會話或應(yīng)用程序作用域變量,將信息傳遞給在網(wǎng)頁一級創(chuàng)建的對象。例如,不
要為 ADO Connection 對象賦予會話或應(yīng)用程序作用域,因?yàn)樗鼊?chuàng)建的連接會在相當(dāng)長
的一段時(shí)間一直保持打開而此時(shí)腳本已不再使用 ODBC 連接共享。但您可以將 ODBC 連
接字符串存儲在 Session 或 Application 內(nèi)建對象中,并在網(wǎng)頁上從創(chuàng)建的Connection
對象實(shí)例中獲取該字符串。通過這種方式,您可以存儲在會話或應(yīng)用程序名稱空間中頻
繁使用的信息,但只有在需要時(shí)才創(chuàng)建用該信息的對象。關(guān)于作用域變量的詳細(xì)信息,
請參閱“使用變量和常量”。 用戶自定義的 JScript 對象您可以通過定義一個(gè)創(chuàng)建和
初始化新對象的屬性和方法的構(gòu)造函數(shù)來創(chuàng)建自己的JScript對象。當(dāng)腳本用 new 操作
符來調(diào)用構(gòu)造函數(shù)時(shí),就會創(chuàng)建該對象的實(shí)例。ASP 腳本支持用戶自定義的對象,當(dāng)具
有頁作用域時(shí),后者正常運(yùn)行。但如果為用戶自定義的JScript 對象賦予應(yīng)用程序或會
話作用域,將可能影響該對象的功能。特別是,若一個(gè)對象具有會話或應(yīng)用程序作用域,
則其他頁的腳本可以獲取該對象的屬性,但是卻不能調(diào)用其方法。高級信息:性能問題
組件的線程模型可能會影響 Web 站點(diǎn)的性能,一般來說,帶有Both 標(biāo)記的對象是推薦
在所有的 ASP 腳本中使用的對象,尤其是在 Session 和 Application對象中。不推薦
使用單線程對象。因?yàn)槟赡懿粫冀K控制所用對象的線程模型,所以,以下的指導(dǎo)可
幫助您獲得最佳性能: 頁作用域?qū)ο蟆в?Both 或 Apartment 標(biāo)記的對象將給予您
最佳的性能。 應(yīng)用程序作用域?qū)ο蟆R话銇碚f,應(yīng)避免在 Application 對象中放置對
象。如果確需使用應(yīng)用程序作用域?qū)ο螅鷷䦶慕Y(jié)合了 FreeThreadedMarshaler的帶有
Both標(biāo)記的對象中獲得最佳性能。您既可以用 標(biāo)記也可以用 Server.CreateObject 方
法在 Application對象中存儲帶有 Single、Free 或 Both 標(biāo)記的對象。您必須用單元
線程對象來使用 標(biāo)記。 會話作用域?qū)ο蟆в蠦oth 標(biāo)記的對象將為您提供最佳性能。
用單線程或單元線程對象會導(dǎo)致 Web服務(wù)器將會話鎖定在一個(gè)線程上。自由線程對象不
會鎖定會話,但運(yùn)行速度不高。在 Session 對象中,您可以用 標(biāo)記或
Server.CreateObject方法存儲對象 。 如果您已安裝了 SDK 文檔,請參閱“創(chuàng)建 ASP
組件”,您將會獲得有關(guān)線程模型及其隱含的組件性能的詳細(xì)信息。(在 Windows 95
及其后續(xù)版本中 SDK 文檔不可用)

(出處:熱點(diǎn)網(wǎng)絡(luò))

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 鞍山市| 宝山区| 江城| 通海县| 墨竹工卡县| 斗六市| 临洮县| 焉耆| 安平县| 潜江市| 襄城县| 闽侯县| 石门县| 洛浦县| 永修县| 土默特左旗| 蒙城县| 柳林县| 峡江县| 荣昌县| 双流县| 苏州市| 宿迁市| 大石桥市| 西宁市| 司法| 康定县| 理塘县| 乌拉特中旗| 岚皋县| 福安市| 沿河| 永川市| 定安县| 姜堰市| 邳州市| 阿尔山市| 大足县| 通江县| 嘉黎县| 栾川县|