国产精品222_色噜噜狠狠狠狠色综合_曰本护士毛茸茸高潮_国产又粗又长又黄视频 - 性护士xxx

愛我網(wǎng)(i5wang.com)LOGO
;
建站須知

百度百科中的asp詞條:什么是asp

概述
ASP是Active Server Page的縮寫,意為“活動(dòng)服務(wù)器網(wǎng)頁”。ASP是微軟公司開發(fā)的代替CGI腳本程序的一種應(yīng)用,它可以與數(shù)據(jù)庫和其它程序進(jìn)行交互,是一種簡單、方便的編程工具。ASP的網(wǎng)頁文件的格式是.asp,現(xiàn)在常用于各種動(dòng)態(tài)網(wǎng)站中。 ASP是一種服務(wù)器端腳本編寫環(huán)境,可以用來創(chuàng)建和運(yùn)行動(dòng)態(tài)網(wǎng)頁或Web應(yīng)用程序。ASP網(wǎng)頁可以包含HTML標(biāo)記、普通文本、腳本命令以及COM組件等。利用ASP可以向網(wǎng)頁中添加交互式內(nèi)容(如在線表單),也可以創(chuàng)建使用HTML網(wǎng)頁作為用戶界面的web應(yīng)用程序。 與HTML相比,ASP網(wǎng)頁具有以下特點(diǎn):

(1)利用ASP可以實(shí)現(xiàn)突破靜態(tài)網(wǎng)頁的一些功能限制,實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁技術(shù);

(2)ASP文件是包含在HTML代碼所組成的文件中的,易于修改和測試;

(3)服務(wù)器上的ASP解釋程序會(huì)在服務(wù)器端制定ASP程序,并將結(jié)果以HTML格式傳送到客戶端瀏覽器上,因此使用各種瀏覽器都可以正常瀏覽ASP所產(chǎn)生的網(wǎng)頁;

(4)ASP提供了一些內(nèi)置對象,使用這些對象可以使服務(wù)器端腳本功能更強(qiáng)。例如可以從web瀏覽器中獲取用戶通過HTML表單提交的信息,并在腳本中對這些信息進(jìn)行處理,然后向web瀏覽器發(fā)送信息;

(5)ASP可以使用服務(wù)器端ActiveX組件來執(zhí)行各種各樣的任務(wù),例如存取數(shù)據(jù)庫、發(fā)現(xiàn)哦那個(gè)Email或訪問文件系統(tǒng)等。

(6)由于服務(wù)器是將ASP程序執(zhí)行的結(jié)果以HTML格式傳回客戶端瀏覽器,因此使用者不會(huì)看到ASP所編寫的原始程序代碼,可防止ASP程序代碼被竊取。



ASP的工作原理


當(dāng)在Web站點(diǎn)中融入ASP功能后,將發(fā)生以下事情:

1、用戶向?yàn)g覽器地址欄輸入網(wǎng)址,默認(rèn)頁面的擴(kuò)展名是.asp。

2、瀏覽器向服務(wù)器發(fā)出請求。

3、服務(wù)器引擎開始運(yùn)行ASP程序。

4、ASP文件按照從上到下的順序開始處理,執(zhí)行腳本命令,執(zhí)行HTML頁面內(nèi)容。

5、頁面信息發(fā)送到瀏覽器。




ASP的運(yùn)行環(huán)境


asp需要運(yùn)行在PWS或IIS下。PWS或IIS服務(wù)在windows98或windows2000的光盤上附帶著,可以通過“添加/刪除程序”中的“添加/刪除windows組件”來安裝。

一般asp需與access數(shù)據(jù)庫或SQL Server數(shù)據(jù)庫結(jié)合使用,編出功能強(qiáng)大的程序。

能夠運(yùn)行ASP的web服務(wù)器軟件

Windows2000默認(rèn)安裝的是IIS5.0(internet information server),而windows xp默認(rèn)安裝的是IIS5.1,windows 2003默認(rèn)安裝的IIS6.0。

PWS(personal web server)運(yùn)行在windows98環(huán)境下的簡單個(gè)人網(wǎng)頁服務(wù)器。



ASP常用內(nèi)置函數(shù)

1,日期/時(shí)間函數(shù)

這些函數(shù)包括對“年”、“月”、“日”、“時(shí)”、“分”、“秒”、“星期”等的顯示。

(1)Now函數(shù):根據(jù)計(jì)算機(jī)系統(tǒng)設(shè)定的日期和時(shí)間,返回當(dāng)前的日期和時(shí)間值。使用方法now();

(2)Date函數(shù):只返回當(dāng)前計(jì)算機(jī)系統(tǒng)設(shè)定的日期值。使用方法:date();

(3)Time函數(shù):只返回當(dāng)前計(jì)算機(jī)系統(tǒng)設(shè)定的時(shí)間值。使用方法:time();

(4)Year函數(shù):返回一個(gè)代表某年的整數(shù)。使用方法:year(date),其中date參數(shù)是任意的可以代表日期的參數(shù),比如“year(date())”就表示是從“date()”得出的日期中提取其中“年”的整數(shù)。

另外,還可以這樣應(yīng)用:“year(#5 20,2006#)”表示提取“2006年5月20日”中“年”的整數(shù)值。關(guān)于“5 20,2006”,也可使用“5-20-2006”、“5/20/2006”等形式表現(xiàn),即“某月某日”和“某年”的組合。同時(shí)注意使用“#”進(jìn)行包括以表示日期值。

(5)Month函數(shù):返回1到12之間的整數(shù)值,表示一年中某月。使用方法:month(date)。關(guān)于參數(shù)date的說明和year函數(shù)相同。但要注意日期的正確性,比如“#13-31-2006#”,根本就沒有“13”月,肯定是錯(cuò)誤的了。

(6)Day函數(shù):返回1到31之間的整數(shù)值,表示一個(gè)月中的某天。使用方法:day(date)。關(guān)于參數(shù)date的說明和year函數(shù)相同。同樣要注意日期的正確性,比如“#2-30-2006#”其中對“2”月定義的“30”日這天就是錯(cuò)誤的。

(7)Hour函數(shù):返回0到23之間的整數(shù)值,表示一天中的某個(gè)小時(shí)。使用方法:hour(time)。其中參數(shù)time是任意的可代表時(shí)間的表達(dá)式。比如“hour(time())”就表示是從“time()”得出的時(shí)間中提取其中“小時(shí)”的整數(shù)。同樣,參數(shù)time還可以這樣應(yīng)用“hour(#11:45:50#)”表示從“11”時(shí)“45”分“50”秒中提取當(dāng)前小時(shí)數(shù)。當(dāng)然,定義的時(shí)間要符合時(shí)間的規(guī)范。

(8)Minute函數(shù):返回0到59之間的整數(shù)值,表示一小時(shí)中的某分鐘。使用方法:minute(time)。time參數(shù)的說明和hour函數(shù)相同。

(9)Second函數(shù):返回0到59之間的整數(shù)值,表示一分鐘中的某秒。使用方法:second(time)。time參數(shù)的說明和hour函數(shù)相同。

(10)Weekday函數(shù):返回一個(gè)星期中某天的整數(shù)。使用方法:weekday(date)。關(guān)于參數(shù)date的說明和year函數(shù)相同。該函數(shù)返回值為“1”到“7”,分別代表“星期日”、“星期一”……“星期六”。比如當(dāng)返回值是“4”時(shí)就表示“星期三”。

(11)WeekDayName函數(shù):返回一個(gè)星期中具體某天的字符串。相對weekday函數(shù)而言即翻譯出“星期幾”,使用方法:weekdayname(weekday)。參數(shù)weekday即星期中具體某天的數(shù)值。比如“weekdayname(weekday(date()))”就表示當(dāng)前是“星期幾”。因?yàn)椤癲ate()”表示的是當(dāng)前的時(shí)間,而“weekday(date())”就表示的是一星期中具體某天的整數(shù)。

當(dāng)然weekdayname函數(shù)最終顯示的字符串內(nèi)容還與當(dāng)前操作系統(tǒng)語系有關(guān),比如中文操作系統(tǒng)將顯示“星期一”這類的中文字符,而英文操作系統(tǒng)則顯示為“Mon”(Monday簡寫)。

此外,在VBScript中還有一些關(guān)于時(shí)間間隔的計(jì)算函數(shù):

(1)DateAdd函數(shù):返回指定時(shí)間間隔的日期、時(shí)間?梢杂(jì)算出相隔多少年、或相隔幾個(gè)月、又或相隔幾個(gè)小時(shí)等的新日期、時(shí)間。使用方法:dateadd(interval, number, date)。

其中參數(shù)interval表示需要添加的時(shí)間間隔單位。其是以字符串的形式表達(dá)的,比如“yyyy”表示年,“q”表示季度,“m”表示月份,“d”表示天數(shù),“ww”表示周數(shù),“h”表示小時(shí)數(shù),“n”表示分鐘數(shù),“s”表示秒數(shù)。

而參數(shù)number則表示添加的時(shí)間間隔數(shù)。其是以數(shù)值的形式表達(dá)的,可以為負(fù)值。參數(shù)date則要求是日期、時(shí)間的正確格式。

比如dateadd("d",100,"2006-5-20")就表示2006年5月20號以后的100天的日期值:2006-8-28。再比如dateadd("h",-12,"2005-5-20 10:00:00")就表示2005年5月20號上午10點(diǎn)前的12小時(shí)的日期時(shí)間:2005-5-19 22:00:00。

(2)DateDiff函數(shù):返回兩個(gè)日期時(shí)間之間的間隔?捎(jì)算出兩個(gè)日期相隔的年代、小時(shí)數(shù)等。使用方法:datediff(interval,date1,date2)。

參數(shù)interval和dateadd函數(shù)中的interval參數(shù)內(nèi)容描述相同,date1和date2參數(shù)分別就是相互比較的兩個(gè)日期時(shí)間。另外,當(dāng)date1的日期時(shí)間值大于date2時(shí),將顯示為負(fù)值。

比如DateDiff("yyyy","1982-7-18",date)表示某人的出生到現(xiàn)在已經(jīng)多少年了。又比如DateDiff("d","1982-7-18","2062-7-18")則計(jì)算了80年過了多少天:29220。

2,字符串處理函數(shù)

在腳本的功能處理中,通常需要對一些字符串進(jìn)行一些修飾性處理。比如過濾掉字符串中的敏感字眼以符合最終顯示的要求;又比如一段較長的字符串,需要提取開頭的幾個(gè)字符時(shí)。

(1)Asc函數(shù):返回字符串中第一個(gè)字母對應(yīng)的ANSI字符代碼。使用方法:asc(string)。其中string參數(shù)表示字符串。

(2)Chr函數(shù):返回指定了ANSI 字符代碼對應(yīng)的字符。使用方法:chr(chrcode)。參數(shù)chrcode是相關(guān)的標(biāo)識(shí)數(shù)字。該函數(shù)的功能和asc函數(shù)形成對應(yīng)。

比如:asc(“a”)表示小寫字母“a”的ANSI 字符“97”;同樣chr(97)表示的就是“小寫字母a”。另外chr(chrcode)中參數(shù)chrcode值為0到31的數(shù)字時(shí),表示不可打印的ASCII碼。比如“chr(10)”表示換行符,“chr(13)”表示回車符等,這常用于輸入和顯示格式的轉(zhuǎn)換中。

(3)Len函數(shù):返回字符串內(nèi)字符的數(shù)目(字節(jié)數(shù))。使用方法:len(string)。比如len(“l(fā)ove”)的值就是4。

(4)LCase函數(shù):返回所有字符串的小寫形式。使用方法:lcase(string)。比如lcase(“CNBruce”)返回為“cnbruce”。

(5)UCase函數(shù):返回所有字符串的大寫形式。與lcase函數(shù)形成對應(yīng)。同樣,ucase(“CNBruce”)返回為“CNBRUCE”。

(6)Trim函數(shù)、LTrim函數(shù)和RTrim函數(shù):分別返回前導(dǎo)和后續(xù)不帶空格、前導(dǎo)不帶空格或后續(xù)不帶空格的字符串內(nèi)容。比如:

trim(“ cnbruce ”)返回為“cnbruce”,前導(dǎo)和后續(xù)都不帶空格;
ltrim(“ cnbruce ”)返回為“cnbruce ”,前導(dǎo)不帶空格;
rtrim(“ cnbruce ”)返回為“ cnbruce”,后續(xù)不帶空格;

該函數(shù)常用于注冊信息中,比如確保注冊用戶名前或后的空格。

(7)Left函數(shù):返回從字符串的左邊算起的指定數(shù)目的字符。使用方法:left(string,length)。比如left(“brousce”,5)返回為“brous”,即前五位字符。

(8)Right函數(shù):返回從字符串的左邊算起的指定數(shù)目的字符。使用方法:right(string,length)。比如right(“brousce”,4)返回為“usce”,即后四位字符。

(9)instr函數(shù):返回某字符串在另一字符串中第一次出現(xiàn)的位置。比如現(xiàn)在查找字母“A”在字符串“A110B121C119D1861”中第一次出現(xiàn)的位置,則可以 instr(my_string,"A110B121C119D1861")

(10)Mid函數(shù):從字符串中返回指定數(shù)目的字符。比如現(xiàn)在的“110”則應(yīng)該是從字符串“A110B121C119D1861”的第2位取得3個(gè)單位的值:mid("A110B121C119D1861",2,3)

(11)Replace函數(shù):在字符串中查找、替代指定的字符串。replace(strtobesearched,strsearchfor,strreplacewith)其中strtobesearched是字符串,strsearchfor是被查找的子字符串,strreplacewith是用來替代的子字符串。比如 replace(rscon,"<","<") 則表示將rscon中所有“<”的字符替換為“<”

3,類型轉(zhuǎn)換函數(shù)

Cbool(string) 轉(zhuǎn)換為布爾值
Cbyte(string) 轉(zhuǎn)換為字節(jié)類型的值
Ccur(string) 轉(zhuǎn)換為貨幣類值
Cdate(string) 轉(zhuǎn)換為日前類型的值
Cdbl(string) 轉(zhuǎn)換為雙精度值
Cint(string) 轉(zhuǎn)換為整數(shù)值
Clng(string) 轉(zhuǎn)換為長整型的值
Csng(string) 轉(zhuǎn)換為單精度的值
Cstr(var) 轉(zhuǎn)換為字符串值
Str(var) 數(shù)值轉(zhuǎn)換為字符串
Val(string) 字符串轉(zhuǎn)換為數(shù)值

4,運(yùn)算函數(shù)

Abs(nmb) 返回?cái)?shù)子的絕對值
Atn(nmb) 返回一個(gè)數(shù)的反正切
Cos(nmb) 返回一個(gè)角度的余炫值
Exp(nmb) 返回自然指數(shù)的次方值
Int(nmb) 返回?cái)?shù)字的整形(進(jìn)位)部份
Fix(nmb) 返回?cái)?shù)字的整形(舍去)部份
Formatpercent(表達(dá)式) 返回百分比
Hex(nmb) 返回?cái)?shù)據(jù)的16進(jìn)制數(shù)
Log(nmb) 返回自然對數(shù)
Oct(nmb) 返回?cái)?shù)字的8進(jìn)制數(shù)
Rnd 返回大于“0”而小于“1”的隨機(jī)數(shù),但此前需 randomize 聲明產(chǎn)生隨機(jī)種子
Sgn(nmb) 判斷一個(gè)數(shù)字的正負(fù)號
Sin(nmb) 返回角度的正鉉值
Sqr(nmb) 返回?cái)?shù)字的二次方根
Tan(nmb) 返回一個(gè)數(shù)的正切值

5,其他函數(shù)

IsArray(var) 判斷一個(gè)變量是否是數(shù)組
IsDate(var) 判斷一個(gè)變量是否是日期
IsNull(var) 判斷一個(gè)變量是否為空
IsNumeric(var) 判斷表達(dá)式是否包含數(shù)值
IsObject(var) 判斷一個(gè)變量是否是對象
TypeName(var) 返回變量的數(shù)據(jù)類型
Array(list) 返回?cái)?shù)組
Split(liststr) 從一個(gè)列表字符串中返回一個(gè)一維數(shù)組
LBound(arrayP 返回?cái)?shù)組的最小索引
Ubound(array) 返回?cái)?shù)組的最大索引
CreateObject(class) 創(chuàng)建一個(gè)對象
GetObject(pathfilename) 得到文件對象




ASP中Application和Session對象

一、Application對象的成員概述

  Application對象成員包括Application對象的集合、方法和事件。

  ⒈Application對象的集合

  Contents集合:沒有使用元素定義的存儲(chǔ)于Applicaiton對象中的所有變量的集合
  StaticObjects:使用元素定義的存儲(chǔ)于Application對象中的所有變量 的集合
  例:在default.asp中有如下賦值
  application("a")="a"
  application("b")=128
  application("c")=false

  則有contents集合
  application.contents(1)="a" '也可寫為application.contents("a")="a"
  application.contents(2)=128 '也可寫為application.contents("b")=128
  application.contents(3)=false '也可寫為application.contents("c")=false

  在此筆者推薦你在調(diào)用時(shí)使用類如application.contents("a")的方法,因?yàn)檫@樣更為直觀,如果用序號來表示的話則要考慮賦值的先后順序。

 、睞pplication對象的方法

  Contents.Remove("變量名"):從Application.Contents集合中刪除指定的變量
  Contents.RemoveAll() :把Application.Contents集合中的所有變量刪除
  Lock() :鎖定Application對象,使得只有當(dāng)前的ASP頁對內(nèi)容能進(jìn)行訪問
  Unlock() :解除對Application對象的鎖定
  例:在default.asp中:
  application("a")="a"
  application("b")=128
  application("c")=false
  response.write application.contents(1)&"
"
  response.write application.contents(2)&"
"
  response.write application.contents(3)&"
"
  response.write "After Remove b:"
  application.contents.remove("b")
  response.write application.contents(1)&"
"
  response.write application.contents(2)&"
"

  執(zhí)行結(jié)果:
  a
  128
  False
  After Remove b:
  a
  False
  如果要?jiǎng)h除集合中所有變量用application.contents.removeall即可,至于Lock和Unlock方法在實(shí)際中經(jīng)常用到,讀者也比較熟悉,在此就不在累贅。

 、矨pplication對象事件

  OnStart:第一個(gè)訪問服務(wù)器的用戶第一次訪問某一頁面時(shí)發(fā)生
  OnEnd :當(dāng)最后一個(gè)用戶的會(huì)話已經(jīng)結(jié)束并且該會(huì)話的OnEnd事件所有代碼已經(jīng)執(zhí)行完畢后發(fā)生,或最后一個(gè)用戶訪問服務(wù)器一段時(shí)間(一般為20分鐘)后仍然沒有人訪問該服務(wù)器產(chǎn)生。
  想要定義application對象的OnStart和OnEnd事件里做什么需要將代碼寫在Global.asa這個(gè)文件里(下文有舉例),并且將該文件放在站點(diǎn)的根目錄下(一般是Inetpub\wwwroot\)

  二、Session對象的成員概述

  Session對象的成員比Application對象多一項(xiàng)屬性,即:集合、屬性、方法、事件

 、盨ession對象的集合

  Contents :沒有使用元素定義的存儲(chǔ)于特定Session對象的所有變量的集合。
  StaticObject:使用元素定義的、存儲(chǔ)于Session對象中的所有變量的集合。
  例:在default.asp中有如下賦值
  session("a")="a"
  session("b")=128
  session("c")=false

  則有contents集合
  session.contents(1)="a" '也可寫為session.contents("a")="a"
  session.contents(2)=128 '也可寫為session.contents("b")=128
  session.contents(3)=false '也可寫為session.contents("c")=false

 、睸ession對象的屬性

  CodePage: 可讀/可寫。整型。定義用于在瀏覽器中顯示頁內(nèi)容的代碼頁。代碼頁是字符集的數(shù)字值,不同的語言使用不同的代碼頁。例如,ANSI代碼頁為1252,日文代碼頁為932,簡體中文代碼頁為936。
  LCID : 可讀/可寫。整型。定義發(fā)送給瀏覽器的頁面地區(qū)標(biāo)識(shí)。LCID是唯一地標(biāo)識(shí)地區(qū)的一個(gè)國際標(biāo)準(zhǔn)縮寫,例如,2057定義當(dāng)前地區(qū)的貨幣符號是"£"。
  SessionID: 只讀。長整型。返回本會(huì)話的會(huì)話標(biāo)識(shí)符。每創(chuàng)建一個(gè)會(huì)話,由服務(wù)器自動(dòng)分配一個(gè)標(biāo)識(shí)符?梢愿鶕(jù)它的值判斷兩個(gè)用戶是誰先訪問服務(wù)器。
  Timeout : 可讀/可寫。整型。為會(huì)話定義以分鐘為單位的超時(shí)限定。如果用戶在這個(gè)時(shí)間內(nèi)沒有刷新或請求任何一個(gè)網(wǎng)頁,則該用戶產(chǎn)生的會(huì)話自動(dòng)結(jié)束。缺省值是20。
以上屬性在實(shí)際應(yīng)用中作用不大,而且基本上不需要怎么修改,這幾個(gè)屬性也沒什么特殊的地方。

  ⒊Session對象的方法

  Contents.Remove("變量名"): 從Session.contents集合中刪除指定的變量
  Contents.Removeall() : 刪除Session.contents集合中的所有變量
  Abandon() : 結(jié)束當(dāng)前用戶會(huì)話并且撤消當(dāng)前Session對象。
  Session對象的Contents.Remove("變量名")和Contents.Removeall()方法與Application對象的基本上沒什么區(qū)別,為幫助理解,大家可以參照上面的例子將Application改為Session。這里要說明一下的是Contents.Removeall()和Abandon()的區(qū)別,執(zhí)行這兩個(gè)方法都會(huì)釋放當(dāng)前
  用戶會(huì)話的所有Session變量,不同的是Contents.Removeall()單純地釋放Session變量的值而不終止當(dāng)前的會(huì)話,而Abandon()除了釋放Session變量外還會(huì)終止會(huì)話引發(fā)Session_OnEnd事件,希望大家注意兩者的區(qū)別。

 、碨ession對象的事件

  OnStart: 當(dāng)ASP用戶會(huì)話產(chǎn)生時(shí)觸發(fā),一旦有任一用戶對本服務(wù)器請求任一頁面即產(chǎn)生該事件。
  OnEnd : 當(dāng)ASP用戶會(huì)話結(jié)束時(shí)觸發(fā),當(dāng)使用Abandon()方法或超時(shí)也會(huì)觸發(fā)該事件。
  這兩個(gè)事件和Application的OnStart、OnEnd事件一樣,也是必須放在Global.asa文件里,下
面就重點(diǎn)和大家研究一下這四個(gè)事件的使用。

  三、Global.asa

  ASP的Application和Session對象體現(xiàn)了其他ASP內(nèi)置對象所沒有的特征--事件。每一個(gè)訪客訪問服務(wù)器時(shí)都會(huì)觸發(fā)一個(gè)OnStart事件(第一個(gè)訪客會(huì)同時(shí)觸發(fā)Application和Session的OnStart事件,但Application先于Session),每個(gè)訪客的會(huì)話結(jié)束時(shí)都會(huì)觸發(fā)一個(gè)OnEnd事件(最后一個(gè)訪客會(huì)話結(jié)束時(shí)會(huì)同時(shí)觸發(fā)Application和Session的OnEnd事件,但Session先于Application)。

  OnStart和OnEnd這兩個(gè)事件一般應(yīng)用在虛擬社區(qū)中統(tǒng)計(jì)在線人數(shù)、修改用戶的在線離線狀態(tài)等。要具體定義這兩個(gè)事件,需要將代碼寫在Global.asa文件,并將該文件放在站點(diǎn)的根目錄下(缺省是\Inetpub\wwwroot\)。另外,Application和Session對象規(guī)定了在OnEnd事件里除了Application對象外其他ASP內(nèi)置對象(Response、Request、Server、Session...)一概不能使用。以下舉一個(gè)虛擬社區(qū)統(tǒng)計(jì)在線人數(shù)的例子來說明如何使用這兩個(gè)事件。

  文件說明:
  global.asa 位于d:\Inetpub\wwwroot\目錄下
  default.asp 位于d:\Inetpub\wwwroot\目錄下,虛擬社區(qū)登錄頁面
  login.asp 位于d:\Inetpub\wwwroot\目錄下,用于檢測用戶輸入的用戶名及密碼
  index.asp 位于d:\Inetpub\wwwroot\目錄下,虛擬社區(qū)首頁
  bbs.mdb 位于d:\Inetpub\wwwroot\目錄下,存儲(chǔ)用戶信息的數(shù)據(jù)庫

  數(shù)據(jù)庫(ACCESS)結(jié)構(gòu):
   ===bbs表===
  id 用戶ID,長整型
  name 用戶名,文本型
  code 密碼,文本型
  online 在線狀態(tài),是/否
  ===global.asa===
 。約cript LANGUAGE="VBScript" RUNAT="Server">
  Sub Application_OnStart
   application("online")=0
  End Sub
  sub Application_OnEnd
  nd Sub
  Sub Session_OnStart
  End Sub
  Sub Session_OnEnd
   if session.contents("pass") then '判斷是否為登錄用戶的Session_OnEnd
    application.lock
    application("online")=application("online")-1
    application.unlock
   end if
  End Sub
 。/script>
  ===login.asp===
   ......'密碼驗(yàn)證,連接數(shù)據(jù)庫,檢測用戶輸入的用戶名及密碼是否正確
  if 密碼驗(yàn)證通過 then
   session("name")=rs("name")
   session("id")=rs("id")
   session("pass")=true
  else
   rs.close
   conn.close
   response.write "密碼錯(cuò)誤!"
   response.end
  end if
  application.lock
  application("online")=application("online")+1
  conn.Execute ("update bbs set online=1 where id="&session("id"))'將用戶的狀態(tài)設(shè)為在線
  application.unlock
  rs.close
  conn.close
  response.redirect "index.asp" '初始化數(shù)據(jù)后跳轉(zhuǎn)到社區(qū)首頁
  ===========

  在本例中,用application("online")變量記錄已經(jīng)登錄社區(qū)的在線人數(shù),因?yàn)橐坏┯杏脩粼L問服務(wù)器而不管用戶是否登錄,都會(huì)產(chǎn)生OnStart事件,所以不能在OnStart事件里使Applicaiton("online")加一。因?yàn)椴还苁欠袷堑卿浻脩舻臅?huì)話結(jié)束都會(huì)產(chǎn)生OnEnd事件(假如有訪客訪問了服務(wù)器但并不登錄社區(qū),他的會(huì)話結(jié)束后也會(huì)產(chǎn)生OnEnd事件),所以在Session_OnEnd事件里用了句if語句來判斷是否為已登錄用戶的OnEnd事件,如果是才將在線人數(shù)減一。
  這只是一個(gè)統(tǒng)計(jì)在線人數(shù)的簡單例子,對于一個(gè)完整的虛擬社區(qū)來說,僅僅統(tǒng)計(jì)有多少人在線是不夠的,在本例中數(shù)據(jù)庫里有個(gè)online字段是用來記錄用戶的在線狀態(tài),用戶登錄的時(shí)候,在login.asp里將online設(shè)為1,但用戶離線時(shí)并沒有將online設(shè)為0,要完善它,就要修改一下Session_OnEnd事件,在該事件里將online設(shè)為0。
  ===global.sas===
 。約cript LANGUAGE="VBScript" RUNAT="Server">
  Sub Application_OnStart
   application("online")=0
   set application("conn")=Server.CreateObject("ADODB.Connection")
   application("db")=Server.MapPath("\bbs.mdb") '此處最好使用絕對路徑\bbs.mdb,下文有詳細(xì)介紹
  End Sub
  sub Application_OnEnd
   set application("conn")=nothing
  End Sub
   Sub Session_OnStart
  End Sub
  Sub Session_OnEnd
   if session.contents("pass") then '判斷是否為登錄用戶的Session_OnEnd
     application("con").open ="driver={Microsoft Access Driver (*.mdb)};dbq="&application("db")
      application.lock
      application("online")=application("online")-1
      application("con").Execute ("update friends set online=0 where id="&session.contents("id"))
      application.unlock
      application("con").close
   end if
  End Sub
  </script>
  ==============

  至此,完整的代碼已經(jīng)完成了。因?yàn)樵贏pplication和Session的OnEnd事件里不能使用Server對象,所以要將數(shù)據(jù)庫的連接及數(shù)據(jù)庫在服務(wù)器上的物理地址(d:\inetpub\wwwroot\bbs.mdb)存儲(chǔ)在application變量中,并在Application_OnStart事件中預(yù)先處理。同理,在Session_OnEnd事件中不能用session("pass")來代替session.contents("pass")(以下有詳盡說明)。
  四、本文實(shí)例中值得引起注意的兩點(diǎn)

 、監(jiān)nEnd事件里的session.contents
  剛開始接觸global.asa的朋友經(jīng)常會(huì)將上面Session_OnEnd事件里的
  if session.contents("pass") then 寫成
  if session("pass") then,

  這樣的話系統(tǒng)不會(huì)提示錯(cuò)誤,但是永遠(yuǎn)也不會(huì)執(zhí)行then后面的內(nèi)容,這是因?yàn)樵贠nEnd事件里禁止使用Session對象,但是可以用Session對象的集合來調(diào)用session變量。因?yàn)镮IS并沒提示任何錯(cuò)誤信息,所以筆者曾經(jīng)在這上面浪費(fèi)了很多時(shí)間。在此希望大家引以為鑒!
 、睞pplication_OnStart事件里用Server.MapPath獲取數(shù)據(jù)庫的物理地址時(shí)應(yīng)使用絕對地址為了說明這個(gè)問題,大家可以做個(gè)實(shí)驗(yàn):將上面Application_OnStart事件里的
  application("db")=Server.MapPath("\bbs.mdb")改為:
  application("db")=Server.MapPath("bbs.mdb")

然后在d:\inetpub\wwwroot\目錄下建立一個(gè)test子目錄,寫一個(gè)temp.asp在test目錄里。
  ====test.asp====
 。迹esponse.write application("db")%>
  ================

再將temp.asp拷貝一份放在根目錄下(d:\inetpub\wwwroot\)。用記事本打開global.asa,再打開兩個(gè)瀏覽器,瀏覽器A輸入地址http://localhost/temp.asp,按回車,將在瀏覽器上輸出:
  d:\inetpub\wwwroot\bbs.mdb

然后,在記事本的窗口上點(diǎn)"文件"菜單,選"保存"(使global.asa的修改時(shí)間改變,從而使IIS重啟動(dòng)所有服務(wù)),再在瀏覽器B輸入地址http://localhost/test/temp.asp,按回車,在瀏覽器上輸出的是:
  d:\inetpub\wwwroot\test\bbs.mdb

global.asa文件雖然是放在站點(diǎn)根目錄下,但是如果在server.mappath中使用的是相對地址,而觸發(fā)Application_OnStart事件的用戶第一次訪問的頁面又不是屬于根目錄的話,得到數(shù)據(jù)庫的物理地址將不會(huì)是期望的結(jié)果,希望大家要特別小心。

類別:Web | 編輯 | 刪除

| 評論(0) | 瀏覽(0)

全面解析ASP Server對象
2007-07-27 12:40
Server對象提供對服務(wù)器上訪問的方法和屬性.大多數(shù)方法和屬性是作為實(shí)用程序的功能提供的。
  語法:
   Server.property|method
  屬性(property)
   Server對象只有一個(gè)屬性:ScriptTimeout 程序能夠運(yùn)行的最大時(shí)間
  方法(Methods)
   CreateObject 建立一個(gè)對象實(shí)例.
   Execute 執(zhí)行一個(gè)asp文件
   GetLastError 返回一個(gè)錯(cuò)誤代碼
   HTMLEncode 對指定的HTML代碼進(jìn)行轉(zhuǎn)換.
   MapPath 將一個(gè)相對路徑轉(zhuǎn)化為一個(gè)絕對路徑.
   Transfer 將當(dāng)前的所有狀態(tài)信息發(fā)送給另一個(gè)asp文件
   URLEncode 以URL形式轉(zhuǎn)化指定的代碼,包括空格
  Server對象的方法詳細(xì)說明
   CreateObject
   語法
   Server.CreateObject( progID )
   參數(shù)
    progID
    指定要?jiǎng)?chuàng)建的組件名稱,格式如下: [Vendor.]Component[.Version].
   要點(diǎn):
    一般來說,用由Server.CreateObject方法創(chuàng)建的對象擁有頁面的范圍.這就說,當(dāng)這頁的asp程序執(zhí)行完后,這種對象會(huì)自動(dòng)地消失.
  為了創(chuàng)建一個(gè)擁有Session或Application范圍的對象,你可以在Global.asa文件中使用
  Execute
  Execute 方法呼叫一個(gè)ASP文件并且執(zhí)行它就像這個(gè)呼叫的ASP文件存在這個(gè)ASP文件中一樣。這很像許多語言中的類的調(diào)用。
  語法
  Server.Execute( Path )
  參數(shù)
   Path
  指定執(zhí)行的那個(gè)asp文件的路徑。如是它是一個(gè)絕對路徑,那么它必須是一個(gè)在這個(gè)ASP應(yīng)用程序相同的地方(目錄)。
  講解
  Server.Execute 方法提供了一種將一個(gè)復(fù)雜ASP應(yīng)用程序分化為小塊單位來執(zhí)行的方法。通過這種方法,你能夠建一個(gè)ASP圖書館,你能夠隨便在你需要時(shí)調(diào)用你圖書館中的ASP文件。這個(gè)就有點(diǎn)像SSI了!嘿嘿!
  當(dāng)IIS根據(jù)指定的ASP文件路徑執(zhí)行完這個(gè)ASP文件之后,就會(huì)自動(dòng)返回以前的ASP文件。這個(gè)剛剛執(zhí)行完的ASP文件有可能改變了HTTP head.但是和其它的ASP文件一樣,當(dāng)程序試圖改變http head時(shí),就會(huì)報(bào)錯(cuò)!
  這個(gè)path參數(shù)可以包括一個(gè)詢問信息。
  如果在被呼叫和呼叫的ASP文件中都含有相同的子函數(shù),那么這些子函數(shù)只在本ASP文件中起作用。舉個(gè)例子,如果在下面的ASP1和ASP2兩個(gè)文件中都含有放棄程序的子函數(shù)。首先ASP1呼叫ASP2,那么ASP2中的的OnTransactionAbort開始執(zhí)行,當(dāng)ASP2執(zhí)行完畢,ASP1中的OnTransactionAbort才開始執(zhí)行。
 
 ASP1:
< %@ Transaction=
Required
%>
< %
 Server.Execute ("Page22.asp")
 Sub OnTransactionAbort
 Sub OnTransactionCommit
%>
  
Asp2.asp:
< %@
 Transaction=Required
 Sub OnTransactionAbort
 Sub OnTransactionCommit
%>

  Example
  
ASP1
< % Response.Write("I am going to execute ASP2 ")
Server.Execute("/myasps/asp2.asp")
%>
ASP2
< % Response.Write("Here I am")%>

  GetLastError
  GetLastError 方法返回一個(gè)ASPError Object 來描述一個(gè)錯(cuò)誤信息.這個(gè)方法只適用于在asp文件發(fā)送任何內(nèi)容給用戶機(jī)之前.
  語法
  Server.GetLastError ()
  要點(diǎn)
  如果一個(gè)500;100 用戶錯(cuò)誤已經(jīng)被定義在一個(gè)asp應(yīng)用程序中,它是指的一個(gè)以.asp為后綴的文件。這種情況下,在這個(gè)程序運(yùn)行時(shí)當(dāng)一個(gè)錯(cuò)誤發(fā)生時(shí),服務(wù)器就會(huì)自動(dòng)的以Server.Transfer這種方式傳送到這個(gè)正在執(zhí)行的ASP頁面。ASP應(yīng)用程序就會(huì)將有效的處理這個(gè)錯(cuò)誤。另外,這個(gè)ASPError Object一定要有效,這樣你就能夠看到服務(wù)器提供給你的錯(cuò)誤信息來改這個(gè)文件了!
  一般的Web Site 都是根據(jù)文件\iishelp\common\500-100.asp來構(gòu)造的。你能夠用它來執(zhí)行一個(gè)asp錯(cuò)誤,當(dāng)然你能夠自己定義了!。如果你想改變?yōu)榱硗庖粋(gè)asp文件的來執(zhí)行這些用戶錯(cuò)誤。那么你可以用IIS中的snap-in.
  注意:當(dāng)IIS發(fā)現(xiàn)了一個(gè)asp文件或者global.asa文件中的一個(gè)錯(cuò)誤,那么一個(gè)500;100用戶錯(cuò)誤產(chǎn)生。以下的程序?qū)⒉荒軋?zhí)行!
  Example
  下面的三個(gè)例子證明不同的錯(cuò)誤會(huì)產(chǎn)生的用戶錯(cuò)誤。三個(gè)錯(cuò)誤是:
  編譯錯(cuò)誤
  運(yùn)行錯(cuò)誤
  邏輯錯(cuò)誤
  第一個(gè)例子證明了一個(gè)編譯錯(cuò)誤,就是當(dāng)IIS試圖包含一個(gè)文件時(shí)產(chǎn)生的。這個(gè)錯(cuò)誤會(huì)產(chǎn)生是因?yàn)樵谶@個(gè)包含文件中沒有定義所需的參數(shù)。第二個(gè)例子顯示的是一個(gè)運(yùn)行錯(cuò)誤,這個(gè)程序中斷的原因是程序中沒有“next".第三個(gè)例子顯示的是一個(gè)邏輯錯(cuò)誤,因?yàn)檫@個(gè)程序試圖除以一個(gè)0. 不行啦! 
  
Example 1
< %
  response.write "hello"
%>
Example 2
< %
  dim I
  for i=1 to 1
  nxt
%>
Example 3

< %
  dim i,j
  dim sum
  sum=0
  j=0
  for i=1 to 10
   sum=sum+1
  next
  sum=sum/j
%>
  HTMLEncode
  HTMLEncode方法對指定的字符串進(jìn)行HTML編碼.
  語法
   Server.HTMLEncode( string )
  參數(shù)
   string 要進(jìn)行編碼的字符
  例子
   下面的程序:
 。 %= Server.HTMLEncode("The paragraph tag: ") %>

  輸出為:
  The paragraph tag:
  注意 程序執(zhí)行后在瀏覽器中看到的是:
  The paragraph tag:
  但是如果你用"查看源文件"看一下的話,源代碼就不是了.
MapPath
  MapPath 方法將相對路徑轉(zhuǎn)化為服務(wù)器上的物理路徑
  語法
  Server.MapPath( Path )

  參數(shù)
  Path
  相對路徑。這個(gè)路徑是以"/"或"\"開頭的路徑,如果這個(gè)路徑中沒有"\",那么MapPath方法就會(huì)返回以當(dāng)前目錄為基礎(chǔ)的路徑。
  講解
  MapPath 方法不能檢查路徑在這個(gè)服務(wù)器下是否存在。因?yàn)?MapPath 轉(zhuǎn)化路徑時(shí)是不管這個(gè)路徑是否在這個(gè)服務(wù)器下存在的。
  你能夠用它來將一個(gè)相對路徑轉(zhuǎn)化為一個(gè)物理路徑,然后再在這個(gè)路徑下進(jìn)行各種操作。
  Example
  在下面的例子中,data.txt文件存在 C:\Inetpub\Wwwroot\Script 目錄中,而且一個(gè)test.asp 文件包括下面的代碼。C:\Inetpub\Wwwroot 是該服務(wù)器的主目錄 。
  下面的例子中,首先用環(huán)境變量"PATH_INFO"獲得當(dāng)前文件的物理路徑。
  下面是Script 代碼:
 。 %= server.mappath(Request.ServerVariables("PATH_INFO"))%>

  顯示為:
  c:\inetpub\wwwroot\script\test.asp
  因?yàn)橄旅娴睦又新窂絽?shù)沒有以"/"開頭,所以它是以當(dāng)前目錄轉(zhuǎn)化的,asp文件是放在C:\Inetpub\Wwwroot\Script中的.以下是 scripts的內(nèi)容:
 。 %= server.mappath("data.txt")%>
  < %= server.mappath("script/data.txt")%>

  顯示為:
  c:\inetpub\wwwroot\script\data.txt
  c:\inetpub\wwwroot\script\script\data.txt

  以下的兩個(gè)例子是以"/"開頭的.以下是scripts的內(nèi)容:
 。 %= server.mappath("\script")%>

  顯示為:
  c:\inetpub\wwwroot\script\data.txt
  c:\inetpub\wwwroot\script

  直接用"/"或"\"就會(huì)得到服務(wù)器的主目錄:
 。 %= server.mappath("\")%>

  顯示為:
 
  c:\inetpub\wwwroot
  c:\inetpub\wwwroot

  Transfer
  transfer 方法會(huì)把一個(gè)正在執(zhí)行的asp文件的所有信息傳給另外一人asp文件。
  語法
  Server.Transfer (path)

  參數(shù)
  Path
  將要接收信息的asp文件的位置。
  要點(diǎn)
  當(dāng)你調(diào)用Server.Transfer時(shí),所有內(nèi)建對象的狀態(tài)信息都會(huì)包含在這次傳送之中。這就是說,所有在保存在Session或Application中的信息都會(huì)被傳送,而且,所有當(dāng)前請求的信息都會(huì)被接收信息的asp文件所接受。
  Example
  下面的例子示范了從一個(gè)asp文件傳送到另一個(gè)asp文件例子!
  ASP1

< % Dim sessvar1 Response.Write Session.SessionID
 Response.Write ("")
 Response.Write("I am going to ASP2 ")
 Server.
Transfer
("/Myasps/ASP2.asp")
% >
 
 ASP2
< % Response.Write Session.SessionID %>
  URLEncode
  URLEncode 方法可以將指定字符串進(jìn)行URL編碼。
  語法
  Server.URLEncode( string )

  參數(shù)
  string 指定要轉(zhuǎn)化的字符串
  Example
  下面是代碼:
  < % Respones.Write(Server.URLEncode("http://www.microsoft.com")) % >

  顯示為:
  http%3A%2F%2Fwww%2Emicrosoft%2Ecom
  屬性:ScriptTimeout
  ScriptTimeout 屬性規(guī)定了程序的最大運(yùn)行時(shí)間。
  語法
  Server.ScriptTimeout = NumSeconds

  參數(shù)
  NumSeconds
  規(guī)定了程序的最大的運(yùn)行時(shí)間(以秒計(jì)算)。缺省值是90秒
  Remarks
  一個(gè)缺省的Scritpt Timeout的值會(huì)能過ASPScriptTimeOUT屬性來設(shè)置在Web sertvic 或 Web server上。在程序中,ScriptTimeout屬性的值不能小于這個(gè)缺省值。舉個(gè)例子吧,如果NumSeconds我們設(shè)置為10秒,而缺省值為90秒,那么程序就會(huì)中止在90秒以后,而不是10秒以后的。同樣,如果我們設(shè)置ScriptTimeout的值為100秒,那么,程序就會(huì)在100秒之后中止,而不是90秒。
  Example
  下面的例了中程序?qū)⒈辉O(shè)置為100秒后自動(dòng)中止。
 。 % Server.ScriptTimeout = 100 %>

  下面的例子中將重新得到ScriptTimeout的值,然后把它存在Timout變量中
 。 % TimeOut = Server.ScriptTimeout %>

現(xiàn)在版本詳情參見:

http://baike.baidu.com/view/2616.htm

聯(lián)系電話:
13501155864
技術(shù)QQ:924159801
咨詢QQ:289353499
MSN:
bjhappy2008@msn.com
Mail:
i5wangcom@sina.com