• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

        ASP 3.0高級(jí)編程(7)

        ASP 3.0高級(jí)編程(7)

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

        (4)  刪除虛擬應(yīng)用程序
        單擊“Remove”按鈕不會(huì)真正地刪除Internet Services Manager中的該條目。而是把現(xiàn)有的虛擬應(yīng)用程序轉(zhuǎn)換為一個(gè)虛擬目錄。這個(gè)目錄有一個(gè)帶有藍(lán)色球的“文件夾”圖標(biāo),該圖標(biāo)表示這并不是Web網(wǎng)站中一個(gè)真正的目錄,而是對(duì)磁盤上另一個(gè)文件夾的一個(gè)重定向。對(duì)它進(jìn)行的訪問(wèn)方式與創(chuàng)建它的虛擬應(yīng)用程序相同(即使用相同的URL),但是不作為一個(gè)應(yīng)用程序。換句話說(shuō),它不支持自己的Application對(duì)象,而是繼承缺省Web網(wǎng)站的Application對(duì)象,或者是在該目錄的父目錄中的另一個(gè)應(yīng)用程序的Application對(duì)象。
        為了刪除一個(gè)虛擬應(yīng)用程序,可簡(jiǎn)單地在Internet Services Manager中的對(duì)象上單擊右鍵,在彈出的菜單中選擇Delete。 
        (5)  應(yīng)用程序存儲(chǔ)的內(nèi)容
        ASP Application對(duì)象提供的全局存儲(chǔ)空間可以用來(lái)存儲(chǔ)下列內(nèi)容:
        · 簡(jiǎn)單變量,例如字符串和數(shù)字(存儲(chǔ)為Variant,類似于ASP腳本變量)。
        · Variant類型數(shù)組,一維或多維。
        · 對(duì)一個(gè)COM對(duì)象實(shí)例的變量引用(類型于Variant)。
        (6)  Variant的定義
        Variant是在VBScript腳本引擎中為ASP(和Internet Explorer)提供的唯一變量類型,與在VB和VBA中定義的數(shù)據(jù)類型 Variant相類似。與大多數(shù)常用的基本數(shù)據(jù)類型(例如字符串或整數(shù))相比,盡管它不能使存儲(chǔ)單元最高效地存儲(chǔ)變量,需要進(jìn)行額外的處理,但Variant提供許多用處。
        從內(nèi)部來(lái)Variant數(shù)據(jù)類型存儲(chǔ)數(shù)值作為獨(dú)立的子類型。它能自動(dòng)地處理隱含的類型轉(zhuǎn)換,允許使用如下的代碼:
        strString = ”30”
        intInteger = 12
        Response.Write strString & intInteger ‘Writes 3012 in the resulting page
        Response.Write strString + intInteger ‘Writes 42 in the resulting page
        隱含的數(shù)據(jù)類型轉(zhuǎn)換允許忽略HTML廣西的值和列表控件是字符串的情況,并且如果需要的話可以把它們當(dāng)成數(shù)字(假設(shè)字符串確實(shí)包含一個(gè)有效的數(shù)字)。也可以隨意地做一些其他的事情,諸如使用VBScript的Len方法檢查Request.Form集合中并不存在的一個(gè)值的長(zhǎng)度。Len函數(shù)試圖把從Request.Form的調(diào)用的值轉(zhuǎn)換成一個(gè)字符串。如果該值丟失,返回空(Empty),轉(zhuǎn)換為帶有””的一個(gè)字符串,因此長(zhǎng)度是零。
        (7)  VBScript數(shù)據(jù)類型及轉(zhuǎn)換
        也可以進(jìn)行顯式的數(shù)據(jù)類型轉(zhuǎn)換。在VBScript中,VarType方法返回一個(gè)整數(shù),表明Variant當(dāng)前保存的子類型:
        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
        還有一些函數(shù),如IsArray、IsDate、IsEmpty、IsNull、IsNumeric和IsObject,對(duì)于特定的子類型返回一個(gè)Boolean結(jié)果。一旦知道了數(shù)據(jù)的子類型,如果包含的數(shù)據(jù)合適的話,就可以將之轉(zhuǎn)換成不同的Variant子類型。這對(duì)代碼的透明性和檢查變量是否包含合法值都是有用的,非法的轉(zhuǎn)換將導(dǎo)致運(yùn)行期錯(cuò)誤,轉(zhuǎn)換如下所示:
        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數(shù)據(jù)類型及轉(zhuǎn)換
        在JScript中,其他一些變量類型類似于VBScript,但是沒(méi)有代表對(duì)象的Variant。所有值都是對(duì)象,類型是下列六種數(shù)據(jù)類型之一:
        · undefined:只有單個(gè)值,用于表明請(qǐng)求中的變量沒(méi)有聲明和創(chuàng)建,或者若是隱含創(chuàng)建但還未分配任何值。類似于 VBScript的Empty。
        · Null:變量不包含一個(gè)有效的值。類似于VBScript的Nothing。
        · Boolean。
        · String。
        · Number。
        · Object。
        JScript提供了一個(gè)typeof函數(shù),返回表示數(shù)據(jù)的類型的字符串,例如:
        StrString = ‘30’;
        IntInteger = 12;
        Response.Write(typeof(strString));  //Write ‘string’ in the resulting page
        Response.Write(typeof(intInteger)); //Write ‘number’ in the resulting page
        每種數(shù)據(jù)類型都有toString方法和valueOf方法,toString方法將變量的值轉(zhuǎn)為一個(gè)字符串返回,valueOf方法把變量的值作為它的原有數(shù)據(jù)類型返回。
        (9)  JScript的級(jí)聯(lián)和加法問(wèn)題
        JScript在許多方面不同于VBScript,在一定程度上是因?yàn)闆](méi)有“&”級(jí)聯(lián)運(yùn)算符可用。當(dāng)使用加法運(yùn)算符時(shí),它先檢查變量的數(shù)據(jù)類型以決定要做什么。如果兩個(gè)變量都是數(shù)值,結(jié)果是數(shù)值的和。如果一個(gè)或兩個(gè)是字符串,結(jié)果是字符串的級(jí)聯(lián):
        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
        如果進(jìn)行加法的值超過(guò)兩個(gè),要看執(zhí)行的順序。下面的代碼進(jìn)行相應(yīng)的示范:
        intInteger = 12;
        Response.Write(intInteger + intInteger + “<P>”);  //Result is ‘24<P>’
        Response.Write(“<P>” + intInteger + intInteger + “</P>”);
                           ;                 &nbs p;                //Result is ‘<P>1212</P>’
        在第一種情況下,兩個(gè)數(shù)相加,結(jié)果被轉(zhuǎn)換為一個(gè)字符串并與“<P>”字符串進(jìn)行級(jí)聯(lián)。在第二種情況下,第一個(gè)運(yùn)算符是一個(gè)字符串和一個(gè)數(shù)的級(jí)聯(lián),所以數(shù)被轉(zhuǎn)換為一個(gè)字符串。而后,所有的運(yùn)算符都是級(jí)聯(lián)運(yùn)算符。為了避免這個(gè)問(wèn)題,可以使用括號(hào)強(qiáng)制第一個(gè)運(yùn)算符是兩個(gè)數(shù)值的加法:
        Response.Write(“<P>” + (intInteger + intInteger) + “</P>”);
                           ;                 &nbs p;            //Result is ‘<P>24</P>’
        1.     Web應(yīng)用程序中的組件管理
        在ASP中使用虛擬應(yīng)用程序的第二個(gè)主要方面是:具有較好的對(duì)在腳本代碼內(nèi)實(shí)例化和執(zhí)行的組件進(jìn)行管理的能力。先不討論有關(guān)它怎樣進(jìn)行工作以及為什么會(huì)如此有用的詳細(xì)情況,在學(xué)習(xí)ASP組件的部分時(shí)再討論相關(guān)內(nèi)容。
        這里非常簡(jiǎn)要地介紹在ASP網(wǎng)頁(yè)(此ASP網(wǎng)頁(yè)在該應(yīng)用程序中)中使用組件時(shí),如何對(duì)一個(gè)虛擬應(yīng)用程序在Properties對(duì)話框(在Internet Services Manager中)進(jìn)行設(shè)置。
        在一個(gè)虛擬應(yīng)用程序的Properties對(duì)話框的Home Directory頁(yè)的底部,有兩個(gè)組合框,為Execute Permissions和 Application Protection,如圖3-9所示:

        圖3-9 Execute Permissions和Application Protection組合框
        應(yīng)用的保護(hù)和執(zhí)行設(shè)置
        因?yàn)樵诒菊轮校挥懻撛谝粋(gè)Web網(wǎng)頁(yè)內(nèi)如何創(chuàng)建組件的實(shí)例,因此這里先列出這些選項(xiàng),在創(chuàng)建應(yīng)用程序時(shí)可能要對(duì)此進(jìn)行設(shè)置。Execute Permissions 選項(xiàng)如表3-1所示:
        表3-1 Execute Permissions的選項(xiàng)及說(shuō)明
        選 項(xiàng) 
        說(shuō) 明 

        None 
        在這個(gè)虛擬應(yīng)用程序中不能運(yùn)行腳本或可執(zhí)行文件。實(shí)際上,提供了禁止一個(gè)應(yīng)用程序的快速和簡(jiǎn)單的方法  

        ScriptsOnly 
        只允許腳本文件(例如ASP、IDC或其他的)在這個(gè)虛擬應(yīng)用程序中運(yùn)行,不能運(yùn)行可執(zhí)行文件 

        Scriptsand Executables 
        允許任何的腳本和可執(zhí)行文件在這個(gè)虛擬應(yīng)用程序內(nèi)運(yùn)行 

        Execute Permissions選項(xiàng)控制可在該虛擬應(yīng)用程序中執(zhí)行的類型,而Application Protection選項(xiàng)影響可執(zhí)行文件和組件運(yùn)行的方式。在第1章中已經(jīng)討論過(guò)可用的選項(xiàng),但是在這里再重復(fù)一次,Application Protection選項(xiàng)如表3-2所示: 
        表3-2 Application Protection的選項(xiàng)及說(shuō)明
        選 項(xiàng) 
        說(shuō) 明 

        Low(IIS Process) 
        帶有這種設(shè)置的ASP虛擬應(yīng)用程序的所有可執(zhí)行文件和組件運(yùn)行在Web服務(wù)器的可執(zhí)行文件(Inetinfo.exe)的進(jìn)程(即內(nèi)存空間)中。因此,如果可執(zhí)行文件或組件之一失敗的話,Web服務(wù)器處于危險(xiǎn)狀態(tài)。這提供了最快和以最少的資源執(zhí)行的選項(xiàng) 

        Medium(Pooled) 
        (缺省)帶有這種設(shè)置的ASP虛擬應(yīng)用程序的所有應(yīng)用程序的可執(zhí)行文件和組件是運(yùn)行在DLLHost.exe的單個(gè)共享實(shí)例的進(jìn)程(即內(nèi)存空間)中。這就防止了Web服務(wù)器可執(zhí)行文件(Inetinfo.exe)受可執(zhí)行文件或組件失敗的影響。然而,一個(gè)失敗的可執(zhí)行文件或組件可能引起DLLHost.exe進(jìn)程失敗,以及所有其他駐留其中的可執(zhí)行文件和組件失敗  

        High(Isolated) 
        帶有這種設(shè)置的ASP虛擬應(yīng)用程序的所有應(yīng)用程序的可執(zhí)行部分和組件是運(yùn)行在DLLHost.exe的單個(gè)共享實(shí)例的進(jìn)程(即內(nèi)存空間)中,但是每個(gè)ASP應(yīng)用程序都有自己的DLLHost.exe實(shí)例,該實(shí)例對(duì)該應(yīng)用程序是獨(dú)占的。這就防止了Web服務(wù)器可執(zhí)行文件(Inetinfo.exe)受可執(zhí)行文件或組件失敗的影響,并防止虛擬應(yīng)用的單個(gè)共享實(shí)例受另一個(gè)虛擬應(yīng)用程序的一個(gè)可執(zhí)行文件或組件失敗的影響。Microsoft建議最多有十個(gè)這樣的虛擬應(yīng)用程序駐留在一個(gè)Web服務(wù)器上  


        3.2.2 ASP會(huì)話的定義
            ASP會(huì)話引入了一個(gè)Web應(yīng)用程序中粒度的下一層。ASP的Application對(duì)象可用來(lái)存儲(chǔ)對(duì)于“正在運(yùn)行此應(yīng)用程序”的所有用戶都是全局的和可訪問(wèn)的狀態(tài)(即簡(jiǎn)單變量、對(duì)象、數(shù)組等)。換句話說(shuō),用于響應(yīng)這個(gè)應(yīng)用程序內(nèi)所有訪問(wèn)者的請(qǐng)求的全部ASP代碼能夠?qū)@些值進(jìn)行訪問(wèn)(假設(shè)已經(jīng)建立了一個(gè)有效的會(huì)話,稍后將看到)。
            但是在多數(shù)情況下這還不夠。需要具備存儲(chǔ)指定給每個(gè)用戶的值的能力,而不必通過(guò)給這些值分配名字指明其隸屬于哪個(gè)用戶。例如,下列值很可能弄亂應(yīng)用程序的全局存儲(chǔ)空間:
            MikeJones003PrefFGColor = “darkblue”
            MikeJones003PrefBGColor = “white”
            MikeJones003PrefLinkClolr = “green”
            PriscillaDelores001PrefFGColor = “red”
            PriscillaDelores001PrefBGColor = “darkgrey”
            ...
            etc.
            從載入系統(tǒng)資源和要求一些代碼訪問(wèn)每個(gè)用戶的相應(yīng)會(huì)話的角度來(lái)看,還有另外的不足之處。只要有訪問(wèn)者,該應(yīng)用程序就一直存在,這意味著應(yīng)用程序的全局存儲(chǔ)空間需要不斷增大,除非在用戶離開(kāi)該網(wǎng)站時(shí)采取步驟刪除這些值。
            在Web應(yīng)用程序中提供用戶層作用域
            除了使用全局變量的存儲(chǔ)以外,應(yīng)該為每個(gè)訪問(wèn)者分配他們自己的私有變量存儲(chǔ)空間,使其對(duì)指定訪問(wèn)者載入的所有頁(yè)面都可用的。這種情況下,可以對(duì)每個(gè)變量使用相同的名字,使ASP代碼非常簡(jiǎn)單地得以實(shí)現(xiàn)。這些相同的代碼對(duì)每個(gè)用戶將透明地進(jìn)行工作,因?yàn)樵L問(wèn)的只是訪問(wèn)者擁有的私有存儲(chǔ)區(qū)域:
               PrefFGColor = “darkblue”
               PrefBGColor = “white”
               PrefLinkColor = “green”
               這就是Session對(duì)象產(chǎn)生的地方。
        (1)    會(huì)話存儲(chǔ)的內(nèi)容
        會(huì)話存儲(chǔ)的內(nèi)容對(duì)指定的訪問(wèn)者是全局的,而對(duì)其他訪問(wèn)者來(lái)講是私有的,這使得ASP的會(huì)話非常有用。可以用來(lái)存儲(chǔ)在 ASP Application對(duì)象中存儲(chǔ)的相同類型的數(shù)據(jù),即:
        · 簡(jiǎn)單變量,例如字符串和數(shù)值(像所有的ASP腳本變量一樣存儲(chǔ)為Variant)。
        · Variant數(shù)組,一維或多維。
        · 對(duì)一個(gè)COM對(duì)象的實(shí)例的變量引用(如同Variant)。
        (2)    會(huì)話帶來(lái)的問(wèn)題
        會(huì)話提供了一個(gè)存儲(chǔ)每個(gè)用戶特定的值的方法。然而有幾個(gè)意想不到的問(wèn)題要注意:
        · 記住一些瀏覽器和Web服務(wù)器對(duì)URL、路徑和文件名的大小寫形式是敏感的(例如Navigator和基于UNIX/Linux的服務(wù)器)。如果把一個(gè)超級(jí)鏈接放置在網(wǎng)頁(yè)的一個(gè)URL上,并且它們不是同樣的書寫形式,則在瀏覽器中被認(rèn)為是不相同的。同樣,如果路徑和文件名的書寫形式不是相同的,則瀏覽器認(rèn)為是不同的路徑或文件。對(duì)于在服務(wù)器上的定位資源來(lái)講,這并不重要,因?yàn)镮IS對(duì)書寫形式不敏感,可以接受大寫形式和小寫形式的任何組合,并返回書寫形式不同的具有相同字符的文件。然而,如果一個(gè)cookie已經(jīng)指定了一個(gè)路徑,而且與在超級(jí)鏈接中所指定的路徑在書寫形式上不同,瀏覽器可能不會(huì)把它以及相應(yīng)目錄的頁(yè)面一起返回給服務(wù)器。這有可能找不到依賴于這個(gè)cookie的一個(gè)用戶會(huì)話,并且Session對(duì)象將不會(huì)在作用域中(即其中的任何變量都是不可用的)。因此,在所有的目錄和網(wǎng)頁(yè)名字中,堅(jiān)持都采用小寫形式或者是比較明顯的混合字母形式,是一個(gè)好辦法。
        · 在IIS和ASP的早期版本中,對(duì)于嵌套的應(yīng)用程序還有一些小的“Bug”,有時(shí),當(dāng)用戶離開(kāi)嵌套的ASP虛擬應(yīng)用程序并返回到缺省的ASP應(yīng)用程序?qū)訒r(shí),與嵌套應(yīng)用程序內(nèi)部已經(jīng)定義的局部變量相同的名字的任何全局變量不能重新顯現(xiàn)。還有,當(dāng)會(huì)話使用Session.Abandon方法(稍后將會(huì)看到)終止時(shí),global.asp文件中的代碼將執(zhí)行失敗。在ASP 3.0中已經(jīng)解決了這些問(wèn)題。
        · 記住會(huì)話依賴于cookie。如果訪問(wèn)者已經(jīng)禁止使用cookie或者瀏覽器不支持cookie,將不能啟動(dòng)一個(gè)會(huì)話,并且不能訪問(wèn)Session對(duì)象。
        (3)    禁止會(huì)話
        雖然狀態(tài)提供了有益環(huán)境,但讓用戶門戶大開(kāi)。如果不需要保留狀態(tài),可以禁止會(huì)話以節(jié)約計(jì)算機(jī)的處理時(shí)間。例如,在一個(gè)不需要跟蹤訪問(wèn)者或不需要為訪問(wèn)者保留全局值的Web網(wǎng)站上,可以防止會(huì)話啟動(dòng),通過(guò)在Internet Services Manager中設(shè)置屬性,或?yàn)椴恍枰獱顟B(tài)的獨(dú)立網(wǎng)頁(yè)增加代碼(稍后將看到)。
        為了禁止整個(gè)Web網(wǎng)站的所有會(huì)話,可編輯缺省Web網(wǎng)站應(yīng)用程序的屬性。為了禁止一個(gè)指定應(yīng)用程序的會(huì)話,可編輯相應(yīng)虛擬應(yīng)用程序的屬性。打開(kāi)相應(yīng)的應(yīng)用程序的Properties對(duì)話框,在Home Directory頁(yè)上單擊Configuration按鈕,如圖3- 10所示:

        圖3-10 Home Directory頁(yè)
        在出現(xiàn)的Configuration對(duì)話框中,打開(kāi)App Option。這里可以允許或禁止整個(gè)應(yīng)用程序的會(huì)話(在本例中是整個(gè)缺省Web 站點(diǎn)),也可以修改缺省的會(huì)話Timeout值。在圖3-11中可以看到Timeout設(shè)置為20min。在ASP的早期的版本中這是缺省值,可根據(jù)要求設(shè)置相應(yīng)的值(在ASP 3.0中,缺省值是10min)。


        圖3-11 App Options頁(yè)
        如果要禁止一個(gè)指定網(wǎng)頁(yè)的會(huì)話,同時(shí)允許它們?cè)谕粋(gè)應(yīng)用程序的其他網(wǎng)頁(yè)中創(chuàng)建和使用,可為該頁(yè)面增加一條ASP處理指令。它跟在指定缺省語(yǔ)言的語(yǔ)句后(如果沒(méi)指定一個(gè)缺省語(yǔ)言,可單獨(dú)使用該指令):
        <%@LANGUAGE=”VBScript” ENABLESESSIONSTATE=”False”%>到此為止,大致介紹了ASP應(yīng)用程序和Session對(duì)象的一些情況,下面詳細(xì)地進(jìn)行討論。

        溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 亚洲欧洲精品成人久久曰| 免费一区二区无码视频在线播放 | 四虎最新永久免费视频| 老司机午夜在线视频免费观| sss日本免费完整版在线观看| eeuss在线兵区免费观看| 四虎影视永久免费观看| 亚洲精品亚洲人成在线| 在线免费观看韩国a视频| 中国一级全黄的免费观看| 91短视频在线免费观看| 全部免费毛片免费播放| 精品亚洲AV无码一区二区| 一个人看的免费高清视频日本| 亚洲性日韩精品一区二区三区| 亚洲色图综合网站| 亚洲黄色一级毛片| 无码国产精品一区二区免费 | 亚洲精品偷拍视频免费观看| 亚洲人成网站观看在线播放| 亚洲国产成人久久三区| 毛片免费视频观看| 精品在线免费视频| 亚洲国产婷婷六月丁香| 国产精品无码亚洲一区二区三区| 99久久久国产精品免费无卡顿| 亚洲一区二区三区无码中文字幕| 精品久久久久久亚洲中文字幕| 免费一级毛片在线播放| 久久成人18免费网站| 久久久亚洲欧洲日产国码农村| 99久久久精品免费观看国产| 美女被羞羞网站免费下载| 久久香蕉国产线看观看亚洲片| 一区在线免费观看| 亚洲毛片在线观看| 国产成人免费爽爽爽视频| 亚洲日韩精品A∨片无码加勒比| 亚洲一区二区三区香蕉| 一二三四在线观看免费高清中文在线观看 | 丁香花免费完整高清观看|