ASP中的內(nèi)建對象學(xué)習(xí)課件_第1頁
ASP中的內(nèi)建對象學(xué)習(xí)課件_第2頁
ASP中的內(nèi)建對象學(xué)習(xí)課件_第3頁
ASP中的內(nèi)建對象學(xué)習(xí)課件_第4頁
ASP中的內(nèi)建對象學(xué)習(xí)課件_第5頁
已閱讀5頁,還剩98頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

在面向?qū)ο缶幊讨?,對象就是指由?dāng)作完整實體的操作和數(shù)據(jù)組成的變量,是基于特定模型的。在對象中客戶使用對象的服務(wù),通過由一組方法或相關(guān)函數(shù)的接口訪問對象的數(shù)據(jù),然后客戶端調(diào)用這些方法執(zhí)行某種操作。ASP提供了可在腳本中使用的內(nèi)建對象。通過這些對象,用戶更容易收集通過瀏覽器請求發(fā)送的信息,響應(yīng)瀏覽器以及存儲用戶信息,從而使對象開發(fā)者擺脫很多煩瑣的工作。6.1 在HTML中使用表單表單在HTML頁面中起著重要作用,它是與用戶交互信息的主要手段。一個表單至少應(yīng)該包括說明性文字、用戶填寫的表格、提交和重填按鈕等內(nèi)容。用戶填寫了所需的資料之后,按下“提交”按鈕,所填資料就會通專門的CGI接口傳到Web服務(wù)器上。網(wǎng)頁的設(shè)計者隨后就能在Web服務(wù)器上看到用戶填寫的資料,從而完成了從用戶到作者之間的反饋和交流。表單中主要包括下列元素:

button——普通按鈕

radio——單選按鈕

checkbox——復(fù)選框Select——下拉式菜單

text——單行文本框

textarea——多行文本框

submit——提交按鈕

reset——

重填按鈕用HTML設(shè)計表單常用的標(biāo)記是:<form>、<input>、<option>、<select>、<textarea>和<isindex>等標(biāo)記。6.1.1表單標(biāo)記<form><form>標(biāo)記的主要作用是設(shè)定表單的起止位置,并指定處理表單數(shù)據(jù)程序的url地址?;菊Z法如下:<formaction=urlmethod=get|postname=valueonreset=functiononsubmit=functiontarget=window></form>其中:action:用于設(shè)定處理表單數(shù)據(jù)程序url的地址,這樣的程序通常是CGI應(yīng)用程序,例如采用電子郵件方式時,用action=“mailto:你的郵件地址”。method:指定數(shù)據(jù)傳送到服務(wù)器的方式,有兩種主要的方式,當(dāng)method=get時,將輸入數(shù)據(jù)加在action指定的地址后面?zhèn)魉偷椒?wù)器;當(dāng)method=post時,則將輸入數(shù)據(jù)按照HTTP傳輸協(xié)議中的post傳輸方式傳送到服務(wù)器,用電子郵件接收用戶信息采用這種方式。name:用于設(shè)定表單的名稱。

onreset和onsubmit:主要針對“reset”按鈕和“submit”按鈕來說的,分別設(shè)定了在按下相應(yīng)的按鈕之后要執(zhí)行的子程序。target:指定輸入數(shù)據(jù)結(jié)果顯示在那個窗口,這需要與<frame>標(biāo)記配合使用。6.1.2表單輸入標(biāo)記<input>此標(biāo)記在表單中使用頻繁,大部分表單內(nèi)容需要用到此標(biāo)記。語法如下:<inputaligh=left|righ|top|middle|bottomname=valuetype=text|textarea|password|checkbox|radio|submit|reset|file|hidden|image|buttonvalue=valuesrc=urlcheckedmaxlength=nsize=nonclick=functiononselect=function>其中:align:用于設(shè)定表單的位置是靠左(left)、靠右(right)、居中(middle)、靠上(top),還是靠底(bottom)。name:設(shè)定當(dāng)前變量名稱。

type:決定了輸入數(shù)據(jù)的類型。其選項較多,各項的意義是:

text:表示輸入單行文本;

textarea:表示輸入多行文本;password:表示輸入數(shù)據(jù)為密碼,用星號表示;checkbox:表示復(fù)選框;radio:表示單選框;submit:表示提交按鈕,數(shù)據(jù)將被送到服務(wù)器;

reset:表示清除表單數(shù)據(jù),以便重新輸入;file:表示插入一個文件;hidden:表示隱藏按鈕;image:表示插入一個圖像;button:表示普通按鈕;value:用于設(shè)定輸入默認(rèn)值,即如果用戶不輸入的話,就采用此默認(rèn)值;src:是針對type=image的情況來說的,設(shè)定圖像文件的地址;checked:表示選擇框中,此項被默認(rèn)選中;maxlength:表示在輸入單行文本的時候,最大輸入字符個數(shù);size:用于設(shè)定在輸入多行文本時的最大輸入字符數(shù),采用width,height方式;onclick:表示在按下輸入時調(diào)用指定的子程序;onselect:表示當(dāng)前項被選擇時調(diào)用指定的子程序。6.1.3下拉菜單標(biāo)記<select>用<select>標(biāo)記可以在表間中插入一個下拉菜單,它需與<option>標(biāo)記聯(lián)用,因為下拉菜單中的每個選項要用<option>標(biāo)記來定義。<select>標(biāo)記的語法如下:<selectname=nametextsize=nmultiple>其中:name:設(shè)定下拉式菜單的名稱;size:設(shè)定菜單框的高度,也就是一次顯示幾個菜單項,一般取默認(rèn)值(size="1");multiple:設(shè)定為可以進行多選。6.1.4選項標(biāo)記<option>

該標(biāo)記為下拉菜單中一個選項,語法很簡單:<optionselectedvalue=value>其中:selected:表示當(dāng)前項被默認(rèn)選中;value:表示該項對應(yīng)的值,在該項被中之后,該項的值就會被送到服務(wù)器進行處理。6.1.5多行文本輸入標(biāo)記<textarea>這是一個建立多行文本輸入框的專用標(biāo)記,其語法如下:<textareaname=namecols=nrows=nwrap=off|hard|soft>其中:name:文本框名稱;cols:寬度;rows:高度(行數(shù));wrap:換行控制;off:不自動換行;hard:自動硬回車換行,換行標(biāo)記一同被傳送到服務(wù)器中去;soft:自動軟回車換行,換行標(biāo)記不會傳送到服務(wù)器中去。表單所涉及的標(biāo)記較多,參數(shù)也較復(fù)雜,而在實際制作表單時就是這些標(biāo)記的組合應(yīng)用。一般的表單不可能涉及所有參數(shù),選擇參數(shù)時盡量用默認(rèn)值,不設(shè)定一個不用的參數(shù)。6.2Request對象Request對象是ASP編程中使用最頻繁的對象之一??梢允褂肦equest對象訪問任何基于HTTP請求傳遞的所有信息,包括從HTML表格用POST方法或GET方法傳遞的參數(shù)、cookie和用戶認(rèn)證等。通過Request對象能夠訪問客戶端發(fā)送給服務(wù)器的二進制數(shù)據(jù)。Request的語法:Request[.集合|屬性|方法](變量)其中,集合可以被指定為Form或者QueryString。變量即提交頁面中使用的Form對象的變量名。6.2.1Form集合Form集合通過使用POST方法的表格檢索發(fā)送到HTTP請求正文中的表格元素的值。語法:Request.Form(element)[(index)|.Count]其中:element指定集合要檢索的表格元素的名稱。index可選參數(shù),使用該參數(shù)可以訪問某參數(shù)中多個值中的一個。它可以是1到Request.Form(parameter).Count之間的任意整數(shù)。Count集合中元素的個數(shù)。圖6-2調(diào)查表

Form:集合按請求正文中參數(shù)的名稱來索引.Request.Form(element)的值是請求正文中所有element值的數(shù)組。通過調(diào)用Request.Form(element).Count來確定參數(shù)中值的個數(shù)。如果參數(shù)未關(guān)聯(lián)多個值,則計數(shù)為1。如果找不到參數(shù),計數(shù)為0。要引用有多個值的表格元素中的單個值,必須指定index值。index參數(shù)可以是從1到Request.Form(element).Count中的任意數(shù)字。如果引用多個表格參數(shù)中的一個,而未指定index值,返回的數(shù)據(jù)將是以逗號分隔的字符串。

對于圖6-2調(diào)查表中的多個“愛好”參數(shù),可以使用程序6.2來檢索這些值。程序6.2sample6-02.asp<html><head><title></title></head><body><p>請?zhí)顚懩愕膼酆?lt;/p><formmethod="POST"action="form.asp"><p><inputtype="text"name="hobby"size="20"><br><inputtype="checkbox"name="hobby"value="足球">足球<inputtype="checkbox"name="hobby"value="乒乓球">乒乓球</p><p><inputtype="submit"value="發(fā)送"name="B1"><inputtype="reset"value="重填"name="B2"></p></form><%ForEachiInRequest.Form("hobby")Response.Writei&"<BR>"Next%></body></html>當(dāng)然使用For...Next循環(huán)也可以生成同樣的輸出,如下所示:<%Fori=1ToRequest.Form("hobby").CountResponse.WriteRequest.Form("hobby")(i)&"<BR>"Next%>

6.2.2QueryString集合QueryString集合用來檢索HTTP查詢字符串中變量的值,HTTP查詢字符串由問號(?)后的值指定。如:<ahref="example.asp?string=thisisasample">stringsample</a>生成值為"thisisasample"的變量名字符串。通過發(fā)送表格或由用戶在其瀏覽器的地址框中鍵入查詢也可以生成查詢字符串。語法:Request.QueryString(variable)[(index)|.Count]QueryString集合可以用名稱來檢索QUERY_STRING變量。Request.QueryString(參數(shù))的值是出現(xiàn)在QUERY_STRING中所有參數(shù)的值的數(shù)組。通過調(diào)用Request.QueryString(parameter).Count可以確定參數(shù)有多少個值。也可以使用QueryString來達到與前一個范例相同的功能。只需要將request.form部分替換如下:<%

ForEachiInRequest.querystring("hobby")Response.Writei&"<BR>"

Next%>

6.2.3Cookies1.什么是Cookies?Cookie其實就是一個標(biāo)簽。在訪問一個需要唯一標(biāo)識你的地址的Web站點時,它會在你的硬盤上留下一個標(biāo)記,下一次再次訪問這個站點時,站點的頁面就會查找這個標(biāo)記。每個Web站點都有自己的標(biāo)記,標(biāo)記的內(nèi)容可以隨時讀取,但只能由該站點的頁面完成。每個站點的Cookie與其它所有站點的Cookie存在同一文件夾中的不同文件內(nèi)(Windows2000系統(tǒng)下,可以在C:\DocumentsandSettings\Administrator\Cookies的目錄下找到它們)。

一個Cookie就是一個唯一標(biāo)識客戶的標(biāo)記,Cookie可以包含在一個對話期或幾個對話期之間某個Web站點的所有頁面共享的信息,使用Cookie還可以在頁面之間交換信息。Request提供的Cookies集合允許用戶檢索在HTTP請求中發(fā)送的cookie的值。這項功能經(jīng)常被使用在要求認(rèn)證客戶密碼以及電子公告板、Web聊天室等ASP程序中。語法:Request.Cookies(cookie)[(key)|.attribute]其中:cookie指定要檢索其值的cookie。key是可選參數(shù),用于從cookie字典中檢索子關(guān)鍵字的值。attribute指定cookie自身的有關(guān)信息。如:HasKeys只讀,指定cookie是否包含關(guān)鍵字??梢酝ㄟ^包含一個key值來訪問cookie字典的子關(guān)鍵字。如果訪問cookie字典時未指定key,則所有關(guān)鍵字都會作為單個查詢字符串返回。例如,如果MyCookie有兩個關(guān)鍵字,First和Second,而在調(diào)用Request.Cookies時并未指定其中任何一個關(guān)鍵字,那么將返回下列字符串。First=firstkeyvalue&Second=secondkeyvalue

如果客戶端瀏覽器發(fā)送了兩個同名的cookie,那么Request.Cookie將返回其中路徑結(jié)構(gòu)較深的一個。例如,如果有兩個同名的的cookie,但其中一個的路徑屬性為/www/而另一個為/www/home/,客戶端瀏覽器同時將兩個cookie都發(fā)送到/www/home/目錄中,那么Request.Cookie將只返回第二個cookie。

要確定某個cookie是不是cookie字典(cookie有否有關(guān)鍵字),可使用下列腳本。<%=Request.Cookies("myCookie").HasKeys%>

如果myCookie是一個cookie字典,則前面的賦值為TRUE。否則為FALSE。下面看一個cookie的應(yīng)用實例。程序6.3sample6-03.asp<%nickname=request.form("nick")response.cookies("nick")=nickname'用

response對象將用戶名寫入

Cookie之中

response.write"歡迎"&request.cookies("nick")&"光臨小站!"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>cookie</title><metaname="GENERATOR"content="MicrosoftFrontPage3.0"></head><body><formmethod="POST"action="cookie.asp"><p><inputtype="text"name="nick"size="20"><inputtype="submit"value="發(fā)送"name="B1"><inputtype="reset"value="重填"name="B2"></p></form></body></html>這其實是一個在基于Web的BBS或CHAT的ASP程序中常用的手法,它將用戶在起始頁面上所填入的姓名保存在cookie中,這樣后面的程序就可以很容易地調(diào)用該用戶的nick了。2.Cookie的工作原理Cookies將通過HTTPHeaders來從服務(wù)端返回到瀏覽器上。服務(wù)端首先在響應(yīng)中利用Set-Cookieheader來創(chuàng)建一個Cookie,瀏覽器后面的請求的cookieheader中就會返回這個Cookie來完成瀏覽器的認(rèn)證。假設(shè)創(chuàng)建了一個名字為UserName的Cookie來包含訪問者的信息,創(chuàng)建Cookie時,Server的Header就象下面(假設(shè)訪問者為BillGates):Set-Cookie:UserName=BILL+Gates;path=/;domain=aspsite.com;expires=Tuesday,01-Jan-9900:00:01GMT

這個Header就在瀏覽器的電腦上的Cookie文件中添加了一條記錄。瀏覽器將名字為UserName的Cookie賦值為BillGates。請注意這個cookie的值是進行了URL-encoded操作的。瀏覽器創(chuàng)建了一個Cookie后,在每一個針對該網(wǎng)站的請求時都會在Header中帶著這個Cookie,也就是每一次滿足該路徑的情況下這個Cookie都會有效。不過,對于其它網(wǎng)站的請求Cookie是絕對不會跟著發(fā)送的。瀏覽器會這樣一直發(fā)送到Cookie過期為止。CookieHeader如下:cookie:username:Bill+Gates3.在ASP中創(chuàng)建和讀取Cookies當(dāng)利用ASP創(chuàng)建了一個cookie之后,就可以使用Response對象的Cookie集合了??梢詣?chuàng)建兩種cookie:一種是單值的;另一種可以認(rèn)為是cookie字典類型,即允許多個鍵值對的存在。創(chuàng)建單值的相對簡單,如下腳本:<%Response.Cookies("Username")="BillGates"Response.Cookies("Username").Expires="Jan1,1999"%>

顯然,這個腳本將名字為Username的Cookie賦值為BillGates,同時將過期時間限定為1999年1月1日。這里面需要說明的是,Expires屬性如果不進行賦值,那么默認(rèn)的就是用戶一離開網(wǎng)站就過期。由于這個例子腳本創(chuàng)建的是Header的部分,那么就必須在ASP的任何輸出語句之前進行這個腳本的操作,或者使用Buffer輸出。前面的腳本是創(chuàng)建一個Cookie的簡單示例,只是使用了最常用的Expires屬性,其實還有許多其他屬性也可以自行設(shè)置,下面是一個比較完全的例子:<%Response.Cookies("Username")="SteveJobs"Response.Cookies("Username").Expires="Jan1,1999"Response.Cookies("Username").Path="/examples"Response.Cookies("Username").Domain="aspsite.com"Response.Cookies("Username").Secure=True%>

這個腳本例子和前面的其實沒有什么區(qū)別,不過有三個附加的屬性需要解釋:

Path屬性是用來更加嚴(yán)格的限定瀏覽器發(fā)送Cookie,在這個例子中,只有針對于/examples目錄的請求的Header中才攜帶Cookie信息,例如/examples/hello.asp以及/examples/chapter16/hello.asp的請求都會在Header上攜帶Cookie信息,但是如果是瀏覽器對/hello.asp的請求就不會攜帶該Cookie信息。Path屬性的默認(rèn)值是該Cookie創(chuàng)建的ASP所在的路徑。(也就是說,即便不做指定,也不會跨過目

錄發(fā)送Cookie)

Domain屬性,限定了Cookie發(fā)送的網(wǎng)站,例子中的aspsite.com說明cookie可以被發(fā)送到www.aspsite.com或者beetle.aspsite.com或者yeah.aspsite.com等等,同樣作為默認(rèn)值是該Cookie創(chuàng)建的網(wǎng)站。最后是Secure屬性,當(dāng)該屬性設(shè)為True時,則傳遞中就實行了加密算法,如果你正在使用安全接口層,那么就可以使用這個屬性。在一個ASP中讀取cookie,只需要使用Request對象的Cookies集合。例如,輸出一個cookie值,那么腳本如下:<%=Request.Cookies("Username")%>這個腳本將名字為Username的Cookie值進行了輸出,和以前同樣的是,依然可以利用ForEach循環(huán)或者利用Count屬性和For…Next循環(huán)結(jié)合的方式來將Cookie集合的所有

屬性值顯示出來,下面這個例子的運行結(jié)果應(yīng)當(dāng)無須解釋了。<%ForEACHthingINRequest.CookiesResponse.write("<BR>"&thing&Request.Cookies(thing))NEXT%>4.創(chuàng)建多個Cookie要創(chuàng)建多個Cookie,只需在Response對象的Cookies集合中簡單的定義多個名稱就可以。不過,許多瀏覽器對一個指定網(wǎng)站就限定了三到四個Cookie。

創(chuàng)建多個Cookie還有一種選擇,就是創(chuàng)建一個Cookie字典,那么一個Cookie字典中就可以含有多個鍵值對,下面是這么一個字典的例子:<%Response.Cookies("User")("Name")="BillGates"Response.Cookies("User")("Password")="billions"%>

這個腳本創(chuàng)建了一個名為User的Cookie字典,其中含有兩個鍵分別是Name和Password,當(dāng)這個Cookie字典創(chuàng)建時,請求的Header中是這樣的信息:Set-Cookie:User=Name=Bill+Gates&Password=billions上面的語句創(chuàng)建了一個名字為User的Cookie,它含有兩個鍵值對,這意味著所有的鍵和相應(yīng)的值都在一個大的Cookie中。接受這樣的Cookie值,還可以利用以前的Response對象的Cookies集合,既可以將其全部顯示,(這樣顯示就是沒有經(jīng)過解碼的Header中的源代碼,也就是上面Header中的信息,這樣一般都是用于調(diào)試工作)也可以按每一個鍵的相應(yīng)名稱顯示相應(yīng)值,如下例:

<%=Request.Cookies("User")%><%=Request.Cookies("User")("Name")%><%=Request.Cookies("User")("Name")%>

利用Cookie技術(shù)傳遞諸如密碼這樣的信息要特別小心,因為一般說來,這種信息是未經(jīng)加密的,當(dāng)然,如果網(wǎng)站有安全接口層技術(shù),也可以進行加密傳輸,但是在瀏覽器端該信息還是存放在文本文件中。如果希望知道一個Cookie是否是一個Cookie字典,可以用HasKeys屬性,例如下面腳本如果返回值為True,那么就是一個Cookie字典。<%=Request.Cookies("User").HasKeys%>5.不利用Cookie來保持信息前面已經(jīng)介紹過QueryString字段的使用及接收,以及Form的接收。這兩種手段也可以進行一些信息保存,最后對這三種方案進行綜合比較。(1)利用QueryString來保持信息由于可以在連接中添加任何QueryString字段,那么,只要在網(wǎng)站的所有連接中添加一個保存用戶某種信息的字段,再在各個程序上進行相應(yīng)處理,就可以進行模擬跟蹤,如下例:<HTML><HEAD><TITLE>Query字段進行信息保留</TITLE></HEAD><BODY><%Username=Server.URLEncode("BillGates")%><AHref="/nextpage.asp?<%=UserName%>">點擊這里</a></BODY></HTML>這個腳本將BillGates賦值給Username的變量,然后將它通過QueryString傳遞給nextpage.asp,那么在nextpage.asp中就可以接受,然后繼續(xù)進行這個參數(shù)的傳遞。例如:下面就是nextpage.asp的一個示例:<HTML><HEAD><TITLE>NextPage</TITLE></HEAD><BODY><%Username=Server.URLEncode("Request.QueryString("Username"))%><AHREF="/thirdpage.asp?<%=Username%>">點擊這里</a></body></html>

這個腳本的優(yōu)點是適用于所有瀏覽器,但是用這樣的傳遞來保存信息實在太麻煩了,所有的連接都要考慮到,每一個ASP都必須相應(yīng)處理一下,而且用戶很可能“一不小心”就溜出了這種跟蹤之外。另外,修改起來也過于麻煩。另一個缺點是針對不同的瀏覽器必須考慮長度限制,同時安全性沒有保證。

(2)利用Form的hidden類型進行信息傳遞如果確實需要傳遞大量信息而又不想選用Session變量,那么只有利用Form的Hidden類型。如下例:

<HTML><HEAD><TITLE>Form傳參示例</TITLE></HEAD><BODY><%Username="BillGates"%><FORMMETHOD="Post"Action="/nextpage.asp"><INPUTName="Username"TYPE="HIDDEN"VALUE="<%=Username%>"><inputtype="submit"name="下一頁"></Form></Body></HTML>

這個頁面包括一個表單,其中有一個隱含類型名字為Username,同時賦予Username變量的值。表單上有一個Submit按鈕,當(dāng)按鈕點擊后,在hiden類型中存放的Username的值將傳遞到下一個網(wǎng)頁上,在下一個網(wǎng)頁進行處理,然后以同樣方式傳遞到另外一個新的主頁上,下面是nextpage.asp的例子:<HTML><HEAD><TITLE>下一頁</TITLE></HEAD><BODY><%Username=Request.Form("Username")%><FORMMETHOD="Post"Action="/thirdpage.asp"><inputname="Username"Type="hidden"Value="<%=Username%>"><inputtype=submitvalue="再下一頁"></Form></Body></Html>(3)兩種方法的結(jié)合這兩種方法實現(xiàn)起來都十分麻煩,但是,如果偏要不用Cookies和Session變量來傳遞信息,確實也別無良策。同時,這兩種方法確實可以適用于任何瀏覽器。請注意,如果在任意一頁中沒有進行這種QueryString字段或者h(yuǎn)idden類型的表單的處理,那么這種跟蹤就停止了。一個明顯的缺點是不管利用QueryString字段還是利用HiddenForm傳遞信息,安全性都是毫無保證的,這是由于瀏覽器對信息的接受是在幾乎毫無屏障的情況下進行的。完全可以將這兩種方法結(jié)合起來,而在接受時可以沒有任何區(qū)別。這里面補充的是,對于Response對象,可以不指定Form集合和QueryString集合來進行接受,這時系統(tǒng)會自動辨認(rèn)。見下面這個例子:

<HTML><HEAD><TITLE>下一頁</TITLE></HEAD><BODY><%Username=Request("Username")%><!注:就是上面這個腳本,QueryString和hidden的Form都可以正確接收><FormMethod="Post"Action="/nextpage.asp"><inputname="Username"Type="Hidden"Value="<%=Username%>"><inputtype=Submitvalue="下一頁"></FORM><ahref=/nextpage.asp?<%=ServerURLEncode(Username)%>點擊這里</a></BODY></HTML>在這個例子中,變量Username被賦值而無須知道上一頁是利用的Hiddenform域還是QueryString來傳遞參數(shù)。在以后編制ASP時,這種Request("Username")形式的簡易調(diào)用將十分常用。

6.2.4ServerVariables

在瀏覽器中瀏覽網(wǎng)頁的時候使用的傳輸協(xié)議是HTTP,在HTTP的標(biāo)題文件中會記錄一些客戶端的信息,如:客戶的IP地址等等。有時服務(wù)器端需要根據(jù)不同的客戶端信息做出不同的反應(yīng),這時候就需要用ServerVariables集合獲取所需信息。語法:Request.ServerVariables(服務(wù)器環(huán)境變量)由于服務(wù)器環(huán)境變量較多,表5-1中僅列出了一些常用的變量。ALL_HTTP客戶端發(fā)送的所有HTTP標(biāo)題文件。CONTENT_LENGTH客戶端發(fā)出內(nèi)容的長度。CONTENT_TYPE內(nèi)容的數(shù)據(jù)類型。如:“text/html”。同附加信息的查詢一起使用,如HTTP查詢

GET、POST和PUT。LOCAL_ADDR返回接受請求的服務(wù)器地址。如果在綁定多個IP地址的多宿主機器上查找請求所使用的地址時,這條變量非常重要。LOGON_USER用戶登錄WindowsNT的帳號。QUERY_STRING查詢HTTP請求中問號(?)后的信息。

REMOTE_ADDR發(fā)出請求的遠(yuǎn)程主機(client)的

IP地址。

REMOTE_HOST發(fā)出請求的主機(client)名稱。如果服務(wù)器無此信息,它將設(shè)置為空的REMOTE_ADDR變量。REQUEST_METHOD該方法用于提出請求。相當(dāng)于用于HTTP的GET、HEAD、POST等等。SERVER_NAME出現(xiàn)在自引用URL中的服務(wù)器主機名、DNS或IP地址。SERVER_PORT發(fā)送請求的端口號。表5-1服務(wù)器環(huán)境變量

可以使用以下腳本打印出所有的服務(wù)器環(huán)境變量。

<TABLE><TR><TD><B>ServerVariable</B></TD><TD><B>Value</B></TD></TR><%ForEachnameInRequest.ServerVariables%><TR><TD><%=name%></TD><TD><%=Request.ServerVariables(name)%><%Next%></TD></TR></TABLE>一個非常有用的實例是,可以利用ServerVariables,如REMOTE_ADDR來規(guī)定來自哪些IP地址的客戶機可以訪問你的系統(tǒng),以保護你的頁面不被某些用戶瀏覽。這段代碼留給讀者完成。

6.3Response對象Request是獲取客戶端HTTP信息,相反Response對象用來控制發(fā)送給用戶的信息,包括直接發(fā)送信息給瀏覽器、重定向瀏覽器到另一個URL或設(shè)置cookie的值。語法:Response.collection|property|method

6.3.1屬性(1)BufferBuffer屬性指示是否緩沖頁輸出。當(dāng)緩沖頁輸出時,只有當(dāng)前頁的所有服務(wù)器腳本處理完畢或者調(diào)用了Flush或End方法后,服務(wù)器才將響應(yīng)發(fā)送給客戶端瀏覽器,服務(wù)器將輸出發(fā)送給客戶端瀏覽器后就不能再設(shè)置Buffer屬性。因此應(yīng)該在.asp文件的第一行調(diào)用Response.Buffer。(2)CharsetCharset

屬性將字符集名稱附加到Response對象中content-type標(biāo)題的后面。對于不包含Response.Charset屬性的ASP頁,content-type標(biāo)題將為:content-type:text/html。

可以在.asp文件中指定content-type標(biāo)題,如:<%Response.Charset="gb2312")%>將產(chǎn)生以下結(jié)果:content-type:text/html;charset=gb2312

注意,無論字符串表示的字符集是否有效,該功能都會將其插入content-type標(biāo)題中。且如果某個頁包含多個含有Response.Charset的標(biāo)記,則每個Response.Charset都將替代前一個CharsetName。這樣,字符集將被設(shè)置為該頁中Response.Charset的最后一個實例所指定值。(3)ContentTypeContentType屬性指定服務(wù)器響應(yīng)的HTTP內(nèi)容類型。如果未指定ContentType,默認(rèn)為text/html。(4)ExpiresExpires屬性指定了在瀏覽器上緩沖存儲的頁距過期還有多少時間。如果用戶在某個頁過期之前又回到此頁,就會顯示緩沖區(qū)中的頁面。如果設(shè)置response.expires=0,則可使緩存的頁面立即過期。這是一個較實用的屬性,當(dāng)客戶通過ASP的登陸頁面進入Web站點后,應(yīng)該利用該屬性使登陸頁面立即過期,以確保安全。(5)ExpiresAbsolute

與Expires屬性不同ExpiresAbsolute屬性指定緩存于瀏覽器中的頁面的確切到期日期和時間。在未到期之前,若用戶返回到該頁,該緩存中的頁面就顯示。如果未指定時間,該主頁在當(dāng)天午夜到期。如果未指定日期,則該主頁在腳本運行當(dāng)天的指定時間到期。如下示例指定頁面在1998年12月10日上午9:00分30秒到期。<%Response.ExpiresAbsolute=#Dec12,19989:00:30#%>

6.3.2方法(1)Clear方法可以用Clear方法清除緩沖區(qū)中的所有HTML輸出。但Clear方法只清除響應(yīng)正文而不清除響應(yīng)標(biāo)題??梢杂迷摲椒ㄌ幚礤e誤情況。但是如果沒有將Response.Buffer設(shè)置為TRUE,則該方法將導(dǎo)致運行時錯誤。(2)End方法End方法使Web服務(wù)器停止處理腳本并返回當(dāng)前結(jié)果。文件中剩余的內(nèi)容將不被處理。如果Response.Buffer已設(shè)置為TRUE,則調(diào)用Response.End將緩沖輸出。

(3)Flush方法Flush方法立即發(fā)送緩沖區(qū)中的輸出。如果沒有將Response.Buffer設(shè)置為TRUE,則該方法將導(dǎo)致運行時錯誤。(4)Redirect方法Redirect方法使瀏覽器立即重定向到程序指定的URL。這也是一個經(jīng)常用到的方法,利用此方法,程序員可以根據(jù)客戶的不同響應(yīng),為不同的客戶指定不同的頁面或根據(jù)不同的情況指定不同的頁面。一旦使用了

Redirect方法,任何在頁中顯式設(shè)置的響應(yīng)正文內(nèi)容都將被忽略。然而,此方法不向客戶端發(fā)送該頁設(shè)置的其它

HTTP標(biāo)題,將產(chǎn)生一個將重定向

URL作為鏈接包含的自動響應(yīng)正文。Redirect方法發(fā)送下列顯式標(biāo)題,其中

URL是傳遞給該方法的值。如:<%Response.redirect("www.edu.cn")%>(5)Write方法Write方法是平時最常用的方法之一,它是將指定的字符串寫到當(dāng)前的HTTP輸出。6.3.3集合Response對象只有一個集合——Cookie。Cookies集合設(shè)置cookie的值。若指定的cookie不存在,則創(chuàng)建它。若存在,則設(shè)置新的值并且將舊值刪去。語法:Response.Cookies(cookie)[(key)|.attribute]=value

這里的cookie是指定cookie的名稱。而如果指定了key,則該cookie就是一個字典。attribute指定cookie自身的有關(guān)信息。attribute參數(shù)可以是下列之一:Domain若被指定,則cookie將被發(fā)送到對該域的請求中去。Expires指定cookie的過期日期。為了在會話結(jié)束后將cookie存儲在客戶端磁盤上,必須設(shè)置該日期。若此項屬性的設(shè)置未超過當(dāng)前日期,則在任務(wù)結(jié)束后cookie將到期。HasKeys指定cookie是否包含關(guān)鍵字。Path若被指定,則cookie將只發(fā)送到對該路徑的請求中。如果未設(shè)置該屬性,則使用應(yīng)用程序的路徑。下面通過一段程序來說明Request和Response的應(yīng)用。程序sample6-04.asp<%DimuserDimflagDimpwdDimsayResponse.buffer=true'開啟緩沖頁面功能Response.ContentType="text/HTML"Response.Charset="gb2312"user=Request.Form("username")pwd=Request.Form("password")say=Request.QueryString("say")%>

<formmethod="POST"action="sample6-04.asp"><p>用戶名:<inputtype="text"name="username"size="12"><br>

令:<inputtype="password"name="password"size="12"><br><inputtype="submit"value="提交"name="B1"><inputtype="reset"value="取消"name="B2"></p></form><%Ifsay=1thenResponse.Write"歡迎光臨寒舍!"EndIfIfsay>1thenResponse.Write"歡迎再次光臨!"EndIfIfuser="adm"andpwd="adm"Then頁面輸出EndIf%><%Response.write"<p><ahref='sample6-05.asp?flag="&flag&"'>Web數(shù)據(jù)庫技術(shù)</a></p>"%>程序

sample6-05.asp:

<%Dimsaysay=Request.QueryString("flag")Response.writesaySelectcasesaycase"1"Response.Redirect"sample6-04.asp?say=1"case"2"Response.Redirect"sample6-04.asp?say=2"case"3"

Response.Redirect"sample6-04.asp?say=3"case"0"Response.Redirect"sample6-04.asp?say=0"EndSelect%>

將這兩個程序放在有執(zhí)行權(quán)限的

Web虛擬目錄下,并以http方式訪問sample6-04.asp。當(dāng)?shù)谝淮卧L問sample6-04.asp文件時,頁面上出現(xiàn)一個Form并提示輸入用戶名和口令,如果你輸入用戶名:adm;口令:adm,則會出現(xiàn)如圖6-3的頁面:圖6-3adm用戶首次訪問sample6-04.asp的結(jié)果如果輸入用戶名:guest;口令:guest,則僅出現(xiàn)如圖6-4的頁面:圖6-4guest用戶首次訪問sample6-04.asp的結(jié)果程序分析如下:由于設(shè)置了頁面緩存,當(dāng)使用guest登陸時,判斷程序自動清空其之前所有存儲在緩存中的頁面,而僅將其后腳本程序執(zhí)行的結(jié)果顯示出來。第一次sample6-04.asp頁面時僅僅顯示一個Form對話框,是因為此時程序判斷到用戶既非adm,也不是guest和vip,所以執(zhí)行Response.End,立即將存儲在緩存中的Form顯示出來,并停止其后的一切腳本處理,包括純HTML代碼的顯示。無論是用adm還是guest或vip登陸該頁面都可以看到一個超鏈接,該超鏈接指向文件web1.asp。當(dāng)點擊該超鏈接時,sample6-04.asp將變量flag的值作為參數(shù)發(fā)送給sample6-05.asp,而后者則根據(jù)該參數(shù)的值來做出判斷,并依據(jù)不同情況使用Response.Redirect再強行返回sample6-04.asp,并也將一個變量say的值作為參數(shù)發(fā)送給sample6-04.asp。如此一來,sample6-04.asp又會根據(jù)此參數(shù)來做出不同的反應(yīng)。6.4Application和Session對象

在ASP的內(nèi)建對象中除了用于發(fā)送、接收和處理數(shù)據(jù)的對象外,還有一些非常實用和重要的對象。在同一虛擬目錄及其子目錄下的所有.asp文件構(gòu)成了ASP應(yīng)用程序。使用Application對象,可以在給定的應(yīng)用程序的所有用戶之間共享信息,并在服務(wù)器運行期間持久的保存數(shù)據(jù)。而且,Application對象還有控制訪問應(yīng)用層數(shù)據(jù)的方法和可用于在應(yīng)用程序啟動和停止時觸發(fā)過程的事件。

6.4.1Application對象1.屬性雖然Application對象沒有內(nèi)置的屬性,但可以使用以下句法設(shè)置用戶定義的屬性,也可稱為集合。Application("屬性/集合名稱")=值使用如下腳本聲明并建立Application對象的屬性。<%Application("MyVar")="Hello"SetApplication("MyObj")=Server.CreateObject("MyComponent")%>一旦分配了Application對象的屬性,它就會持久地存在,直到關(guān)閉Web服務(wù)器服務(wù)使Application停止。由于存儲在Application對象中的數(shù)值可以被應(yīng)用程序的所有用戶讀取,所以Application對象的屬性特別適合在應(yīng)用程序的用戶之間傳遞信息。

2.方法Application對象有兩個方法,它們都是用于處理多個用戶對存儲在Application中的數(shù)據(jù)進行寫入的問題。(1)Lock方法禁止其他客戶修改Application對象的屬性

Lock方法阻止其他客戶修改存儲在Application對象中的變量,以確保在同一時刻僅有一個客戶可修改和存取Application變量。如果用戶沒有明確調(diào)用Unlock方法,則服務(wù)器將在.asp文件結(jié)束或超時后即解除對Application對象的鎖定。(2)Unlock方法允許其他客戶修改Application對象的屬性在上面的例子中,上述例子中,Unlock方法解除對象的鎖定,使得下一個客戶端能夠增加NumVisits的值。

3.事件(1)Application_OnStart

Application_OnStart事件在首次創(chuàng)建新的會話(即Session_OnStart事件)之前發(fā)生。當(dāng)Web服務(wù)器啟動并允許對應(yīng)用程序所包含的文件進行請求時就觸發(fā)Application_OnStart事件。Application_OnStart事件的處理過程必須寫在Global.asa文件之中。Application_OnStart事件的語法如下:<SCRIPTLANGUAGE=ScriptLanguageRUNAT=Server>SubApplication_OnStart…EndSub</SCRIPT>(2)Application_OnEnd

Application_OnEnd事件在應(yīng)用程序退出時于

Session_OnEnd事件之后發(fā)生,Application_OnEnd事件的處理過程也必須寫在

Global.asa文件之中。使用

Application對象時必須注意:

1)不能在Application對象中存儲ASP內(nèi)建對象。例如,下面的每一行都返回一個錯誤。

<%SetApplication("var1")=SessionSetApplication("var2")=RequestSetApplication("var3")=ResponseSetApplication("var4")=ServerSetApplication("var5")=ApplicationSetApplication("var6")=ObjectContext%>2)若將一個數(shù)組存儲在Application對象中,請不要直接更改存儲在數(shù)組中的元素。例如,下列的腳本無法運行。

<%Application("StoredArray")(3)="newvalue"%>

這是因為Application對象是作為集合被實現(xiàn)的。數(shù)組元素StoredArray(3)未獲得新的賦值。而此值將包含在Application對象集合中,并將覆蓋此位置以前存儲的任何信息。建議將數(shù)組存儲在Application對象中時,在檢索或改變數(shù)組中的對象前獲取數(shù)組的一個副本。在對數(shù)組操作時,應(yīng)再將數(shù)組全部存儲在Application對象中,這樣所做的任何改動將被存儲下來。下面的程序即采用了上述的方法。程序

sample6-07.asp<%dimMyArray()RedimMyArray(5)MyArray(0)="hello"MyArray(1)="someotherstring"Application.LockApplication("StoredArray")=MyArrayApplication.UnlockResponse.Redirect"sample6-08.asp"%>程序sample6-08.asp<%LocalArray=Application("StoredArray")LocalArray(1)="there"Response.WriteLocalArray(0)&LocalArray(1)Application.LockApplication("StoredArray")=LocalArrayApplication.Unlock%>6.4.2Session對象與Application對象具有相近作用的另一個非常實用的ASP內(nèi)建對象就是Session??梢允褂肧ession對象存儲特定的用戶會話所需的信息。當(dāng)用戶在應(yīng)用程序的頁之間跳轉(zhuǎn)時,存儲在Session對象中的變量不會清除,而用戶在應(yīng)用程序中訪問頁面時,這些變量始終存在。當(dāng)用戶請求來自應(yīng)用程序的Web頁時,如果該用戶還沒有會話,則Web服務(wù)器將自動創(chuàng)建一個Session對象。當(dāng)會話過期或被放棄后,服務(wù)器將終止該會話。通過向客戶程序發(fā)送唯一的Cookie可以管理服務(wù)器上的Session對象。當(dāng)用戶第一次請求ASP應(yīng)用程序中的某個頁面時,ASP要檢查HTTP頭信息,查看是否有在報文中有名為ASPSESSIONID的Cookie發(fā)送過來,如果有,則服務(wù)器會啟動新的會話,并為該會話生成一個全局唯一的值,在把這個值作為新ASPSESSIONIDCookie的值發(fā)送給客戶端,正是使用這種Cookie,可以訪問存儲在服務(wù)器上的屬于客戶程序的信息。Session對象最常見的作用就是存儲用戶的首選項。例如,如果用戶指明不喜歡查看圖形,就可以將該信息存儲在Session對象中。另外其還經(jīng)常被用在鑒別客戶身份的程序中。要注意的是,會話狀態(tài)僅在支持cookie的瀏覽器中保留,如果客戶關(guān)閉了Cookie選項,Session也就不能發(fā)揮作用了。1.屬性

(1)SessionID屬性

SessionID屬性返回用戶的會話標(biāo)識。在創(chuàng)建會話時,服務(wù)器會為每一個會話生成一個單獨的標(biāo)識。會話標(biāo)識以長整形數(shù)據(jù)類型返回。在很多情況下SessionID可以用于Web頁面注冊統(tǒng)計。

(2)TimeOut屬性Timeout屬性以分鐘為單位為該應(yīng)用程序的Session對象指定超時時限。如果用戶在該超時時限之內(nèi)不刷新或請求網(wǎng)頁,則該會話將終止。

2.方法Session對象僅有一個方法,就是Abandon。Abandon方法可以刪除所有存儲在Session對象中的對象并釋放這些對象的源。如果未明確地調(diào)用Abandon方法,一旦會話超時,服務(wù)器將刪除這些對象。當(dāng)服務(wù)器處理完當(dāng)前頁時,釋放會話狀態(tài)。如:<%Session.Abandon%>3.事件Session對象有兩個事件可用于在Session對象啟動和釋放是運行過程。(1)Session_OnStart事件在服務(wù)器創(chuàng)建新會話時發(fā)生。服務(wù)器在執(zhí)行請求的頁之前先處理該腳本。Session_OnStart事件是設(shè)置會話期變量的最佳時機,因為在訪問任何頁之前都會先設(shè)置它們。盡管在Session_OnStart事件包含Redirect或End方法調(diào)用的情況下Session對象仍會保持,然而服務(wù)器將停止處理Global.asa文件并觸發(fā)Session_OnStart事件的文件中的腳本。為了確保用戶在打開某個特定的Web頁時始終啟動一個會話,就可以在Session_OnStart事件中調(diào)用Redirect方法。當(dāng)用戶進入應(yīng)用程序時,服務(wù)器將為用戶創(chuàng)建一個會話并處理Session_OnStart事件腳本??梢詫⒛_本包含在該事件中以便檢查用戶打開的頁是不是啟動頁,如果不是,就指示用戶調(diào)用Response.Redirect方法啟動網(wǎng)頁。如:<SCRIPTRUNAT=ServerLanguage=VBScript>SubSession_OnStartstartPage="/MyApp/StartHere.asp"currentPage=Request.ServerVariables("SCRIPT_NAME")ifstrcomp(currentPage,startPage,1)thenResponse.Redirect(startPage)endifEndSub</SCRIPT>

上述程序只能在支持cookie的瀏覽器中運行。因為不支持cookie的瀏覽器不能返回SessionIDcookie,所以,每當(dāng)用戶請求Web頁時,服務(wù)器都會創(chuàng)建一個新會話。這樣,對于每個請求服務(wù)器都將處理Session_OnStart腳本并將用戶重定向到啟動頁中。(2)Session_OnEnd事件在會話被放棄或超時發(fā)生。使用Session對象需要注意的事項與Application對象相近,請參照前文。會話可以通過以下三種方式啟動:

一個新用戶請求訪問一個URL,該URL標(biāo)識了某個應(yīng)用程序中的.asp文件,并且該應(yīng)用程序的Global.asa文件包含Session_OnStart過程。

用戶在Session對象中存儲了一個值。

用戶請求了一個應(yīng)用程序的.asp文件,并且該應(yīng)用程序的Global.asa文件使用<OBJECT>標(biāo)簽創(chuàng)建帶有會話作用域的對象的實例。如果用戶在指定時間內(nèi)沒有請求或刷新應(yīng)用程序中的任何頁,會話將自動結(jié)束。這段時間的默認(rèn)值是20分鐘??梢酝ㄟ^在“Internet服務(wù)管理器”中設(shè)置“應(yīng)用程序選項”屬性頁中的“會話超時”屬性改變應(yīng)用程序的默認(rèn)超時限制設(shè)置。應(yīng)依據(jù)Web應(yīng)用程序的要求和服務(wù)器的內(nèi)存空間來設(shè)置此值。例如,如果希望瀏覽Web應(yīng)用程序的用戶在每一頁僅停留幾分鐘,就應(yīng)該縮短會話的默認(rèn)超時值。過長的會話超時值將導(dǎo)致打開的會話過多而耗盡服務(wù)器的內(nèi)存資源。對于一個特定的會話,如果想設(shè)置一個小于默認(rèn)超時值的超時值,可以設(shè)置Session對象的Timeout屬性。例如,

<%Session.Timeout=5%>將超時值設(shè)置為5分鐘。當(dāng)然也可以設(shè)置一個大于默認(rèn)設(shè)置的超時值,Session.Timeout屬性決定超時值。還可以通過Session對象的Abandon方法顯式結(jié)束一個會話。例如,在表格中提供一個“退出”按鈕,將按鈕的

ACTION參數(shù)設(shè)置為包含下列命令的.asp文件的URL。例如,

<%Session.Abandon%>4.Session的工作原理Session其實是利用Cookie進行信息處理的(參見前面有關(guān)Cookies的介紹)。當(dāng)用戶首先進行了請求后,服務(wù)端就在用戶瀏覽器上創(chuàng)建了一個Cookie,當(dāng)這個Session結(jié)束時,其實就是意味著這個Cookie就過期了。為這個用戶創(chuàng)建的Cookie的名稱是ASPSESSIONID。這個Cookie的唯一目的就是為每一個用戶提供不同的身份認(rèn)證。如果對名字是ASPSESSIONID的COOKIE感到好奇,可以利用ServerVariables集合的COOKIEHeader來接受這個信息,如下面這個腳本:<%=Request.ServerVariables("HTTPCOOKIE")%>多次刷新屏幕,顯示結(jié)果依然不變。Session變量自己不會存在用戶瀏覽器上。不過,ASPSESSIONID這個cookie需要使用session變量。服務(wù)器使用ASPSESSIONIDcookie來將特定的用戶和特定的session信息聯(lián)系起來。沒有cookie的話,服務(wù)器就不會了解到每一個特定用戶在網(wǎng)站中移動的信息。利用SessionID變量存儲ASPSESSIONIDcookie和直接對名為ASPSESSIONID的cookie賦值有很大不同。微軟利用了一個復(fù)雜的數(shù)學(xué)算法對SessionID進行了加密措施,以防止黑客猜測出SessionID的值并且依據(jù)這個獲得不該獲得的身份或權(quán)限??梢杂脙煞N方法屏蔽掉SessionID:一種是將全站進行屏蔽;另一種是對一個單獨ASP進行相應(yīng)屏蔽。如果想要將整個站點的Session操作進行屏蔽,可以使用“Internet信息服務(wù)→默認(rèn)站點屬性→主目錄→配置→應(yīng)用程序選項→啟用會話狀況”。取消“啟用會話狀況”選項的選擇。

還可以在特定的ASP程序的首行加入使之屏蔽的語句來進行這種操作。如:<%EnableSessionState=False%>

由于Session對象使用了Cookies,那么它的兼容性就受到了限制,例如有些瀏覽器提供了屏蔽Cookie的選項。由于Cookie不能適用于所有瀏覽器,那么在建站時必須注意,如果你的網(wǎng)站定位于大眾通用,就必須考慮各種不同的用戶情況。

6.5Global.asa文件的使用

在上一節(jié)中介紹了兩個非常實用的

ASP內(nèi)建對象Application和Session的使用方法。由于這兩者的OnStart、OnEnd事件的腳本都必須在Global.asa文件中聲明,因此,本節(jié)將詳細(xì)介紹Global.asa文件的使用方法。Global.asa文件其實是一個可選文件,程序編寫者可以在該文件中指定事件腳本,并聲明具有會話和應(yīng)用程序作用域的對象。該文件的內(nèi)容不是用來給用戶顯示的,而是用來存儲事件信息和由應(yīng)用程序全局使用的對象。該文件的名稱必須是Global.asa且必須存放在應(yīng)用程序的根目錄中。每個應(yīng)用程序只能有一個Global.asa文件。

在Global.asa文件中,如果包含的腳本沒有用<SCRIPT>標(biāo)記封裝,或定義的對象沒有會話或應(yīng)用程序作用域,則服務(wù)器將返回錯誤??梢杂萌魏沃С帜_本的語言編寫Global.asa文件中包含的腳本。如果多個事件使用同一種腳本語言,就可以將它們組織在一組<SCRIPT>標(biāo)記中。在Global.asa文件中聲明的過程只能從一個或多個與Application_OnStart、Application_OnEnd、Session_OnStart和Session_OnEnd事件相關(guān)的腳本中調(diào)用。在基于ASP的應(yīng)用程序的ASP頁中,它們是不可用的。如果要在應(yīng)用程序之間共享過程,可在單獨的文件中聲明這些過程,然后使用服務(wù)器端包容(SSI)語句將該文件包含在調(diào)用該過程的ASP程序中。通常,包含文件的擴展名應(yīng)為.inc。

下面是一個很標(biāo)準(zhǔn)的Global.asa文件:

<SCRIPTLANGUAGE="VBScript"RUNAT="Server">SubApplication_OnStartVisitorCountFilename=Server.MapPath("/ex2")+"\VisitCount.txt"SetFileObject=Server.CreateObject("Scripting.FileSystemObject")SetOut=FileObject.OpenTextFile(VisitorCountFilename,1,FALSE,FALSE)Application("visitors")=Out.ReadLineApplication("VisitorCountFilename")=VisitorCountFilenameEndSub'=========================================================SubApplication_OnEndSetFileOutObject=Server.CreateObject("Scripting.FileSystemObject")SetOut=FileOutObject.CreateTextFile(Application("VisitorCountFilename"),TRUE,FALSE)Out.WriteLine(application("visitors"))EndSub'=========================================================SubSession_OnStartSession.Timeout=5Application("visitors")=Application("visitors")+1Session("ID")=Session.SessionIDEndSub</SCRIPT>

在這個Global.asa程序中,涉及到了ASP的FileAccess組件(有關(guān)ASP組件方面的知識請查閱有關(guān)資料),它可以提供用于訪問文件系統(tǒng)的方法、屬性和集合。在這里,它起到了在服務(wù)器上創(chuàng)建新文件并對文件進行寫操作的作用。這其實是一個ASP頁面訪問記數(shù)器應(yīng)用程序的Global文件,首先當(dāng)客戶首次訪問該應(yīng)用程序的首頁時,過程Application_OnStart定義了在服務(wù)器上指定的虛擬目錄下新建一個VisitCount.txt的文本文件,并將文件的路徑和內(nèi)容保存在應(yīng)用程序級的變量中。而當(dāng)任何一個客戶訪問ASP應(yīng)用程序中的任何一個頁面時,過程S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論