爲了實現網站的經常使用功能,ASP提供了內置對象。內置對象的特色是:不須要事先聲明或者建立一個實例,能夠直接使用。常見的內置對象有javascript
在客戶端/服務器結構中,當客戶端Web頁面向網站服務器端傳遞數據時,ASP經過Request對象可以獲取客戶端提交的所有信息。包括客戶端的HTTP變量、在網站服務器端存放的客戶端瀏覽器的Cookie數據、賦予URL以後的字符串信息、頁面表單傳送的數據以及客戶端認證等html
Request對象的語法以下java
Request[.collection | property | method](variable)程序員
collection:Request對象的數據集合sql
Property:Request對象的屬性數據庫
method:Request對象的方法windows
variable:由字符串定義的變量參數,指定要從集合中檢索的項目或者做爲方法、屬性的輸出數組
例如:經過Request對象的QueryString數據集合取得傳值參數myid的值並賦值給變量瀏覽器
<%緩存
Dim id
id=Request.QueryString("myid")
%>
這裏值得注意的是,在使用Request對象時,collection、property和method最多隻能選擇一個;也能夠三個都不選,這是Request對象根據如下順序搜索集合:QueryString、Form、Cookie、Servervariable、ClientCertificate,當發現第一個匹配的變量時,接肯定是要訪問的成員
QueryString對象包括5個集合,1個屬性和一個方法
成員 | 描述 |
Form數據集合 | 讀取HTML表單域控件的值,即POST方式提交的數據 |
QueryString數據集合 | 讀取賦予URL地址後的字符串的值 |
Cookies數據集合 | 讀取存放在客戶端瀏覽器Cookie的內容 |
ServerVariables數據集合 | 讀取客戶端請求發出的HTTp報頭值及WEB服務器的環境變量值 |
ClientCertificate數據集合 | 讀取客戶端的驗證字段 |
TotalBytes屬性 | 返回客戶端發出請求的字節數量 |
BinaryRead方法 | 以二進制方式讀取客戶端請求,並返回一個變量數組 |
表單是表準HTML文件的一部分,用戶經過點擊表單中的提交按鈕提交輸入的數據
在含有ASP動態代碼的WEB頁面中,可使用Request對象的Form集合收集客戶端的以表單形式發送到服務器的信息
語法:
Request。Form(element)[index | .count]
element:指定集合要檢索的表單元素的名稱
index:索引值,爲可選參數,能夠取得表單中名稱相同的元素值。索引值是1至Request.Form(element).Count之間的任意整數
Count:集合中相同名稱元素的個數
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>獲取表單數據</title> 7 </head> 8 <body> 9 <form id="form1" name="form1" method="post" action="code.asp"> 10 <p>用戶名:</p> 11 <input name="txt_username" type="text" id="txt_username" /> 12 <p>密 碼:</p> 13 <input name="txt_pwd" type="password" id="txt_pwd" /> 14 <p style="width:200px" align="center"> 15 <input type="submit" name="submit" value="提交" /> 16 17 <input type="reset" name="submit2" value="重置" /> 18 </form> 19 </body> 20 </html>
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>無標題文檔</title> 7 </head> 8 <p>用戶名:<%=Request.Form("txt_username")%> 9 <p>密碼爲:<%=Request.Form("txt_pwd")%> 10 <body> 11 </body> 12 </html>
表單中的多個對象具備相同名稱時,能夠利用Count屬性得到具備相同名稱對象的總數,而後經過索引獲取不一樣內容值,也能夠應用for each ...next語句來獲取相同名稱對象的不一樣內容值。
代碼:獲取複選框的值並顯示其內容
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>獲取表單數據</title> </head> <body> <form id="form1" name="form1" method="post" action="code.asp"> <p>愛好:</p> <input name="favour" type="checkbox" id="favour" value="計算機" />計算機 <input name="favour" type="checkbox" id="favour" value="英語" />英語 <input name="favour" type="checkbox" id="favour" value="籃球" />籃球 <input name="favour" type="checkbox" id="favour" value="旅遊" />旅遊 <p style="width:200px" align="center"> <input type="submit" name="submit" value="提交" /> <input type="reset" name="submit2" value="重置" /> </form> </body> </html>
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>無標題文檔</title> 7 </head> 8 <% 9 dim nums,i 10 nums=request.Form("favour").count 11 for i=1 to nums 12 response.Write request.Form("favour")(i) & "<br>" 13 next 14 %> 15 <body> 16 </body> 17 </html>
經過Request對象的QueryString數據集合能夠查詢字符串數據
語法:
Request.QueryString(variable)[(index) | .count]
variable:指定要檢索的HTTP查詢字符串中的變量名
index:索引值,爲可選參數,能夠取得HTTP查詢字符串中相同變量名的變量值。索引值能夠是1至Request.QueryString(variable).Count之間的任意整數
Count:查詢字符串中相同名稱變量的個數
有兩種狀況要在服務器端指定利用QueryString數據集合取得客戶端傳送的數據,一是表單中經過Get方式傳遞數據,二是利用超連接標記<a>傳遞參數
①經過get方式傳遞的表單數據
與Form數據集合類似,QueryString數據集合能夠取得表單中經過get方式傳遞的數據。
如例:獲取get方式傳遞的表單數據
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>獲取表單數據</title> 7 </head> 8 <body> 9 <form id="form1" name="form1" method="get" action="code.asp"> 10 <p>職 務:</p> 11 <input name="post" type="radio" id="favour" value="學生" />學生 12 <input name="post" type="radio" id="favour" value="老師" />老師 13 <p>所在專業:</p> 14 <select name="profession" size="3" id="profession"> 15 <option value="計算機科學與技術">計算機科學與技術</option> 16 <option value="英語">英語</option> 17 <option value="數學">數學</option> 18 <p style="width:200px" align="center"></p> 19 <input type="submit" name="submit" value="提交" /> 20 21 <input type="reset" name="submit2" value="重置" /> 22 </form> 23 </body> 24 </html>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>無標題文檔</title> </head> 你的職位:<%=request.QueryString("post")%> <br> 你的專業:<%=request.QueryString("profession")%> <body> </body> </html>
②使用超連接傳遞的參數
在程序中,能夠直接利用HTML的<a>標籤傳遞參數,傳遞的參數寫在?後面,若是有多個參數則使用&做爲分隔符,使用Request對象的QueryString數據集合能夠取得所傳遞的參數值
經過Request對象的ServerVariables數據集合能夠取得服務器端的環境變量信息。這些信息包括髮出請求的瀏覽器信息、構成請求的HTTP方法、用戶登陸windows NT的帳號、客戶端的IP地址等。服務器端環境變量對ASP程序有很大幫助,使程序可以根據不一樣狀況進行判斷,提升了程序的健壯性。 服務器端環境變量是隻讀變量,只能查閱,不能設置。
語法:
Request.ServerVariables(server_environment_variable)
server_environment_variable:服務器端環境變量
代碼:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>服務器環境變量</title> </head> <body> <% Response.Write "服務器名稱、域名和IP地址(SERVER_NAME):" & Request.ServerVariables("SERVER_NAME") & "<br>" Response.Write "客戶端IP地址(REMOTE_ADDR):" & Request.ServerVariables("REMOTE_ADDR") & "<br>" Response.Write "客戶端提供的訪問路徑(PATH_INFO):" & Request.ServerVariables("PATH_INFO") & "<br>" %> </body> </html>
Response對象時ASP內置對象中直接對客戶端發送數據的對象。Request請求對象與Response響應對象構成了客戶端/服務器響應的模式。經過Response能夠將客戶端重定向到一個指定的頁面中,能夠設置客戶端的Cookie值等。
語法:
Response對象的語法以下:
Response.collection | property | method
collection:Response對象的數據集合
property:Response對象的屬性
method:Response對象的方法
例如:使用Response對象的Cookie數據集合設置客戶端的Cookie關鍵字並賦值
<%
Response.Cookies("info")="ASP"
%>
Response與一個HTTP響應對應,經過設置其屬性和方法能夠控制如何將服務器端的數據發送到客戶端瀏覽器。Response主要成員以下:
成員 | 描述 |
Cookies數據集合 | 設置客戶端瀏覽器的Cookie值 |
Buffer屬性 | 代表輸出頁是否被緩衝 |
CacheControl屬性 | 決定代理服務器是否能緩存ASP生成的輸出頁 |
Status屬性 | 服務器返回的狀態行的值 |
ContentType屬性 | 指定響應的HTTP內容類型 |
Charset屬性 | 將字符集的名稱添加到內容類型標題中 |
Expires屬性 | 在瀏覽器中緩存頁面超時前,能夠指定緩存時間 |
ExpiresAbsolute屬性 | 指定瀏覽器上緩存頁面超時的日期和時間 |
IsClientConnected屬性 | 代表客戶端是否與服務器斷開 |
PICS屬性 | 將PICS標記的值添加到響應的標題的PICS標記字段中 |
Write方法 | 直接向客戶端瀏覽器輸出數據 |
End方法 | 中止處理.asp文件並返回當前結果 |
Redirect方法 | 重定向當前頁面,鏈接另外一個URL |
Clear方法 | 清除服務器中緩存的HTML信息 |
Flush方法 | 當即輸出緩衝區的內容 |
BinaryWrite方法 | 按照字節格式向客戶端瀏覽器輸出數據,不進行任何字符集的轉換 |
AddHeader方法 | 設置HTML標題 |
AppendToLog方法 | 在WEB服務器的日誌文件中記錄日誌 |
使用Response對象的Write方法能夠將指定的字符串信息輸出到客戶端。Write方法是Response對象經常使用的方法
語法:
Response.Write variant
variant:輸出到瀏覽器的變量單數句或者字符串
注意:若是在輸出字符串中包含ASP程序定界符,「%>」,WEB服務器解釋時就會覺得ASP語句結束,形成服務器錯誤。所以,在ASP程序中須要向瀏覽器輸出"%>"時,能夠用"%\>"代替,即將其做爲轉義符輸出,這樣ASP處理引擎就會自動轉化"%>"爲字符串
WEB服務器響應客戶端的請求時,是以信息流的形式將響應數據發送給客戶端的,發送過程是先返回響應頭,再返回正式的頁面。在處理ASP頁面時,信息流的發送則是生成一段頁面就當即發送一段信息流I返回給瀏覽器。
ASP提供了另外一種發送數據的方式,即利用緩存輸出。緩存輸出是指WEB服務器生成ASP頁面時,等ASP頁面所有處理完以後,再返回用戶請求
①使用緩衝輸出
a.Buffer屬性:在默認狀況下緩衝是關閉的,經過設置Response對象的buffer屬性爲true,能夠打開緩衝。緩衝啓用後凡是輸出到客戶端的信息都暫時存入緩衝區,直到整個ASP頁面執行結束或調用了Response對象的flush或end方法後,纔將響應發送給客戶端的瀏覽器。
語法:
Response.Buffer=True/False
Response對象的Buffer屬性必須在任何信息發向客戶端瀏覽器以前設置,不然是無效的,而且會致使一個錯誤
例如:在頁面中 啓用緩衝
<%
Response.Buffer="True"
%>
b.Flush方法:用於將緩衝區內容當即發送給客戶端瀏覽器。
語法:
Response.Flush
c.Clear方法:用於清除緩衝區
語法:
Response.Clear
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>使用緩衝輸出</title> </head> <body> <% dim i for i=1 to 20 response.Write i & "<br>" if i=10 then response.Flush() next response.Clear() %> </body> </html>
②設置緩衝的有效期限
保存在緩存中的內容是有必定期限的,Response提供的一些屬性控制緩存的期限
a.CacheControl:應用程序能夠經過代理服務器將頁面發送給客戶。代理服務器表明客戶端瀏覽器向WEB服務器請求頁面。代理服務器高速緩存HTML頁,這樣對同一頁的重複請求會迅速高效的返回到瀏覽器。
在默認狀況下,ASP指示代理服務器不要高速緩存ASP頁自己。經過Response對象的CacheControl屬性設置Cacche-Control頭字段,能夠容許代理服務器高速緩存特定頁面。
語法:
Request.CacheControl [=Cache_Control_Header]
Cache_Control_Header:表示緩衝存儲器控制標題,取值爲private或public
b.Expires屬性:用於指定在客戶端瀏覽器上緩衝存儲的頁面距過時還有多少時間。
語法:
Response.Expires [=number]
number:指定緩存的頁面距離過時還有多少時間,單位爲分鐘
c.ExpiresAbsolute:指定緩存於客戶端瀏覽器中的頁面到期的日期時間
語法:
Response.ExpiresAbsolute [date][time]
date:指定頁面的到期日期
time:指定頁的到期時間
網頁重定向是指從一個網頁跳轉到其餘頁面。應用Response對象的Redirect方法能夠將客戶端瀏覽器重定向到另外一個頁面。若是須要從當前網頁轉移到一個新的URL,而不用通過用戶去單擊超連接或者搜索URL,此時可使用該方法使用戶瀏覽器重定向直接重定向
語法:
Response.Redirect URL
URL:資源定位符,表示瀏覽器重定向的目標頁面
調用Redirect方法,將會忽略當前頁面全部輸出而直接定向到被指定的頁面,即在頁面中顯示設置的響應正文都被忽略
例如:網頁重定向
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>重定向</title> 7 </head> 8 <body> 9 <% 10 if datepart("yyyy",now()) <> "2000" then '判斷當前時間中的年份 11 Response.Write "歡迎您!" 12 Response.Redirect "index_02.asp" 13 end if 14 %> 15 </body> 16 </html>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>無標題文檔</title> </head> <% Response.Write "歡迎瀏覽index_02頁面中的內容" %> <body> </body> </html>
調用Response對象的BinaryWrite方法能夠不進行任何字符集轉換,而直接向客戶端瀏覽器發送二進制數據。
語法:
Response.BinaryWrite Variable
Variable:是一個變量,它的值是將要輸出的二進制數據。二進制數據通常是指非文字資料,如圖像文件,聲音文件等
例如:輸出二進制數據
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>表單</title> 7 </head> 8 <body> 9 <form id="form1" name="form1" method="post" action="code.asp"> 10 <p>用戶名: 11 <input name="name" type="text" id="name" /> 12 <p>性 別 13 <input name="sex" type="radio" value="男" checked="checked"/> 14 男 15 <input name="sex" type="radio" value="女"/> 16 女 17 <p style="width:200px" align="center"> 18 <input type="submit" name="Submit1" value="提交" /> 19 <input type="reset" name="submit2" value="重置" /> 20 </form> 21 </body> 22 </html>
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>無標題文檔</title> 7 </head> 8 <% 9 dim counter,array(2) 10 counter=request.TotalBytes '得到客戶端以post方式發送的表單數據的字節數 11 array(0)=request.BinaryRead(counter) '以二進制方式讀取數據 12 Response.BinaryWrite array(0) '輸出二進制數據 13 %> 14 <body> 15 </body> 16 </html>
Cookie其實是一個字符串或者一個標記。當一個包含Cookie的頁面被用戶瀏覽器讀取時,瀏覽器就會爲這個站點自動創建Cookie文件,將此文件保存在系統目錄中的Cookie文件夾中,而且會把接受的數據寫進這個文件,這樣一個Cookie就被存入到本地硬盤中,當須要時該網站能夠從用戶的本地硬盤讀取這些Cookie值,Cookie文件中 的變量稱爲Cookie變量。
Cookie在指定的聲明週期內都有效,因此WEB設計人員可使用Cookie在各個不一樣的ASP頁面間傳遞變量
a.寫入Cookie
使用Response對象的cookies數據集合能夠在客戶端寫入Cookie
語法:
Response.Cookies(cookiesname)[(key) | .attribute]=value
cookiesname:必選參數,指定Cookie的名字
key:可選參數,設置Cookie關鍵字
attribute:Cookie的屬性參數,指定cookie自身的有關信息。
value:表示指定給Cookie的值
名稱 | 描述 |
Expires | 僅可寫入,指定該Cookie到期的時間 |
Domain | 僅可寫入,指定Cookie僅送到該網域 |
Path | 僅可寫入,指定Cookie僅送到該路徑 |
Secure | 僅可寫入,設置該Cookie的安全性 |
HasKeys | 只讀,指定Cookie是否包含關鍵字,也就是斷定Cookies目錄下是否包含其餘Cookies |
b.讀取Cookie
使用Request對象的Cookie數據集合來讀取cookie的值
語法:
Request.Cookies(cookiesname)[(key) | .attribute]
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>在網頁中使用Cookie</title> </head> <body> <% Response.Cookies("user")("username")="UserLi" '定義cookies變量關鍵字 Response.Cookies("user")("password")="pwdpwd" ' Response.Cookies("user").Expires=date()+1 '定義Cookies變量User的有效期 %> <a href="code.asp">查看cookies變量</a> </body> </html>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>無標題文檔</title> </head> <% if request.Cookies("user").haskeys then 'Cookies變量user包含關鍵字 for each key in request.Cookies("user") '遍歷關鍵字 Response.Write "Cookies 關鍵字" & key & "的值爲:" & Request.Cookies("user")(key) & "<br><br>" next end if %> <body> </body> </html>
調用Response對象的end方法可使WEB服務器上的ASP處理程序中止處理ASP腳本,並返回當前結果,此語法後面的內容將不會被處理
語法:
Response.end
使用Response對象的end方法能夠強制結束ASP程序的執行,在調試程序時能夠應用該方法。
ASP程序是在WEB服務器上執行的,在WEB站點中建立一個基於ASP的應用程序以後,能夠經過Application對象在ASP應用程序的全部用戶之間共享信息。也就是說,Application對象中包含的數據能夠在整個WEB站點中被全部用戶使用,而且能夠在網站運行期間持久保存數據。應用Application對象能夠完成統計網站的在線人數、建立多用戶遊戲及多用戶聊天室等功能
語法:
Application.collection | method
collection:Application對象的數據集合
method:Application對象的方法
Application對象能夠定義應用級變量,應用級變量是一種對象級的變量,隸屬於Application對象,它的做用域等同於Application對象的做用域
例如,經過Application對象定義一個應用級變量
<% Application ("Username")="Manager"%>
Application對象沒有內置的屬性,其成員如表
成員 | 描述 |
Contents集合 | 在Application層次的全部可用的變量集合,不包含使用<Object>標記創建的變量 |
StaticObject集合 | 在Global.asa文件中經過使用<Object>標記創建的Application層次的變量集合 |
Contents.Remove方法 | 從Application對象的Contents集合中刪除一個項目 |
Contents.RemoveALL方法 | 從Application對象的Contents集合中刪除全部項目 |
Lock方法 | 鎖定Application對象,其餘用戶就不能修改同一個Application變量 |
Unlock方法 | 解除Application變量的鎖定狀態 |
Application_OnStart事件 | 當應用程序的第一個頁面被請求時,觸發這個事件 |
Application_OnEnd事件 | 當WEB服務器關閉時這個事件中的代碼被觸發 |
絕大部分的Application應用級變量都存放於Contents集合中,Contents數據集合包含全部經過腳本命令添加到應用程序中的項目,可使用Contents集合獲取給定的應用程序做用域的項目列表或者指定一個特殊項目爲操做對象,當建立一個新的Application應用級變量時,其實就是在Contents集合中添加了一項。
語法:
Application.Contents(key)
key:用於指定要獲取的項目的名稱
Application對象的Contents數據集合包含用Server對象的createobject方法建立的對象和經過Application對象聲明創建數值變量,不包含以<Object>標記定義的對象,存儲在Application集合中的信息在整個應用程序執行期間有效且具備程序做用域
如例:訪問應用級變量
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <% '定義應用級變量 Application("user")="userLi" Application("login")=32 '輸出Contents集合成員 for each key in Application.Contents response.write("<br>" & key & "=" & Application.Contents(key)) next %> </body> </html>
Application對象的Application_OnStart事件和Application_OnEnd事件以及Session對象的Session_OnStart事件和Session_OnEnd事件都是定義在Global.asa文件中的
Global.asa文件是用來存放執行任何ASP應用程序期間的Application、Session事件程序,當Application或者Session對象被第一次調用或結束時,就會執行該Global.asa文件內的對應程序。一個應用程序只能對應一個Global.asa文件,該文件只能存放在網站的根目錄下才能正常運行。
如例:製做網站計數器
<script language="vbscript" runat="server"> sub Application_OnStart() if Isempty(Application("Counter")) then Application.Lock() Application("Counter")=0 Application.UnLock() end if //訪問量增長1 Application.Lock() Application("Counter")=Application("Counter")+1 Application.UnLock() end sub </script>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> 您是第 <% response.Write Application("Counter") %> 位訪問者 </body> </html>
使用Session對象能夠存儲用戶我的會話所需的信息。當用戶站點不一樣頁面切換時,存儲在Session對象中的變量不會清除。使用Session對象能夠實現用戶信息在多個WEB頁面共享,還能夠跟蹤瀏覽者的訪問路徑,這樣對了解頁面的訪問狀況及網站的定位都有幫助
語法:
Session.collection | property | method
collection: Session對象的集合
property:Session對象的屬性
method:Session對象的方法
注意:使用Session變量的時候必定要注意拼寫問題,WEB服務器不提供相應的語法檢查,Option Explicit語法也不起做用
Session對象的成員以下表所示
成員 | 描述 |
Contents集合 | 包含經過腳本命令添加到應用程序中的變量、對象 |
StaticObject集合 | 包含由<Object>標記添加到Session中的對象 |
SessionID屬性 | 系統用來存放而且識別該鏈接期間所使用的惟一標識碼,它的數據類型是長整型,而且是隻讀的 |
Timeout屬性 | 應用程序會話的超時時限,以分鐘爲單位 |
CodePage屬性 | 將用於符號映射的代碼頁 |
LCID屬性 | 現場標識 |
Abandon方法 | 釋放Session對象佔用的資源 |
Session_OnStart事件 | 還沒有創建會話的用戶請求訪問應用程序的頁面時,觸發該事件 |
Session_OnEnd事件 | 會話超時或者會話被放棄時,觸發該事件 |
Session對象的Contents數據集合包含經過Server對象的CreateObject方法建立的對象和Session對象聲明創建的變量,不包含以<Object>標記定義的對象。Session對象存在期間,存儲在Session對象的Contents數據集合中的信息是有效的。
語法:
Session.Contents(key)
key:用於指定要獲取的項目名稱
Session對象的Contents數據集合支持For Each ... Next 和 For ... Next 循環,可使用循環遍歷Contents數據集合中的成員
例如:訪問Session會話級變量
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title></title> 7 </head> 8 <body> 9 <% 10 '定義會話級變量 11 session("username")="dzj" 12 session("grand")="星級會員" 13 '輸出集合的成員 14 for each key in session.Contents 15 response.Write("<br>" & key & "=" & Session.Contents(key)) 16 next 17 %> 18 </body> 19 </html>
在建立會話時,服務器會爲每個會話生成一個單獨的標識,使用Session對象的SessionID屬性能夠返回當前會話的惟一標識符,即返回用戶的會話標識。
Session對象只提供了Abandon方法,該方法將刪除全部存儲在Session對象中的數據並釋放其所佔的資源。
語法:
Session.Abandon
若是未顯式調用Abandon方法,服務器將在會話超時後刪除Session對象數據。調用Abandon方法時,會話對象不會被當即刪除,而是中止對該Session對象的監控,而後把Session對象放入隊列,按順序進行刪除。也就是說,在調用Abandon方法後,能夠在當前頁上訪問存儲在Session對象中的變量,但在進入另外一個WEB頁面時,先前設置Session對象的變量值將爲空,服務器會爲用戶新建立一個Session對象
如例:釋放Session對象
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <% '調用Abandon方法 Session.Abandon() '輸出Session對象的對象數據 Response.Write "用戶的SessionID爲:" & Session.SessionID & "<br>" '定義會話級變量 session("username")="dzj" session("grand")="星級會員" '輸出集合的成員 for each key in session.Contents response.Write("<br>" & key & "=" & Session.Contents(key)) next %> <a href="code.asp" target="_balck">查看Session對象數據</a> </body> </html>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>無標題文檔</title> </head> <% username=session("username") if username="" then username="空" end if response.Write "上一頁的username爲:" & username response.Write "<br>爲用戶新建的SessionID爲:" & session.SessionID %> <body> </body> </html>
ASP的Server服務對象提供了對服務器上的屬性和方法的訪問,從而用來獲取WEB服務器的特性和設置。
使用Server對象能夠建立各類服務器組件對象實例,程序調用建立對象的屬性、方法以實現訪問數據庫、對文件進行輸入、輸出操做以及在WEB頁上自動輪顯廣告圖像等功能。使用Server對象還能夠完成ASP腳本、處理HTML和URL編碼以及獲取服務器對象的路徑信息等。
語法:
Server.property | method
property:Server對象的屬性
method:Server對象的方法
例如:經過Server對象建立一個Conn的ADO的Connection對象實例
<%
dim conn
set conn = Server.CreateObject("ADODB.Connection")
%>
Server對象的成員如表所示
成員 | 描述 |
ScriptTimeOut屬性 | 設置ASP腳本執行的超時時間 |
CreateObject方法 | 建立服務器組件的實例 |
MapPath方法 | 將指定的虛擬路徑映射爲物理路徑 |
HTMLEncode方法 | 將HTML編碼應用到指定的字符串 |
URLEncode方法 | 將URL編碼規則應用到字符串 |
Execute方法 | 中止當前頁面的執行,把控制轉到指定路徑的網頁,當前環境也被傳到新的網頁,在該頁面執行完成後將控制傳遞迴原來的頁面 |
Transfer方法 | 與Execute方法相似。不一樣的是,當新頁面執行完成時,執行過程結束而不是返回原來的頁面繼續執行 |
Server對象只提供一個ScriptTimeout屬性,用於設置一個ASP腳本執行的超時時間,即腳本所容許的最長執行時間,若是在指定的時間內腳本沒有執行完成,系統將中止其執行,而且顯示超時錯誤。應用該屬性能夠防止出現一些進入死循環的程序致使頁面服務器過載的問題
語法:
Server.ScriptTimeout=numSeconds
numSeconds:用於指定腳本運行的最大可執行秒數,默認爲90秒
如例:設置ASP腳本執行時間
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <% Server.ScriptTimeout=10 dim counter counter=0 while(1) counter=counter+1 wend %> </body> </html>
上面的代碼若是未設置腳本執行時間,程序將一直執行到服務器關閉,因此,設置合適的超時時間(腳本的)是十分必要的,不然將浪費服務器資源,堵塞用戶請求,形成服務器忙的狀態。
調用Server對象的CreateObject方法能夠建立服務器組件的實例,實現一些依賴腳本語言不能實現的功能,ASP有標準的函數調用接口,只要在操做系統上登記註冊了組件程序,COM就會在系統註冊表裏維護這些資源,以供程序員調用
語法:
Server.CreateObject(progID)
progID:用於指定要建立的對象類型,其格式爲
[Vendor. ] Component [.Version]
Vendor:表示擁有該對象的應用名
Component:表示該對象組件的名字
Version:表示版本號
例如:建立一個名爲FSO的FileSystemObject對象實例,並將其保存在Session對象變量中
<%
dim fso
set fso=Server.CreateObject(「Scripting.FileSystemObject」)
Session("ofile")=fso
%>
CreateObject方法僅能建立外置對象實例,不能用來建立系統的內置對象實例。用該方法建立的對象實例僅在建立它的頁面中是有效的,即當處理完該頁面程序後,建立的對象會自動消失,若想在其餘頁面引用該對象,能夠將對象實例存儲在Session對象或者Application對象中。
server對象的MapPath方法用於返回虛擬目錄 在WEB服務器上的真是路徑
語法:
Server.MapPath(String)
String:用於指定虛擬路徑的字符串
虛擬路徑若是是以"/"或"\"開始表示,MapPath將返回服務器端的宿主目錄,若是虛擬路徑以其餘字符串開始,MapPath將把這個虛擬路徑看成相對路徑,相對於當前調用MapPath的頁面,返回物理路徑。
若想取得當前運行的ASP文件所在的真實路徑,可使用Request對象的服務器變量PATH_INFO來映射當前文件的物理路徑。
例如:獲取文件的真實物理路徑
調用Server對象的MapPath方法輸出網站所在根目錄、根目錄下temp.asp文件的路徑、與當前文件同目錄file.txt文件的路徑以及應用服務器環境變量PATH_INFO映射當前文件所在路徑。
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <% Response.Write "Server.MapPath(""\"")返回網站根路徑:" & Server.MapPath("\") & "<br>" Response.Write "Server.MapPath(""/temp.asp"")返回" & Server.MapPath("/temp.asp") & "<br>" Response.Write "Server.MapPath(""file.txt"")返回" & Server.MapPath("/temp.asp") & "<br>" Response.Write "Server.MapPath(Request.ServerVariables(""PATH_INFO""))返回當前文件的物理路徑" & Server.MapPath(Request.ServerVariables("PATH_INFO")) & "<br>" %> </body> </html>
一般狀況下,HTML標記會被瀏覽器解釋執行,不會顯示在瀏覽器上,若是想將瀏覽器如實的顯示在瀏覽器上,能夠調用Server對象的HTMLEncode方法,該方法用於將HTML標記進行編碼
語法:
Server.HTMLEncode(String)
String:指定要編碼的字符串
ASP提供ObjectContext對象控制ASP的事務處理,事務在服務器端運行,主要用於對數據庫提供可靠的操做,當對數據庫進行關聯更改或者是同時更新多個數據庫的時候,須要肯定全部更改是否都準確執行,若是其中任何一項更改失敗,數據庫中的數據將恢復到操做以前的狀態,只有在全部更改都準確執行時,數據的更新纔有效。
ASP事務處理程序是以MTS(Microsoft Transaction Server)事件處理系統爲基礎的,MTS是以組件爲主的事件處理系統,用於開發、配置和管理Internet、Intranet服務器應用程序。MTS不能對文件系統或者其餘非事務性資源的更改進行恢復工做。
ObjectContext對象的使用語法以下:
objectContext.method
method:ObjectContext對象的方法
例如:應用ObjectContext對象終止網頁啓動的事務處理程序
<% ObjectContext.SetAbort %>
ObjectContext 對象是經過和事務服務器通訊來對事務進行控制的,因此在ASP中使用ObjectContext以前必須聲明該頁包含事務。在ASP中使用@TRANSACTION關鍵字來標識當前運行頁面要以MTS事務服務器來處理,@TRANSACTION指令必須位於ASP文件中的第一行,不然會產生錯誤
語法:
<% @TRANSACTION=VALUE %>
VALUE:@TRANSACTION關鍵字的取值
@TRANSACTION關鍵字取值
取值 | 描述 |
Required | 開始一個新的事務或者加入一個已經存在的事務 |
Requires_New | 每次都開始一個新的事務 |
Supported | 加入一個現有的事務處理,但不開始一個新的事務 |
Not_Supported | 即不加入也不開始一個新的事務 |
ObjectContext對象提供兩個方法和兩個事件控制ASP的事務處理。ObjectContext對象的成員如表
成員 | 描述 |
SetAbort方法 | 終止當前網頁所啓用的事務處理,將事務先前所作的處理撤銷到初始狀態 |
SetComplet方法 | 成功提交事務,完成事務處理 |
OnTrandactionAbort事件 | 事務終止時觸發的事件 |
OnTransactionCommit事件 | 事務成功提交時觸發的事件 |
ObjectContext對象提供了SetAbort方法和OnTransacctionAbort事件進行終止事務的處理。
a.SetAbort方法
回滾操做
語法:
ObjectContext.SetAbort
b.OnTransactionAbort事件
腳本自己不能判斷事務處理是成功仍是失敗,能夠編寫事務終止或者成功提交時調用的事件,顯式說明事務處理的狀況,OnTransactionAbort事件是當事務處理失敗時引起的。
語法:
Sub OnTransactionAbort()
...處理程序
End Sub
若是事務異常終止,會觸發該事件
ObjectContext對象提供了SetComplet方法和OnTransactionCommit事件對事務成功完成進行處理
a.SetComplet方法:提交
語法:
ObjectContext.SetComplet
調用該方法將會忽略腳本中之前調用過的任何SetAbort方法
b.OnTransactionCommit事件
當前事務成功時引起
語法:
Sub OnTransactionCommit()
...處理程序
End Sub
例如:應用Objectcontext進行事務處理
①在index.asp頁面中創建表單並插入文本框及按鈕控件,用於添加管理員信息
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <form name="form1" method="post" action="code.asp"> <p>用戶名: <input name="txt_name" type="text" id="txt_name" /> </p> <p>密 碼: <input name="txt_pwd" type="text" id="txt_pwd" /> </p> <p> <input name="add" type="submit" id="add" value="添加" /> <input name="reset" type="reset" value="重置" /> </p> </form> </body> </html>
②在程序處理頁面code.asp中,首先創建數據庫鏈接、獲取表單傳遞的數據,而後執行Insert Into語句插入數據。若是此過程當中出現異常則調用ObjectContext對象的Setabort方法終止事務,不然調用ObjectContext對象的SetComplet方法完成事務。分別定義OnTransactionAbort事件和OnTransactionCommit事件用於提示操做的執行結果
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>無標題文檔</title> </head> <% '@Transaction=Required %> <% '建立數據庫鏈接 Set conn=Server.CreateObject("ADODB.Connection") sql="Driver={Microsof Access Driver (*.mdb)};DBQ=" & Server.MapPath("DataBase/db.mdb") & "" conn.open(sql) '獲取表單數據 txt_name=Request.Form("txt_name") txt_pwd=Request.Form("txt_pwd") if not isempty(Request("add")) then if txt_name<>"" and txt_pwd<>"" then on error resume next '執行Insert Into語句 sqlStr="insert into tb_user(UserName,PassWord) value('"&txt_name&"','"&txt_pwd&"')" conn.Execute(sqlStr) '若是出現異常則調用SetAbort方法終止事務 If error.num>0 then error.clear ObjectContext.SetAbort() End if '調用SetComplet方法完成事務 ObjectContext.SetComplete() '事務執行成功時觸發的事件 Sub OnTransactionCommit() Response.Write("<Script language='javascript'> alert('添加信息成功'); window.location.href='index.asp';</script>") End sub '事務執行失敗時觸發的事件 Sub OnTransactionAbort() Response.Write("<Script language='javascript'> alert('添加信息失敗,請從新輸入'); window.location.href='index.asp';</script>") Response.Flush() End Sub Else Response.Write("<Script language='javascript'> alert('請填寫完整信息內容!'); window.location.href='index.asp';</script>") End If End If %> <body> </body> </html>