版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第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對象。這些對象都有其特別的任務與工作,在詳細闡述之前,先簡單地說明每個內(nèi)置對象的功能,然后再將這些對象分六個小節(jié)進行介紹。
對象名稱主要作用Request對象負責在HTTP請求期間檢索客戶端瀏覽器傳遞給服務器的信息。
Response對象動態(tài)響應客戶端請求(Request),并將動態(tài)生成的響應結果返回到客戶端瀏覽器中
Server對象創(chuàng)建對象以及提供服務器屬性信息Session對象負責存儲單個用戶的信息,以便重復使用Application對象負責存儲共享數(shù)據(jù)以供多個用戶使用ObjectContext對象
供ASP程序直接配合MicrosoftTransactionServer(MTS)進行分散式的事務處理。
所謂對象,就是把一些功能封裝好,至于其內(nèi)部具體是怎么工作的,用戶不需要管,只要會使用它就行了。ASP之所以簡單實用,主要是因為它提供了功能強大的內(nèi)部對象和內(nèi)部組件。3.1Request對象
Request對象通常包括了用戶端的相關信息,如瀏覽器的種類、表頭信息、表單參數(shù)及cookies等等。而Response對象則是包含Web服務器所要響應給用戶的各項信息。這兩個對象的功能是對立的,它們結合在一起可以實現(xiàn)客戶端與服務器端的數(shù)據(jù)交換。Request對象的語法描述如下:
Request[.collection|property|method](variable)Request[.集合|屬性|集合](變量或字符串)
其中collection表示Request對象的集合,property表示Request對象的屬性,method表示Request對象的方法,variable是一些字符串,這些字符串指定要從集合中檢索的項目,或作為方法或屬性的輸入。
Request對象只提供一個TotalBytes屬性,這是一個只讀的屬性,表示從客戶端所接收數(shù)據(jù)的字節(jié)的長度。其語法如下:字節(jié)長度=Request.TotalBytesRequest對象屬性例:3-1.asp
Request對象提供BinaryRead方法,該方法是以二進制方式來讀取客戶端使用POST傳送方法所傳遞的數(shù)據(jù)。其語法形式如下:Variant數(shù)組=Request.BinaryRead(Count)Request對象方法一般不常用這種方法
Request對象是ASP的請示對象,是用來從客戶端瀏覽器獲取信息的對象。
Request對象提供了5個集合,可以用來獲取客戶端對Web服務器請求的各類信息,這些集合如表所示。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ù)集合在實現(xiàn)上沒有太大的區(qū)別,主要的區(qū)別在于前者是通過取得HTTP的附加參數(shù)來傳遞數(shù)據(jù)(附加參數(shù)通常是使用“?”來連接的,多個參數(shù)間用&隔開),而后者是通過單獨的數(shù)據(jù)包來傳遞數(shù)據(jù)。QueryString集合不僅僅能收集表單數(shù)據(jù),還可以傳遞附加在URL地址上的信息(非表單數(shù)據(jù))。前面用Form集合傳遞表單元素的例子3-2.htm/3-2.asp,也可以用QueryString集合來實現(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(“索引值”)當一個表單元素名稱不是唯一的情況組件名稱相同的總數(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其實是一個標簽,經(jīng)常可能聽到的中文翻譯:小甜餅。 當你訪問一個需要唯一標識你的站址的WEB站點時,它會在你的硬盤上留下一個標記,下一次你訪問同一個站點時,站點的頁面會查找這個標記。
每個WEB站點都有自己的標記,標記的內(nèi)容可以隨時讀取,但只能由該站點的頁面完成。每個站點的Cookie與其他所有站點的Cookie存在同一文件夾中的不同文件內(nèi) 一個Cookie就是一個唯一標識客戶的標記,Cookie可以包含在一個對話期或幾個對話期之間某個WEB站點的所有頁面共享的信息,使用Cookie還可以在頁面之間交換信息。這項功能經(jīng)常被使用在要求認證客戶密碼以及電子公告板、WEB聊天室等ASP程序中。
Cookies為何能夠持久發(fā)揮作用? 如果服務器沒有檢測到與用戶的對話對應的獨一無二的ID,它將生成一個ID并以Cookies的形式發(fā)送至客戶端。因此,如果用戶接受此Cookies,只需接受一次即可。如果不接受此Cookies,伴隨每一次點擊,都將收到同樣的Cookies接受請求,直至接受為止。
Cookies對于訪問者有什么作用? 瀏覽網(wǎng)上商店時,如果選擇了幾款貨物放到購物車里,然后離開。借助Cookies,幾天以后再回來時,可以不必重復以前的操作,所選擇的貨物會仍然保存在購物車中。此外,借助Cookies技術,還可以更好地使用廣告頁面或網(wǎng)站特定訪問區(qū)域提供的信息。總體上說,Cookies能夠讓我們通過分析數(shù)據(jù)流檢測到什么對自己有用,什么沒有用,因此可以幫助網(wǎng)站開發(fā)者提供更好的網(wǎng)站。有2種使用cookies的基本方式
1、將cookies寫入訪問者的計算機(使用Response命令)
2、從訪問者的計算機中取回cookies(使用Request命令)使用Response對象設置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自身的有關信息。①Domain若被指定,則cookie將被發(fā)送到對該域的請求中去。域屬性表明cookie由哪個網(wǎng)站產(chǎn)生或者讀取,默認情況下,cookie的域屬性設置為產(chǎn)生它的網(wǎng)站,但你也可以根據(jù)需要改變它。Response.Cookies(“CookieName”).Domain=“”
②Path為一路徑屬性,該屬性可以實現(xiàn)更多的安全要求,通過設置網(wǎng)站上精確的路徑,就能限制cookie的使用范圍。如果未設置該屬性,則使用應用程序的路徑。Response.Cookies("CookieName").Path="/maindir/subdir/path"③Expires指定cookie的過期日期。為了在會話結束后將cookie存儲在客戶端磁盤上,或在許多時候,我們希望能更長時間地在訪問者的計算機上保存cookie。必須設置該日期。若此項屬性的設置未超過當前日期,則在任務結束后cookie將到期。設置cookie的使用到期時間為“2010年1月1日”:Response.Cookies("CookieName").Expires=#January01,2010#后面的代碼,將設定cookie的過期時間為“cookie的創(chuàng)建時間+365天”Response.Cookies("CookieName").Expires=Date+365 下面是幾個具體實例。 (1)設置一個不含key的Cookies。<%Response.Cookies("username")="陳建軍"%>
(2)設置一個含key的Cookies。<%Response.Cookies("username")(name1)="陳建軍"%>
(3)設置Cookies有效期。<%Response.Cookies("username").Expires=#2004-10-2#%>執(zhí)行下面的代碼將會在訪問者的計算機中創(chuàng)建一個cookie,名字=VisitorName,值=KenResponse.Cookies("VisitorName")="Ken"可以擴展下面的代碼成為Cookie子關鍵值(key),即cookie字典的生成。代碼如下:Response.Cookies("VisitorName")("FirstName")="Ken"
Response.Cookies("VisitorName")("LastName")="Baumbach"使用Request對象設置Cookies
利用Request對象的Cookies集合的目的在于獲取Cookies的值。 語法:Request.Cookies(Cookies名)[key].[屬性]例如:(1)不指定key的用法為了獲取一個叫Myname的值:<%=Request.Cookies("Myrname")%>(2)指定key的用法為了獲取一個叫Myname的值:<%Response.Writer
Request.Cookies("Myrname")("name")%>Cookies的綜合實例 例4:通過留在本地磁盤上的cookie記錄一年內(nèi)訪問本站的次數(shù),第一次顯示“首次訪問”,以后顯示“第幾次訪問”。
<%dimnumnum=request.cookies("visitnum")ifnum>”0”thennum=num+1
Response.write"您已是第"&num&"次訪問本站點了。"else
Response.write"歡迎您首次訪問本站。"num=“1”endif
response.cookies("visitnum")=num
response.cookies("visitnum").expires=date+365%>
ServerVariables數(shù)據(jù)集合是負責取得Web服務器端的環(huán)境變量(ServerEnvironmentVariable),檢索預定的環(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é)議,并且服務器端要求進行身份驗證,則利用ClinetCertificate集合就可以獲取客戶端瀏覽器的身份驗證信息。不過如果客戶端瀏覽器未送出身份驗證信息,或服務器端也不要求進行身份驗證,那么將返回空值。語法如下:Request.ClientCertificate(關鍵字[子字段])使用SSL驗證時,URL以https://開頭5、ClientCertificate數(shù)據(jù)集合3.2Response對象在ASP中負責將信息傳遞給用戶的對象就是Response對象。
Response對象用于動態(tài)響應客戶端請求(Request),并將動態(tài)生成的響應結果返回到客戶端瀏覽器中,使用該對象可以動態(tài)創(chuàng)建web頁面,改變HTTP標題頭等。
Response對象的使用語法為:
其中collection表示Response對象的集合,property表示Response對象的屬性,method表示Response對象的方法。Response.collection|property|method
Response對象的方法:方
法功
能
說
明AddHeader從名稱到值設置HTML標題。AppendToLog在該請求的Web服務器日志條目后添加字符串。BinaryWrite將給出信息寫入到當前HTTP輸出中,并且不進行任何字符集轉換。Clear清理掉緩沖區(qū)里所有的HTML輸出。End停止處理.asp文件并返回當前的結果。Flush立即向用戶發(fā)送緩沖的輸出。Redirect將重指示信息發(fā)送到瀏覽器,嘗試連接另一個URL。Write將變量作為字符串寫入當前的HTTP輸出。Response對象的屬性:屬
性功
能
說
明Buffer表明頁輸出是否被緩沖。CacheControl決定代理服務器是否能緩存ASP生成的輸出。Charset將字符集的名稱添加到內(nèi)容類型標題中。ContentType指定響應的HTTP內(nèi)容類型。Expires在瀏覽器中緩存的頁面超時前,指定緩存的時間。ExpiresAbsolute指定瀏覽器上緩存頁面超時的日期和時間。IsClientConnected表明客戶端是否與服務器斷開。Pics將PICS標記值添加到響應標題的PICS標記字段中。Status服務器返回的狀態(tài)行的值。
Response對象只有Cookies一個數(shù)據(jù)集合,它允許將數(shù)據(jù)設置在客戶端的瀏覽器中。假如所指定名稱的Cookies不存在,系統(tǒng)會自動在客戶端的瀏覽器中建立新的Cookies。其語法如下:Response.Cookies(CookiesName[(Key)|.Attribute]=CookiesValueResponse對象的方法Write方法
Response.Write是Response對象中最常用的方法,它可以把變量的值發(fā)送到用戶端的當前頁面,用以向瀏覽器輸出動態(tài)信息。 語法:
Response.write
任何數(shù)據(jù)類型(例:3-8.asp)Redirect方法
Response.Redirect用于使瀏覽器立即重定向到程序指定的URL。
語法:
Response.Redirect網(wǎng)址變量或字符串 例7:Response.Redirect應用。<html><head><title>Response.Redirect用法示例</title></head><boby><formname=form1"method="post"action="">請選擇用戶類型:<inputtype="radio"name="user-type"value="loader">領導<inputtype="radio"name="user-type"value="worker">員工<inputtype="submit"value="確定"></form><%IfRequest.form("user-type")="loader"then Response.Redirect"loader.asp"'引導至領導網(wǎng)頁Elseif
Request.Form("user-type")="worker"then Response.Redirect"workeer.asp"'引導至員工網(wǎng)頁Endif%></body></html>Flush方法
Response.Flush用于立即發(fā)送緩沖區(qū)的輸出。 語法:
Response.FlushEnd方法
Response.End方法使Web服務器停止處理腳本返回當前結果,文件中剩余的內(nèi)容將不被處理。如果Response.Buffer
屬性已設置為TRUE,則調用Response.End將緩沖輸出。 語法:
Response.EndClear方法
Response.Clear方法可以清除緩沖區(qū)中所有的HTML輸出。但Clear方法只清除響應正文而不清除響應標題。如果未將Response.Buffer
屬性已設置為TRUE,則該方法將導致運行時錯誤。 語法:
Response.ClearBinaryWrite方法
Response.BinaryWrite方法可以不經(jīng)任何字符轉換就將指定的信息寫到HTTP輸出。該方法主要用來寫非字符串信息(如客戶端應用程序所需的二進制數(shù)據(jù)等)。 語法:
Response.BinaryWrite
二進制數(shù)據(jù)AppendToLog方法
Response.AppendToLog方法將字符串添加到Web服務器日志條目的末尾。 語法:
Response.AppendToLog
“要記錄的字符串”AddHeader方法(1)
Response.AddHeader方法用指定的值添加HTTP標題,該方法常用來響應添加新的HTTP標題,但它并不替代現(xiàn)有的同名標題。 語法:
Response.AddHeader
Name,ValueAddHeader方法(2)
HTTP協(xié)議要求所有的標題都必須在內(nèi)容之前發(fā)送,所以必須在任何的輸出(例如由HTML或Write方法生成的輸出)發(fā)送到客戶端之前在腳本中調用AddHeader。 但當Buffer屬性設置為TRUE例外。若輸出被緩沖,那么就可以在腳本中的任何地方調用AddHeader方法,只要它在Flush之前執(zhí)行即可。AddHeader方法(3)
例:3-9.asp:頁面沒有緩沖
例:3-10.asp:頁面被緩沖
例:3-11.asp:頁面被緩沖,但對AddHeader的調用在對Flush的調用之后出現(xiàn),腳本產(chǎn)生一個運行時錯誤。Response對象的屬性Buffer屬性
Buffer屬性是Response對象使用較多的屬性之一,主要用來控制是否輸出緩沖頁,也就是控制何時將輸出信息送至請求瀏覽器,Buffer屬性的取值可以是Ture或False,若取TURE為使用緩沖頁,反之異然。 該語句需要在.asp文件的第一行使用。
當緩沖頁輸出時,只有當前頁的所有服務器腳本處理完畢或者調用了Flush或End方法后,服務器才將相應發(fā)送給客戶端。 如果不使用緩沖輸出,服務器在處理腳本的同時將輸出發(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屬性
該屬性可以用來設置Web服務器是否將ASP的處理結果暫時存放在代理服務器上。
Charset屬性
該屬性用來設置Web服務器形影給客戶端的文件字符編碼。語法:
Response.Charset=字符集名稱例如:
Response.Charset=“gb2312”
ContentType屬性
該屬性用來指定響應HTTP內(nèi)容類型。如果未指定ContentType,默認為text/HTML。語法:
Response.ContentType=內(nèi)容類型以“類型/子類型”來表示。 Expires屬性
該屬性用來指定在瀏覽器上緩沖存儲的過期還有多少時間。 如果用戶在某頁過期之前又回到此頁,就會顯示緩沖區(qū)中的版本。 如果設置Response.Expires=0,則可使緩存的頁面立即過期。
這是一個較實用的屬性,當客戶提供ASP的登錄頁面進入Web站點后,可利用該屬性使登錄頁面立即過期,有助于數(shù)據(jù)的保密。語法:
Response.Expires=分鐘數(shù)
ExpiresAbsolute屬性
該屬性用來指定在瀏覽器上緩沖中頁面的到期日期時間。 如果用戶在某頁過期之前又回到此頁,就會顯示緩沖區(qū)中的版本。 如果未指定時間,該頁面在當天午夜到期。
如果未指定日期,該頁面在當天的指定時間到期。語法:
Response.ExpiresAbsolute=日期時間IsClientConnected屬性
該屬性為只讀,指示自上次調用Response.Write之后,客戶端是否與服務器相連。PICS屬性 該屬性用來設置PICS標記,并把響應添加到標頭。Status屬性 該屬性用來設置Web服務器要響應的狀態(tài)行的值。Response對象的數(shù)據(jù)集合Response對象只有一個Cookies數(shù)據(jù)集合。例:3-12.asp3.3Server對象Server對象提供對服務器上的方法和屬性的訪問,其中大多數(shù)方法和屬性是作為實用程序的功能服務的。有了Server對象,用戶就可以在服務器上啟動ActiveX對象例程,并使用ActiveServer服務提供象HTML和URL編碼這樣的函數(shù)。Sever對象的使用語法為:
其中property表示Server對象的屬性,method表示Server對象的方法。
Server的屬性只有ScriptTimeout,表示超時值,即在腳本運行超過這一時間之后作超時處理。系統(tǒng)的缺省值為90秒。Sperty|methodServer對象的方法:方法描述CreateObject創(chuàng)建服務器組件的實例。HTMLEncode將HTML編碼應用到指定的字符串。MapPath將指定的虛擬路徑,無論是當前服務器上的絕對路徑,還是當前頁的相對路徑,映射為物理路徑。URLEncode將URL編碼規(guī)則,包括轉義字符,應用到字符串。Transfer直接輸出.asp文件請求,不必離開服務器隊列。Execute執(zhí)行另一個.asp文件,然后返回當前文件。GetLastError獲取ASP的錯誤。Server對象的屬性Server對象只有一個集合。ScriptTimeout屬性可以決定一個頁面中腳本的運行時間,默認為90秒,如果超出最長的時間就自動停止運行,該時間可以增大調節(jié)。例9ScriptTimeout屬性應用。<%Server.ScriptTimeout=140%><html><head><title>顯示此頁面運行的最長的時間</title></head><boby><palign="center">Server對象的ScriptTimeout屬性應用<p><%Response.write"此頁面運行的最長時間是"Response.write
Server.ScriptTimeoutResponse.write"秒"%></boby></html>Server對象的方法1、CreateObject方法CreateObject
方法允許客戶端創(chuàng)建服務器組件的實例。默認情況下,由此方法創(chuàng)建的對象具有頁作用域,即當前ASP頁處理完成之后,服務器將自動破壞這些實例對象。語法:Set對象實例名稱=Server.CreateObject(“ActiveX控件”
)要創(chuàng)建有會話或應用程序作用域的對象,可以使用Session對象保留該對象實例,直到Session對象的運行時間完畢,或者是在其他ASP程序中調用了Session對象的Abandon方法。例如,在如下所示的腳本中,當Session
對象被破壞,即當對話超時時或Abandon
方法被調用時,存儲在會話變量中的對象也將被破壞。<%SetSession("ad")=Server.CreateObject("MSWC.AdRotator")%>不能創(chuàng)建與內(nèi)建對象同名的對象實例。例如,下列腳本將返回錯誤。<%SetResponse=Server.CreateObject("Response")%>
示例<%SetMyAd=Server.CreateObject("MSWC.AdRotator")%>上面的例子創(chuàng)建一個名為MyAd
的MSWC.AdRotator
服務器組件,MSWC.AdRotator
組件可用于在Web頁上的自動輪換廣告。2、MapPath方法MapPath
方法將指定的相對或虛擬路徑映射到服務器上相應的物理目錄上。語法:
Server.MapPath(虛擬路徑字符串)MapPath
方法不支持相對路徑語法(.)或(..)。例如,下列相對路徑../MyDir/MyFile.txt
返回一個錯誤。MapPath
方法不檢查返回的路徑是否正確或在服務器上是否存在。對于下列示例,文件data.txt
和包含下列腳本的test.asp
文件都位于目錄C:\Inetpub\Wwwroot\Script
下。C:\Inetpub\Wwwroot
目錄被設置為服務器的宿主目錄。下列示例使用服務器變量PATH_INFO映射當前文件的物理路徑。腳本<%=server.mappath(Request.ServerVariables("PATH_INFO"))%>輸出c:\inetpub\wwwroot\script\test.asp由于下列示例中的路徑參數(shù)不是以斜杠字符開始的,所以它們被相對映射到當前目錄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
接下來的兩個示例使用斜杠字符指定返回的路徑應被視為在服務器的完整虛擬路徑。腳本<%=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方法對指定的字符串應用HTML編碼。語法:
Server.HTMLEncode(string)示例腳本<%=Server.HTMLEncode("Theparagraphtag:<P>")%>
輸出Theparagraphtag:<P>如果查看一下源文件或以文本方式打開一個Web頁,您就可以看到已編碼的HTML。3、URLEncode方法URLEncode
方法將URL編碼規(guī)則,包括轉義字符,應用到指定的字符串。語法:
Server.URLEncode(string)示例腳本<%Response.Write(Server.URLEncode(""))%>
輸出http%3A%2F%2Fwww%2Emicrosoft%2Ecom字符串數(shù)據(jù)以URL的形式傳遞到服務器時,在字符串中不允許出現(xiàn)空格,也不允許出現(xiàn)特殊字符。4、Transfer方法Server.Transfer(URL)用于停止當前頁面的執(zhí)行,吧控制轉到指定的頁面,用戶的當前會話狀態(tài)和事物狀態(tài)也傳遞到指定頁面,從而避免客戶端的重定向,可以節(jié)省一些資源。5、Execute方法Server.Execute(URL)停止當前頁面的執(zhí)行,把控制轉到指定的網(wǎng)頁。用戶的當前環(huán)境也傳遞到新的網(wǎng)頁。該頁面執(zhí)行完成后,控制傳遞回原先的頁面,并繼續(xù)執(zhí)行Execute方法后面的語句。6、GetLastError方法Server.GetLastError返回該頁面在ASP處理過程中發(fā)生的最近一次錯誤的詳細數(shù)據(jù)。3.4Session對象 在網(wǎng)站首頁客戶客戶輸入了自己的用戶名和密碼,用什么來記住用戶名呢? 到目前為止,我們利用已學知識可以使用下一兩種方法。 方法一:利用Request對象的Querystring方法一頁一頁傳遞過去。這種方法的缺點是太麻煩。 方法二:利用Cookies保存用戶名。 本節(jié)再來學習一種更簡潔的方法,就是利用Session對象。由于網(wǎng)頁是一種無狀態(tài)的程序,因此無法得知用戶的瀏覽狀態(tài)??梢允褂肧ession對象存儲特定用戶會話所需的信息。這樣,當用戶在應用程序的Web頁之間跳轉時,存儲在Session對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。當用戶請求來自應用程序的Web頁時,如果該用戶還沒有會話,則Web服務器將自動創(chuàng)建一個Session對象。當會話過期或被放棄后,服務器將終止該會話。要注意的是,會話狀態(tài)僅在支持Cookie的瀏覽器中保留。如果客戶關閉了Cookie選項,Session對象也就不能發(fā)揮作用了。
任何存儲在用戶Session中的信息可以在用戶調用下一個頁面時取得。也就是說,客戶在該網(wǎng)站的任何一個頁面都可以存取Session信息。 Session對象常被用在: (1)存儲用戶的首選項; (2)保存用戶的身份標記,實現(xiàn)用戶的身份認證和用戶權限管理等。
Session對象的使用語法為:
其中collection表示Session對象的集合,property表示Session對象的屬性,method表示Session對象的方法。Session.collection|property|methodSession對象的集合:
絕大部分的Session變量存放于Contents集合中,當創(chuàng)建一個新的Session變量時,其實就是在Cotents集合中添加了一項。
集合名描述Contents包含已用腳本命令添加到會話中的項目。StaticObjects包含通過<OBJECT>標記創(chuàng)建的并給定了會話作用域的對象。Session對象的屬性:屬性名描述CodePage將用于符號映射的代碼頁。LCID現(xiàn)場標識。SessionID返回用戶的會話驗證。Timeout應用程序會話狀態(tài)的超時時限,以分鐘為單位。Session對象只有一個方法。 Abandon:清除Session對象。
Session對象有兩個事件,且必須和Global.asa結合使用。 (1)Session_OnStart:一個Session對象開始前,觸發(fā)該事件。 (2)Session_OnEnd:一個Session對象結束時,觸發(fā)該事件。這兩個事件的代碼必須放在global.asa文件中,語法如下:<SCRIPTLANGUAGE=ScriptLanguageRUNAT=Server>SubSession_OnStart‘事件的處理程序代碼EndSubSubSession_OnEnd‘事件的處理程序代碼EndSub</SCRIPT>其中,ScriptLanguage是指定用于編寫事件腳本的腳本編寫語言。
利用Session存儲信息語法:Session
(“Session名字”)
=變量或字符串信息Session
.contents(“Session名字”)
=變量或字符串信息絕大部分的Session變量存放在Contents結合中。例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&"您好,歡迎學習ASP程序設計<br>"
response.write"您的年齡是"&Session("Age")'直接使用Session值%></body></html>例12
使用Session編寫計數(shù)器程序。<html><head><title>使用session變量計數(shù)</title></head><body><P>使用Session變量計數(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
屬性返回用戶的會話標識。在創(chuàng)建會話時,服務器會為每一個會話生成一個單獨的標識。會話標識以長整形數(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屬性用來設置“過期時間”,方法是: ①在ASP的注冊表中修改系統(tǒng)默認值; ②用Session對象的Timeout屬性可以修改來更改。不過,請注意用該屬性更改的有效期長度不能低于默認值20分鐘。語法:Session.Timeout=MaxTime例如:<%Session.Timeout=40'將有效期改為40分鐘%>Session對象的方法 Session對象到期會自動清除,也就是說,Session對象的生命周期起始于瀏覽器第一次與服務器聯(lián)機時,終止于瀏覽器結束聯(lián)機時,或瀏覽器超過20分鐘不再向服務器端提出請求或刷新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之間共享信息。最大的不同在于其應用的范圍:
Application對象是對所有用戶,
Session對象是對單一用戶。也就是說,不同的客戶訪問不同的Session對象,但許多客戶可以同時訪問公共Application對象。
Application對象簡介 ASP應用程序中,如果同時訪問的用戶很多,就可能會出現(xiàn)很多用戶同時修改一個Application變量的值的情況。可以利用Application對象的兩個方法:Lock和Unlock來解決。 (1)Lock:鎖定Application對象。 (2)Unlock:解除鎖定。 Application對象有兩個事件,必須和Global.asa結合使用。 (1)Application_OnStart:Application開始前,調用該程序。 (2)Application_OnEnd:Application結束后,調用該程序。利用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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版微電影劇本委托創(chuàng)作合同模板3篇
- 二零二五版錨索施工項目質量監(jiān)督及驗收合同4篇
- 二零二五版高校教師博士后工作合同范本2篇
- 2025年度個人食材采購與加工一體化服務合同4篇
- 二零二五年度品牌冰箱環(huán)保認證與推廣合同4篇
- 二零二五年度國際會議外籍嘉賓邀請合同
- 二零二五年度公共場所安全管理服務協(xié)議3篇
- 2025版國際合作項目合同中因國際關系變化情勢變更的合同修訂條款4篇
- 二零二五年度企業(yè)專利技術評估與交易合同3篇
- 2025年度商業(yè)地產(chǎn)租賃轉租與廣告投放合同3篇
- 第十七章-阿法芙·I·梅勒斯的轉變理論
- 焊接機器人在汽車制造中應用案例分析報告
- 合成生物學在生物技術中的應用
- 中醫(yī)門診病歷
- 廣西華銀鋁業(yè)財務分析報告
- 無違法犯罪記錄證明申請表(個人)
- 大學生勞動教育PPT完整全套教學課件
- 繼電保護原理應用及配置課件
- 《殺死一只知更鳥》讀書分享PPT
- 蓋洛普Q12解讀和實施完整版
- 2023年Web前端技術試題
評論
0/150
提交評論