![理學(xué)第3章-ASP內(nèi)置對象_第1頁](http://file4.renrendoc.com/view6/M02/07/05/wKhkGWePGVuAHDcAAAEkUToeDVc532.jpg)
![理學(xué)第3章-ASP內(nèi)置對象_第2頁](http://file4.renrendoc.com/view6/M02/07/05/wKhkGWePGVuAHDcAAAEkUToeDVc5322.jpg)
![理學(xué)第3章-ASP內(nèi)置對象_第3頁](http://file4.renrendoc.com/view6/M02/07/05/wKhkGWePGVuAHDcAAAEkUToeDVc5323.jpg)
![理學(xué)第3章-ASP內(nèi)置對象_第4頁](http://file4.renrendoc.com/view6/M02/07/05/wKhkGWePGVuAHDcAAAEkUToeDVc5324.jpg)
![理學(xué)第3章-ASP內(nèi)置對象_第5頁](http://file4.renrendoc.com/view6/M02/07/05/wKhkGWePGVuAHDcAAAEkUToeDVc5325.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章ASP內(nèi)置對象第3章ASP內(nèi)置對象3.1Request對象 3.2Response對象 3.3Server對象 3.4Session對象 3.5Application對象3.6ObjectContext對象 3.7Global.asa文件3.8本章小節(jié)本章將介紹ASP本身所提供的對象,這些對象在使用時并不需要經(jīng)過任何聲明或建立的過程,因此,稱為ASP內(nèi)置對象。它們包括Request對象、Response對象、Server對象、Session對象、Application對象,以及ObjectContext對象。這些對象都有其特別的任務(wù)與工作,在詳細(xì)闡述之前,先簡單地說明每個內(nèi)置對象的功能,然后再將這些對象分六個小節(jié)進(jìn)行介紹。
對象名稱主要作用Request對象負(fù)責(zé)在HTTP請求期間檢索客戶端瀏覽器傳遞給服務(wù)器的信息。
Response對象動態(tài)響應(yīng)客戶端請求(Request),并將動態(tài)生成的響應(yīng)結(jié)果返回到客戶端瀏覽器中
Server對象創(chuàng)建對象以及提供服務(wù)器屬性信息Session對象負(fù)責(zé)存儲單個用戶的信息,以便重復(fù)使用Application對象負(fù)責(zé)存儲共享數(shù)據(jù)以供多個用戶使用ObjectContext對象
供ASP程序直接配合MicrosoftTransactionServer(MTS)進(jìn)行分散式的事務(wù)處理。
所謂對象,就是把一些功能封裝好,至于其內(nèi)部具體是怎么工作的,用戶不需要管,只要會使用它就行了。ASP之所以簡單實(shí)用,主要是因?yàn)樗峁┝斯δ軓?qiáng)大的內(nèi)部對象和內(nèi)部組件。3.1Request對象
Request對象通常包括了用戶端的相關(guān)信息,如瀏覽器的種類、表頭信息、表單參數(shù)及cookies等等。而Response對象則是包含Web服務(wù)器所要響應(yīng)給用戶的各項(xiàng)信息。這兩個對象的功能是對立的,它們結(jié)合在一起可以實(shí)現(xiàn)客戶端與服務(wù)器端的數(shù)據(jù)交換。Request對象的語法描述如下:
Request[.collection|property|method](variable)Request[.集合|屬性|集合](變量或字符串)
其中collection表示Request對象的集合,property表示Request對象的屬性,method表示Request對象的方法,variable是一些字符串,這些字符串指定要從集合中檢索的項(xiàng)目,或作為方法或?qū)傩缘妮斎搿?/p>
Request對象只提供一個TotalBytes屬性,這是一個只讀的屬性,表示從客戶端所接收數(shù)據(jù)的字節(jié)的長度。其語法如下:字節(jié)長度=Request.TotalBytesRequest對象屬性例:3-1.asp
Request對象提供BinaryRead方法,該方法是以二進(jìn)制方式來讀取客戶端使用POST傳送方法所傳遞的數(shù)據(jù)。其語法形式如下:Variant數(shù)組=Request.BinaryRead(Count)Request對象方法一般不常用這種方法
Request對象是ASP的請示對象,是用來從客戶端瀏覽器獲取信息的對象。
Request對象提供了5個集合,可以用來獲取客戶端對Web服務(wù)器請求的各類信息,這些集合如表所示。Request對象數(shù)據(jù)集合1、Form數(shù)據(jù)集合
Form數(shù)據(jù)集合是Request對象中最常用的數(shù)據(jù)集合,它檢索的是以POST方式提交的HTML表單元素的數(shù)據(jù)。其語法如下:
其中表單對象名稱是指定要檢索的表格元素的名稱,索引值是訪問某參數(shù)中多個值中的一個。表單對象內(nèi)容=Request.Form(“表單對象名稱”)或表單對象內(nèi)容=Request.Form(“索引值”)如何利用Form數(shù)據(jù)集合來取得用戶在表單中所填寫的內(nèi)容:1建立一個HTML的表單輸入程序 (例:3-2.htm)2建立一個處理表單的ASP程序 (例:3-2.asp,書中給出三種asp程序的寫法)表單對象內(nèi)容=Request.Form(“表單對象名稱”)表單對象內(nèi)容=Request.Form(“索引值”)利用ForEach…Next循環(huán)的方法來取得所有表單對象的內(nèi)容值ForEach…Next語法:
ForEachElementInFormGroup[其他ASP命令,即循環(huán)體] NextElement變量:表單中各元素的名稱(name)Request.Form(Element)
:表單中各元素的內(nèi)容
3-2.asp所介紹的方法只能取得某一名稱的表單對象,如何取相同名稱的內(nèi)容值:1建立一個HTML的表單輸入程序 (例:3-3.htm)2建立一個處理表單的ASP程序 (例:3-3.asp)組件名稱相同的總數(shù)=Request.Form(“表單對象名稱”).Count或組件名稱相同的總數(shù)=Request.Form(“索引值”).Count組件名稱相同的內(nèi)容值=Request.Form(“表單對象名稱”)(索引值”)或組件名稱相同的內(nèi)容值=Request.Form(“索引值”)(索引值)2、QueryString數(shù)據(jù)集合
QueryString集合用來收集以GET方式提交的數(shù)據(jù)表單,而以POST方式提交的表單數(shù)據(jù)則用Form集合來收集。
QueryString數(shù)據(jù)集合與Form數(shù)據(jù)集合在實(shí)現(xiàn)上沒有太大的區(qū)別,主要的區(qū)別在于前者是通過取得HTTP的附加參數(shù)來傳遞數(shù)據(jù)(附加參數(shù)通常是使用“?”來連接的,多個參數(shù)間用&隔開),而后者是通過單獨(dú)的數(shù)據(jù)包來傳遞數(shù)據(jù)。QueryString集合不僅僅能收集表單數(shù)據(jù),還可以傳遞附加在URL地址上的信息(非表單數(shù)據(jù))。前面用Form集合傳遞表單元素的例子3-2.htm/3-2.asp,也可以用QueryString集合來實(shí)現(xiàn)(例:3-2q.htm/3-2q.asp)注意:表單的method屬性:GET用POST方式,采用Form集合可提交的表單數(shù)據(jù)量較大(100KB);用GET方式,采用QueryString集合可提交的表單數(shù)據(jù)量較?。?KB)地址欄中的URL地址獲取GET方式傳遞的表單元素的語法表單對象內(nèi)容=Request.QueryString(“表單對象名稱”)或表單對象內(nèi)容=Request.QueryString(“索引值”)當(dāng)一個表單元素名稱不是唯一的情況組件名稱相同的總數(shù)=Request.QueryString(“表單對象名稱”).Count或組件名稱相同的總數(shù)=Request.QueryString(“索引值”).Count組件名稱相同的內(nèi)容值=Request.QueryString(“表單對象名稱”)(索引值”)或組件名稱相同的內(nèi)容值=Request.QueryString(“索引值”)(索引值)使用QueryString集合除了可以收集以GET方式提交的HTML表單數(shù)據(jù),還可以獲取用戶所傳遞的變量(例:3-4.asp/3-5.asp)3、Cookies數(shù)據(jù)集合
什么是Cookies? 什么是Cookie?Cookie其實(shí)是一個標(biāo)簽,經(jīng)??赡苈牭降闹形姆g:小甜餅。 當(dāng)你訪問一個需要唯一標(biāo)識你的站址的WEB站點(diǎn)時,它會在你的硬盤上留下一個標(biāo)記,下一次你訪問同一個站點(diǎn)時,站點(diǎn)的頁面會查找這個標(biāo)記。
每個WEB站點(diǎn)都有自己的標(biāo)記,標(biāo)記的內(nèi)容可以隨時讀取,但只能由該站點(diǎn)的頁面完成。每個站點(diǎn)的Cookie與其他所有站點(diǎn)的Cookie存在同一文件夾中的不同文件內(nèi) 一個Cookie就是一個唯一標(biāo)識客戶的標(biāo)記,Cookie可以包含在一個對話期或幾個對話期之間某個WEB站點(diǎn)的所有頁面共享的信息,使用Cookie還可以在頁面之間交換信息。這項(xiàng)功能經(jīng)常被使用在要求認(rèn)證客戶密碼以及電子公告板、WEB聊天室等ASP程序中。
Cookies為何能夠持久發(fā)揮作用? 如果服務(wù)器沒有檢測到與用戶的對話對應(yīng)的獨(dú)一無二的ID,它將生成一個ID并以Cookies的形式發(fā)送至客戶端。因此,如果用戶接受此Cookies,只需接受一次即可。如果不接受此Cookies,伴隨每一次點(diǎn)擊,都將收到同樣的Cookies接受請求,直至接受為止。
Cookies對于訪問者有什么作用? 瀏覽網(wǎng)上商店時,如果選擇了幾款貨物放到購物車?yán)铮缓箅x開。借助Cookies,幾天以后再回來時,可以不必重復(fù)以前的操作,所選擇的貨物會仍然保存在購物車中。此外,借助Cookies技術(shù),還可以更好地使用廣告頁面或網(wǎng)站特定訪問區(qū)域提供的信息??傮w上說,Cookies能夠讓我們通過分析數(shù)據(jù)流檢測到什么對自己有用,什么沒有用,因此可以幫助網(wǎng)站開發(fā)者提供更好的網(wǎng)站。有2種使用cookies的基本方式
1、將cookies寫入訪問者的計(jì)算機(jī)(使用Response命令)
2、從訪問者的計(jì)算機(jī)中取回cookies(使用Request命令)使用Response對象設(shè)置Cookies Cookies是通過Response對象的Cookies集合來創(chuàng)建的。Cookies共有5個屬性。 語法:
Response.Cookies(Cookies名)[key].[屬性]=值Key為可選參數(shù),表示這個Cookies會以目錄的類型加以存儲。如果指定了key,則Cookies就是一個字典。測試一cookies是否為一個字典可用后面代碼顯示布爾值:<%=Request.Cookies("cookiename").HasKeys%>。為true是字典,false則不是。Attribute指定cookie自身的有關(guān)信息。①Domain若被指定,則cookie將被發(fā)送到對該域的請求中去。域?qū)傩员砻鱟ookie由哪個網(wǎng)站產(chǎn)生或者讀取,默認(rèn)情況下,cookie的域?qū)傩栽O(shè)置為產(chǎn)生它的網(wǎng)站,但你也可以根據(jù)需要改變它。Response.Cookies(“CookieName”).Domain=“”
②Path為一路徑屬性,該屬性可以實(shí)現(xiàn)更多的安全要求,通過設(shè)置網(wǎng)站上精確的路徑,就能限制cookie的使用范圍。如果未設(shè)置該屬性,則使用應(yīng)用程序的路徑。Response.Cookies("CookieName").Path="/maindir/subdir/path"③Expires指定cookie的過期日期。為了在會話結(jié)束后將cookie存儲在客戶端磁盤上,或在許多時候,我們希望能更長時間地在訪問者的計(jì)算機(jī)上保存cookie。必須設(shè)置該日期。若此項(xiàng)屬性的設(shè)置未超過當(dāng)前日期,則在任務(wù)結(jié)束后cookie將到期。設(shè)置cookie的使用到期時間為“2010年1月1日”:Response.Cookies("CookieName").Expires=#January01,2010#后面的代碼,將設(shè)定cookie的過期時間為“cookie的創(chuàng)建時間+365天”Response.Cookies("CookieName").Expires=Date+365 下面是幾個具體實(shí)例。 (1)設(shè)置一個不含key的Cookies。<%Response.Cookies("username")="陳建軍"%>
(2)設(shè)置一個含key的Cookies。<%Response.Cookies("username")(name1)="陳建軍"%>
(3)設(shè)置Cookies有效期。<%Response.Cookies("username").Expires=#2004-10-2#%>執(zhí)行下面的代碼將會在訪問者的計(jì)算機(jī)中創(chuàng)建一個cookie,名字=VisitorName,值=KenResponse.Cookies("VisitorName")="Ken"可以擴(kuò)展下面的代碼成為Cookie子關(guān)鍵值(key),即cookie字典的生成。代碼如下:Response.Cookies("VisitorName")("FirstName")="Ken"
Response.Cookies("VisitorName")("LastName")="Baumbach"使用Request對象設(shè)置Cookies
利用Request對象的Cookies集合的目的在于獲取Cookies的值。 語法:Request.Cookies(Cookies名)[key].[屬性]例如:(1)不指定key的用法為了獲取一個叫Myname的值:<%=Request.Cookies("Myrname")%>(2)指定key的用法為了獲取一個叫Myname的值:<%Response.Writer
Request.Cookies("Myrname")("name")%>Cookies的綜合實(shí)例 例4:通過留在本地磁盤上的cookie記錄一年內(nèi)訪問本站的次數(shù),第一次顯示“首次訪問”,以后顯示“第幾次訪問”。
<%dimnumnum=request.cookies("visitnum")ifnum>”0”thennum=num+1
Response.write"您已是第"&num&"次訪問本站點(diǎn)了。"else
Response.write"歡迎您首次訪問本站。"num=“1”endif
response.cookies("visitnum")=num
response.cookies("visitnum").expires=date+365%>
ServerVariables數(shù)據(jù)集合是負(fù)責(zé)取得Web服務(wù)器端的環(huán)境變量(ServerEnvironmentVariable),檢索預(yù)定的環(huán)境變量。 可以利用環(huán)境變量的名稱來取得指定的環(huán)境變量的值,語法如下:Request.ServerVariables("環(huán)境變量的名稱")(例:3-6.asp)4、ServerVariables數(shù)據(jù)集合 例6:顯示來訪者的IP地址。
<%Response.Write"來訪者的IP地址是:"&Request.ServerVariables("REMOTE_ADDR")%>
如果客戶端瀏覽器支持SSL(安全套接層)協(xié)議,并且服務(wù)器端要求進(jìn)行身份驗(yàn)證,則利用ClinetCertificate集合就可以獲取客戶端瀏覽器的身份驗(yàn)證信息。不過如果客戶端瀏覽器未送出身份驗(yàn)證信息,或服務(wù)器端也不要求進(jìn)行身份驗(yàn)證,那么將返回空值。語法如下:Request.ClientCertificate(關(guān)鍵字[子字段])使用SSL驗(yàn)證時,URL以https://開頭5、ClientCertificate數(shù)據(jù)集合3.2Response對象在ASP中負(fù)責(zé)將信息傳遞給用戶的對象就是Response對象。
Response對象用于動態(tài)響應(yīng)客戶端請求(Request),并將動態(tài)生成的響應(yīng)結(jié)果返回到客戶端瀏覽器中,使用該對象可以動態(tài)創(chuàng)建web頁面,改變HTTP標(biāo)題頭等。
Response對象的使用語法為:
其中collection表示Response對象的集合,property表示Response對象的屬性,method表示Response對象的方法。Response.collection|property|method
Response對象的方法:方
法功
能
說
明AddHeader從名稱到值設(shè)置HTML標(biāo)題。AppendToLog在該請求的Web服務(wù)器日志條目后添加字符串。BinaryWrite將給出信息寫入到當(dāng)前HTTP輸出中,并且不進(jìn)行任何字符集轉(zhuǎn)換。Clear清理掉緩沖區(qū)里所有的HTML輸出。End停止處理.asp文件并返回當(dāng)前的結(jié)果。Flush立即向用戶發(fā)送緩沖的輸出。Redirect將重指示信息發(fā)送到瀏覽器,嘗試連接另一個URL。Write將變量作為字符串寫入當(dāng)前的HTTP輸出。Response對象的屬性:屬
性功
能
說
明Buffer表明頁輸出是否被緩沖。CacheControl決定代理服務(wù)器是否能緩存ASP生成的輸出。Charset將字符集的名稱添加到內(nèi)容類型標(biāo)題中。ContentType指定響應(yīng)的HTTP內(nèi)容類型。Expires在瀏覽器中緩存的頁面超時前,指定緩存的時間。ExpiresAbsolute指定瀏覽器上緩存頁面超時的日期和時間。IsClientConnected表明客戶端是否與服務(wù)器斷開。Pics將PICS標(biāo)記值添加到響應(yīng)標(biāo)題的PICS標(biāo)記字段中。Status服務(wù)器返回的狀態(tài)行的值。
Response對象只有Cookies一個數(shù)據(jù)集合,它允許將數(shù)據(jù)設(shè)置在客戶端的瀏覽器中。假如所指定名稱的Cookies不存在,系統(tǒng)會自動在客戶端的瀏覽器中建立新的Cookies。其語法如下:Response.Cookies(CookiesName[(Key)|.Attribute]=CookiesValueResponse對象的方法Write方法
Response.Write是Response對象中最常用的方法,它可以把變量的值發(fā)送到用戶端的當(dāng)前頁面,用以向?yàn)g覽器輸出動態(tài)信息。 語法:
Response.write
任何數(shù)據(jù)類型(例:3-8.asp)Redirect方法
Response.Redirect用于使瀏覽器立即重定向到程序指定的URL。
語法:
Response.Redirect網(wǎng)址變量或字符串 例7:Response.Redirect應(yīng)用。<html><head><title>Response.Redirect用法示例</title></head><boby><formname=form1"method="post"action="">請選擇用戶類型:<inputtype="radio"name="user-type"value="loader">領(lǐng)導(dǎo)<inputtype="radio"name="user-type"value="worker">員工<inputtype="submit"value="確定"></form><%IfRequest.form("user-type")="loader"then Response.Redirect"loader.asp"'引導(dǎo)至領(lǐng)導(dǎo)網(wǎng)頁Elseif
Request.Form("user-type")="worker"then Response.Redirect"workeer.asp"'引導(dǎo)至員工網(wǎng)頁Endif%></body></html>Flush方法
Response.Flush用于立即發(fā)送緩沖區(qū)的輸出。 語法:
Response.FlushEnd方法
Response.End方法使Web服務(wù)器停止處理腳本返回當(dāng)前結(jié)果,文件中剩余的內(nèi)容將不被處理。如果Response.Buffer
屬性已設(shè)置為TRUE,則調(diào)用Response.End將緩沖輸出。 語法:
Response.EndClear方法
Response.Clear方法可以清除緩沖區(qū)中所有的HTML輸出。但Clear方法只清除響應(yīng)正文而不清除響應(yīng)標(biāo)題。如果未將Response.Buffer
屬性已設(shè)置為TRUE,則該方法將導(dǎo)致運(yùn)行時錯誤。 語法:
Response.ClearBinaryWrite方法
Response.BinaryWrite方法可以不經(jīng)任何字符轉(zhuǎn)換就將指定的信息寫到HTTP輸出。該方法主要用來寫非字符串信息(如客戶端應(yīng)用程序所需的二進(jìn)制數(shù)據(jù)等)。 語法:
Response.BinaryWrite
二進(jìn)制數(shù)據(jù)AppendToLog方法
Response.AppendToLog方法將字符串添加到Web服務(wù)器日志條目的末尾。 語法:
Response.AppendToLog
“要記錄的字符串”AddHeader方法(1)
Response.AddHeader方法用指定的值添加HTTP標(biāo)題,該方法常用來響應(yīng)添加新的HTTP標(biāo)題,但它并不替代現(xiàn)有的同名標(biāo)題。 語法:
Response.AddHeader
Name,ValueAddHeader方法(2)
HTTP協(xié)議要求所有的標(biāo)題都必須在內(nèi)容之前發(fā)送,所以必須在任何的輸出(例如由HTML或Write方法生成的輸出)發(fā)送到客戶端之前在腳本中調(diào)用AddHeader。 但當(dāng)Buffer屬性設(shè)置為TRUE例外。若輸出被緩沖,那么就可以在腳本中的任何地方調(diào)用AddHeader方法,只要它在Flush之前執(zhí)行即可。AddHeader方法(3)
例:3-9.asp:頁面沒有緩沖
例:3-10.asp:頁面被緩沖
例:3-11.asp:頁面被緩沖,但對AddHeader的調(diào)用在對Flush的調(diào)用之后出現(xiàn),腳本產(chǎn)生一個運(yùn)行時錯誤。Response對象的屬性Buffer屬性
Buffer屬性是Response對象使用較多的屬性之一,主要用來控制是否輸出緩沖頁,也就是控制何時將輸出信息送至請求瀏覽器,Buffer屬性的取值可以是Ture或False,若取TURE為使用緩沖頁,反之異然。 該語句需要在.asp文件的第一行使用。
當(dāng)緩沖頁輸出時,只有當(dāng)前頁的所有服務(wù)器腳本處理完畢或者調(diào)用了Flush或End方法后,服務(wù)器才將相應(yīng)發(fā)送給客戶端。 如果不使用緩沖輸出,服務(wù)器在處理腳本的同時將輸出發(fā)送到客戶端。例8:使用緩沖頁<%Response.Buffer=Ture%><html><head><title>Response輸出時使用緩沖頁示例</title></head><boby><palign=“center”>Response輸出時使用緩沖頁<br></br><p><%forI=1to1000Response.Write"使用緩沖"Next%></boby></html>CacheControl屬性
該屬性可以用來設(shè)置Web服務(wù)器是否將ASP的處理結(jié)果暫時存放在代理服務(wù)器上。
Charset屬性
該屬性用來設(shè)置Web服務(wù)器形影給客戶端的文件字符編碼。語法:
Response.Charset=字符集名稱例如:
Response.Charset=“gb2312”
ContentType屬性
該屬性用來指定響應(yīng)HTTP內(nèi)容類型。如果未指定ContentType,默認(rèn)為text/HTML。語法:
Response.ContentType=內(nèi)容類型以“類型/子類型”來表示。 Expires屬性
該屬性用來指定在瀏覽器上緩沖存儲的過期還有多少時間。 如果用戶在某頁過期之前又回到此頁,就會顯示緩沖區(qū)中的版本。 如果設(shè)置Response.Expires=0,則可使緩存的頁面立即過期。
這是一個較實(shí)用的屬性,當(dāng)客戶提供ASP的登錄頁面進(jìn)入Web站點(diǎn)后,可利用該屬性使登錄頁面立即過期,有助于數(shù)據(jù)的保密。語法:
Response.Expires=分鐘數(shù)
ExpiresAbsolute屬性
該屬性用來指定在瀏覽器上緩沖中頁面的到期日期時間。 如果用戶在某頁過期之前又回到此頁,就會顯示緩沖區(qū)中的版本。 如果未指定時間,該頁面在當(dāng)天午夜到期。
如果未指定日期,該頁面在當(dāng)天的指定時間到期。語法:
Response.ExpiresAbsolute=日期時間IsClientConnected屬性
該屬性為只讀,指示自上次調(diào)用Response.Write之后,客戶端是否與服務(wù)器相連。PICS屬性 該屬性用來設(shè)置PICS標(biāo)記,并把響應(yīng)添加到標(biāo)頭。Status屬性 該屬性用來設(shè)置Web服務(wù)器要響應(yīng)的狀態(tài)行的值。Response對象的數(shù)據(jù)集合Response對象只有一個Cookies數(shù)據(jù)集合。例:3-12.asp3.3Server對象Server對象提供對服務(wù)器上的方法和屬性的訪問,其中大多數(shù)方法和屬性是作為實(shí)用程序的功能服務(wù)的。有了Server對象,用戶就可以在服務(wù)器上啟動ActiveX對象例程,并使用ActiveServer服務(wù)提供象HTML和URL編碼這樣的函數(shù)。Sever對象的使用語法為:
其中property表示Server對象的屬性,method表示Server對象的方法。
Server的屬性只有ScriptTimeout,表示超時值,即在腳本運(yùn)行超過這一時間之后作超時處理。系統(tǒng)的缺省值為90秒。Sperty|methodServer對象的方法:方法描述CreateObject創(chuàng)建服務(wù)器組件的實(shí)例。HTMLEncode將HTML編碼應(yīng)用到指定的字符串。MapPath將指定的虛擬路徑,無論是當(dāng)前服務(wù)器上的絕對路徑,還是當(dāng)前頁的相對路徑,映射為物理路徑。URLEncode將URL編碼規(guī)則,包括轉(zhuǎn)義字符,應(yīng)用到字符串。Transfer直接輸出.asp文件請求,不必離開服務(wù)器隊(duì)列。Execute執(zhí)行另一個.asp文件,然后返回當(dāng)前文件。GetLastError獲取ASP的錯誤。Server對象的屬性Server對象只有一個集合。ScriptTimeout屬性可以決定一個頁面中腳本的運(yùn)行時間,默認(rèn)為90秒,如果超出最長的時間就自動停止運(yùn)行,該時間可以增大調(diào)節(jié)。例9ScriptTimeout屬性應(yīng)用。<%Server.ScriptTimeout=140%><html><head><title>顯示此頁面運(yùn)行的最長的時間</title></head><boby><palign="center">Server對象的ScriptTimeout屬性應(yīng)用<p><%Response.write"此頁面運(yùn)行的最長時間是"Response.write
Server.ScriptTimeoutResponse.write"秒"%></boby></html>Server對象的方法1、CreateObject方法CreateObject
方法允許客戶端創(chuàng)建服務(wù)器組件的實(shí)例。默認(rèn)情況下,由此方法創(chuàng)建的對象具有頁作用域,即當(dāng)前ASP頁處理完成之后,服務(wù)器將自動破壞這些實(shí)例對象。語法:Set對象實(shí)例名稱=Server.CreateObject(“ActiveX控件”
)要創(chuàng)建有會話或應(yīng)用程序作用域的對象,可以使用Session對象保留該對象實(shí)例,直到Session對象的運(yùn)行時間完畢,或者是在其他ASP程序中調(diào)用了Session對象的Abandon方法。例如,在如下所示的腳本中,當(dāng)Session
對象被破壞,即當(dāng)對話超時時或Abandon
方法被調(diào)用時,存儲在會話變量中的對象也將被破壞。<%SetSession("ad")=Server.CreateObject("MSWC.AdRotator")%>不能創(chuàng)建與內(nèi)建對象同名的對象實(shí)例。例如,下列腳本將返回錯誤。<%SetResponse=Server.CreateObject("Response")%>
示例<%SetMyAd=Server.CreateObject("MSWC.AdRotator")%>上面的例子創(chuàng)建一個名為MyAd
的MSWC.AdRotator
服務(wù)器組件,MSWC.AdRotator
組件可用于在Web頁上的自動輪換廣告。2、MapPath方法MapPath
方法將指定的相對或虛擬路徑映射到服務(wù)器上相應(yīng)的物理目錄上。語法:
Server.MapPath(虛擬路徑字符串)MapPath
方法不支持相對路徑語法(.)或(..)。例如,下列相對路徑../MyDir/MyFile.txt
返回一個錯誤。MapPath
方法不檢查返回的路徑是否正確或在服務(wù)器上是否存在。對于下列示例,文件data.txt
和包含下列腳本的test.asp
文件都位于目錄C:\Inetpub\Wwwroot\Script
下。C:\Inetpub\Wwwroot
目錄被設(shè)置為服務(wù)器的宿主目錄。下列示例使用服務(wù)器變量PATH_INFO映射當(dāng)前文件的物理路徑。腳本<%=server.mappath(Request.ServerVariables("PATH_INFO"))%>輸出c:\inetpub\wwwroot\script\test.asp由于下列示例中的路徑參數(shù)不是以斜杠字符開始的,所以它們被相對映射到當(dāng)前目錄C:\Inetpub\Wwwroot\Script。腳本<%=server.mappath("data.txt")%><%=server.mappath("script/data.txt")%>
輸出c:\inetpub\wwwroot\script\data.txt
c:\inetpub\wwwroot\script\script\data.txt
接下來的兩個示例使用斜杠字符指定返回的路徑應(yīng)被視為在服務(wù)器的完整虛擬路徑。腳本<%=server.mappath("/script/data.txt")%><%=server.mappath("\script")%>輸出c:\inetpub\script\data.txtc:\inetpub\script
下列示例演示如何使用正斜杠(/)或反斜杠(\)返回宿主目錄的物理路徑。腳本<%=server.mappath("/")%><%=server.mappath("\")%>
輸出c:\inetpub\wwwroot
c:\inetpub\wwwroot
3、HTMLEncode方法HTMLEncode方法對指定的字符串應(yīng)用HTML編碼。語法:
Server.HTMLEncode(string)示例腳本<%=Server.HTMLEncode("Theparagraphtag:<P>")%>
輸出Theparagraphtag:<P>如果查看一下源文件或以文本方式打開一個Web頁,您就可以看到已編碼的HTML。3、URLEncode方法URLEncode
方法將URL編碼規(guī)則,包括轉(zhuǎn)義字符,應(yīng)用到指定的字符串。語法:
Server.URLEncode(string)示例腳本<%Response.Write(Server.URLEncode(""))%>
輸出http%3A%2F%2Fwww%2Emicrosoft%2Ecom字符串?dāng)?shù)據(jù)以URL的形式傳遞到服務(wù)器時,在字符串中不允許出現(xiàn)空格,也不允許出現(xiàn)特殊字符。4、Transfer方法Server.Transfer(URL)用于停止當(dāng)前頁面的執(zhí)行,吧控制轉(zhuǎn)到指定的頁面,用戶的當(dāng)前會話狀態(tài)和事物狀態(tài)也傳遞到指定頁面,從而避免客戶端的重定向,可以節(jié)省一些資源。5、Execute方法Server.Execute(URL)停止當(dāng)前頁面的執(zhí)行,把控制轉(zhuǎn)到指定的網(wǎng)頁。用戶的當(dāng)前環(huán)境也傳遞到新的網(wǎng)頁。該頁面執(zhí)行完成后,控制傳遞回原先的頁面,并繼續(xù)執(zhí)行Execute方法后面的語句。6、GetLastError方法Server.GetLastError返回該頁面在ASP處理過程中發(fā)生的最近一次錯誤的詳細(xì)數(shù)據(jù)。3.4Session對象 在網(wǎng)站首頁客戶客戶輸入了自己的用戶名和密碼,用什么來記住用戶名呢? 到目前為止,我們利用已學(xué)知識可以使用下一兩種方法。 方法一:利用Request對象的Querystring方法一頁一頁傳遞過去。這種方法的缺點(diǎn)是太麻煩。 方法二:利用Cookies保存用戶名。 本節(jié)再來學(xué)習(xí)一種更簡潔的方法,就是利用Session對象。由于網(wǎng)頁是一種無狀態(tài)的程序,因此無法得知用戶的瀏覽狀態(tài)??梢允褂肧ession對象存儲特定用戶會話所需的信息。這樣,當(dāng)用戶在應(yīng)用程序的Web頁之間跳轉(zhuǎn)時,存儲在Session對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。當(dāng)用戶請求來自應(yīng)用程序的Web頁時,如果該用戶還沒有會話,則Web服務(wù)器將自動創(chuàng)建一個Session對象。當(dāng)會話過期或被放棄后,服務(wù)器將終止該會話。要注意的是,會話狀態(tài)僅在支持Cookie的瀏覽器中保留。如果客戶關(guān)閉了Cookie選項(xiàng),Session對象也就不能發(fā)揮作用了。
任何存儲在用戶Session中的信息可以在用戶調(diào)用下一個頁面時取得。也就是說,客戶在該網(wǎng)站的任何一個頁面都可以存取Session信息。 Session對象常被用在: (1)存儲用戶的首選項(xiàng); (2)保存用戶的身份標(biāo)記,實(shí)現(xiàn)用戶的身份認(rèn)證和用戶權(quán)限管理等。
Session對象的使用語法為:
其中collection表示Session對象的集合,property表示Session對象的屬性,method表示Session對象的方法。Session.collection|property|methodSession對象的集合:
絕大部分的Session變量存放于Contents集合中,當(dāng)創(chuàng)建一個新的Session變量時,其實(shí)就是在Cotents集合中添加了一項(xiàng)。
集合名描述Contents包含已用腳本命令添加到會話中的項(xiàng)目。StaticObjects包含通過<OBJECT>標(biāo)記創(chuàng)建的并給定了會話作用域的對象。Session對象的屬性:屬性名描述CodePage將用于符號映射的代碼頁。LCID現(xiàn)場標(biāo)識。SessionID返回用戶的會話驗(yàn)證。Timeout應(yīng)用程序會話狀態(tài)的超時時限,以分鐘為單位。Session對象只有一個方法。 Abandon:清除Session對象。
Session對象有兩個事件,且必須和Global.asa結(jié)合使用。 (1)Session_OnStart:一個Session對象開始前,觸發(fā)該事件。 (2)Session_OnEnd:一個Session對象結(jié)束時,觸發(fā)該事件。這兩個事件的代碼必須放在global.asa文件中,語法如下:<SCRIPTLANGUAGE=ScriptLanguageRUNAT=Server>SubSession_OnStart‘事件的處理程序代碼EndSubSubSession_OnEnd‘事件的處理程序代碼EndSub</SCRIPT>其中,ScriptLanguage是指定用于編寫事件腳本的腳本編寫語言。
利用Session存儲信息語法:Session
(“Session名字”)
=變量或字符串信息Session
.contents(“Session名字”)
=變量或字符串信息絕大部分的Session變量存放在Contents結(jié)合中。例10Session的使用方法。<%OptionExplicit%><html><head><title>Session使用方法</title></head><body><%Dimuser_name,age
user_name=“李飛”'這里為了簡單,直接賦值了
age=16Session
("user_name")
=user_name'給Session賦值,即自動創(chuàng)建Session
("age")
=age
response.write“<ahref=‘例11.asp'>單擊顯示用戶信息</a>"'鏈接到例11%></body></html>例11
顯示Session信息。<%OptionExplicit%><html><head><title>Session使用方法</title></head><body><%Dimuser_name
user_name=Session("user_name")'將Session值賦給變量
response.write
user_name&"您好,歡迎學(xué)習(xí)ASP程序設(shè)計(jì)<br>"
response.write"您的年齡是"&Session("Age")'直接使用Session值%></body></html>例12
使用Session編寫計(jì)數(shù)器程序。<html><head><title>使用session變量計(jì)數(shù)</title></head><body><P>使用Session變量計(jì)數(shù)<hr><%Session("counter")=Session("counter")+1'創(chuàng)建Session,并給Session賦值%><fontsize=7face=隸書color=blue>您是第<%=Session("counter")%>次來訪!</font></body></html>Session對象的屬性 Session對象共有4種屬性,分別是SessionID、TimeOut、LCID和CodePage。(1)SessionID屬性 語法:Session.SessionIDSessionID
屬性返回用戶的會話標(biāo)識。在創(chuàng)建會話時,服務(wù)器會為每一個會話生成一個單獨(dú)的標(biāo)識。會話標(biāo)識以長整形數(shù)據(jù)類型返回。 可以使用以下兩種方法來訪問SessionID的值: ①<%=SessionID%> ②<%Response.Write(Session.SessionID)%>例13
SessionID的使用。<html><head><title>SessionID的使用</title></head><body><%session("name1")="張三"%><br>你的自動編號為:<%=SessionID%></body></html>(2)Timeout屬性 Session對象的Timeout屬性用來設(shè)置“過期時間”,方法是: ①在ASP的注冊表中修改系統(tǒng)默認(rèn)值; ②用Session對象的Timeout屬性可以修改來更改。不過,請注意用該屬性更改的有效期長度不能低于默認(rèn)值20分鐘。語法:Session.Timeout=MaxTime例如:<%Session.Timeout=40'將有效期改為40分鐘%>Session對象的方法 Session對象到期會自動清除,也就是說,Session對象的生命周期起始于瀏覽器第一次與服務(wù)器聯(lián)機(jī)時,終止于瀏覽器結(jié)束聯(lián)機(jī)時,或?yàn)g覽器超過20分鐘不再向服務(wù)器端提出請求或刷新Web頁面時。 語法:
Session.Abandon例14
利用Session方法輸出,不使用Abandon方法。<html><head><title>sessionID</title></head><body><%Session("user_name")="aa"Session("age")=5response.write"您的名字是:"&session("user_name")&"<br>"response.write"您的年齡是:"&session("age")%></body></html>例15
利用Session方法輸出,并使用Abandon方法。<html><head><title>使用abandon方法</title></head><body><%Session.AbandonResponse.write"您的名字是:"&session("user_name")&"<br>"response.write"您的年齡是:"&session("age")%></body></html>3.5Application對象
Application對象和Session對象有很多相似之處,它們的功能都是用于在不同的ASP之間共享信息。最大的不同在于其應(yīng)用的范圍:
Application對象是對所有用戶,
Session對象是對單一用戶。也就是說,不同的客戶訪問不同的Session對象,但許多客戶可以同時訪問公共Application對象。
Application對象簡介 ASP應(yīng)用程序中,如果同時訪問的用戶很多,就可能會出現(xiàn)很多用戶同時修改一個Application變量的值的情況??梢岳肁pplication對象的兩個方法:Lock和Unlock來解決。 (1)Lock:鎖定Application對象。 (2)Unlock:解除鎖定。 Application對象有兩個事件,必須和Global.asa結(jié)合使用。 (1)Application_OnStart:Application開始前,調(diào)用該程序。 (2)Application_OnEnd:Application結(jié)束后,調(diào)用該程序。利用Application存儲信息 Application的使用和Session很相似,可以把變量或字符串等信息很容易地保存在Application中。 語法:
Application("Application名字")=變量或字符串信息例如:<%Application.Lock'鎖定Application對象,以防止其他用戶更改Application("user_name")=user_name'將user_name變量存入ApplicationApplication("factory")="現(xiàn)代汽車公司"'將字符串信息存入ApplicationApplication.UnLock'解除鎖定,以允許別人更改%>例16
使用Application創(chuàng)建聊天室。<html><head><title>使用Application,創(chuàng)建聊天室</title></head><body><fontface=方正舒體color=blue><h2align=center>使用Application,創(chuàng)建聊天室</h2></font><formaction=""method="post"name="form1"><fontsize=6face=方正姚體color=blue>請留言:<inputtype="text"name=
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專利許可使用與轉(zhuǎn)讓協(xié)議合同
- 上海住宅租賃合同范本
- 人事代理人員勞動合同書
- 個人壽險(xiǎn)代理合同書樣本
- 臨時兼職教師勞動合同范文
- 臨時性勞動合同模板
- 專線物流服務(wù)合作協(xié)議合同
- AI智能技術(shù)開發(fā)合作合同模板
- 人事助理試用期聘用合同模板
- 門面租賃協(xié)議書
- 重建成長型思維課件
- 電捕焦油器火災(zāi)爆炸事故分析
- 質(zhì)量問題分析及措施報(bào)告
- 汽修廠安全風(fēng)險(xiǎn)分級管控清單
- 現(xiàn)代通信原理與技術(shù)(第五版)PPT全套完整教學(xué)課件
- 病例展示(皮膚科)
- GB/T 39750-2021光伏發(fā)電系統(tǒng)直流電弧保護(hù)技術(shù)要求
- DB31T 685-2019 養(yǎng)老機(jī)構(gòu)設(shè)施與服務(wù)要求
- 燕子山風(fēng)電場項(xiàng)目安全預(yù)評價報(bào)告
- 高一英語課本必修1各單元重點(diǎn)短語
- 完整版金屬學(xué)與熱處理課件
評論
0/150
提交評論