asp:英文名:Active Server Page
ASP是一種服務(wù)器端腳本編寫環(huán)境,可以用來創(chuàng)建和運行動態(tài)網(wǎng)頁或Web應(yīng)用程序。ASP網(wǎng)頁可以包含
HTML標記、普通文本、腳本命令以及COM組件等。利用ASP可以向網(wǎng)頁中添加交互式內(nèi)容(如在線表單),也可以創(chuàng)建使用HTML網(wǎng)頁作為用戶界面的web應(yīng)用程序。 與HTML相比,ASP網(wǎng)頁具有以下特點:
asp
(1)利用ASP可以實現(xiàn)突破靜態(tài)網(wǎng)頁的一些功能限制,實現(xiàn)動態(tài)網(wǎng)頁技術(shù);
(2)ASP文件是包含在HTML代碼所組成的文件中的,易于修改和測試;
?。?)服務(wù)器上的ASP解釋程序會在服務(wù)器端執(zhí)行ASP程序,并將結(jié)果以HTML格式傳送到客戶端瀏覽器上,因此使用各種瀏覽器都可以正常瀏覽ASP所產(chǎn)生的網(wǎng)頁;
?。?)ASP提供了一些內(nèi)置對象,使用這些對象可以使服務(wù)器端腳本功能更強。例如可以從web瀏覽器中獲取用戶通過HTML表單提交的信息,并在腳本中對這些信息進行處理,然后向web瀏覽器發(fā)送信息;
?。?)ASP可以使用服務(wù)器端ActiveX組件來執(zhí)行各種各樣的任務(wù),例如存取數(shù)據(jù)庫、發(fā)送Email或訪問文件系統(tǒng)等。
?。?)由于服務(wù)器是將ASP程序執(zhí)行的結(jié)果以HTML格式傳回客戶端瀏覽器,因此使用者不會看到ASP所編寫的原始程序代碼,可防止ASP程序代碼被竊取。
(7) 方便連接ACCESS與SQL數(shù)據(jù)庫.
(8)開發(fā)需要有豐富的經(jīng)驗,否則會留出漏洞,讓黑客利用進行注入攻擊.
ASP也不僅僅局限于與HTML結(jié)合制作WEB網(wǎng)站,而且還可以與XHTML和WML語言結(jié)合制作WAP手機網(wǎng)站。但是其原理也是一樣的。
ASP-工作原理
當在Web站點中融入ASP功能后,將發(fā)生以下事情:
1、用戶向瀏覽器地址欄輸入網(wǎng)址,默認頁面的擴展名是.asp。
2、瀏覽器向服務(wù)器發(fā)出請求。
3、服務(wù)器引擎開始運行ASP程序。
4、ASP文件按照從上到下的順序開始處理,執(zhí)行腳本命令,執(zhí)行HTML頁面內(nèi)容。
5、頁面信息發(fā)送到瀏覽器。
ASP的升級平臺:ASP.NET
[1][2]ASP.net是把基于通用語言的程序在服務(wù)器上運行。不像以前的ASP即時解釋程序,而是將程序在服務(wù)器端首次運行時進行編譯,執(zhí)行效果,比一條一條的解釋強很多,執(zhí)行效率大大的提高。
ASP.net可以運行在Web應(yīng)用軟件開發(fā)者的幾乎全部的平臺上。通用語言的基本庫,消息機制,數(shù)據(jù)接口的處理都能無縫的整合到ASP.net的Web應(yīng)用中。ASP.net同時也是language-independent語言獨立化的,所以,你可以選擇一種最適合你的語言來編寫你的程序,或者把你的程序用很多種語言來寫,現(xiàn)在已經(jīng)支持的有C#,VB
.NET,JScript.NET,managedC++,J#。將來,這樣的多種程序語言協(xié)同工作的能力保護您現(xiàn)在的基于COM+開發(fā)的程序,能夠完整的移植向ASP.net。
ASP.NET常用的主要有兩種開發(fā)語言,VB.NET和C#,C#相對更為常用,因為是.NET獨有的語言,VB.NET則為以前VB程序設(shè)計,適合于以前VB程序員,如果新接觸.NET,沒有其他開發(fā)語言經(jīng)驗,建議直接學(xué)習(xí)C#。
ASP的意涵與特性
ASP(ApplicationServiceProvider,應(yīng)用軟體租賃服務(wù)提供者)即是指「透過網(wǎng)絡(luò)以租賃方式提供應(yīng)用軟體服務(wù)的從業(yè)者」,即是指業(yè)者以應(yīng)用軟體為主體,透過網(wǎng)路一對多地傳遞服務(wù),這種以服務(wù)為主的交易模式促使企業(yè)可藉由租賃的方式,以更符合成本效益的方式擁有軟體的使用權(quán),并且亦能因為業(yè)者集中式的管理而大幅降低企業(yè)維護的成本.
基本上,ASP即具有「軟體服務(wù)化,服務(wù)網(wǎng)路化」,「資訊委外服務(wù)與網(wǎng)路結(jié)合」與「產(chǎn)品通路化,通路產(chǎn)品化」等三大特性,其甚至可以被視為是ISP(InternetService Provider)與ITS(Information Technology Service)的結(jié)合.
根據(jù)流行的觀點,ASP有如下五個核心內(nèi)涵:
a. ASP著重應(yīng)用為中心,提供對于應(yīng)用方面的訪問和管理。
b. ASP服務(wù)可以為用戶提供沒有在服務(wù)器、人員、系統(tǒng)和系統(tǒng)授權(quán)等前期資源投入情況下就可以在“定制”的全新應(yīng)用系統(tǒng)環(huán)境進行訪問的服務(wù),如ISP,而這樣的服務(wù)一般按月份ASP收取服務(wù)費。
c. ASP采用集中管理的方式---ASP一般都有一個管理中心,所有的客戶通過INTERNET來進行遠程訪問,獲得技術(shù)支持和咨詢服務(wù)。
d. 一對多的服務(wù),也就是講,ASP提供的是標準化的產(chǎn)品包,產(chǎn)品都是最低程度的自定義或者沒有實現(xiàn)客戶定制化,對于行業(yè)用戶來講已經(jīng)達到實用方便的標準。
e. 按照合同交付,在ASP客戶的眼中,ASP是一家根據(jù)客戶協(xié)議內(nèi)容提供相關(guān)服務(wù),保證應(yīng)用服務(wù)系統(tǒng)服務(wù)可以得到確實履行的機構(gòu)。
2. ASP為什么會火?
從大的方面來講,困擾國內(nèi)企業(yè)生存、發(fā)展的核心問題是管理問題。隨著互聯(lián)網(wǎng)絡(luò)的普及和應(yīng)用的深入,企業(yè)用戶可以隨時隨地直接租用ASP的服務(wù)器和軟件系統(tǒng)來進行自己的業(yè)務(wù)管理,這樣做的好處在于;第一,企業(yè)可以節(jié)省大筆用于IT建設(shè)方面的資金,大幅度降低企業(yè)管理信息化的成本。第二,ASP的用戶可以采用各種方式獲得應(yīng)用和服務(wù),軟件類服務(wù)產(chǎn)品完全可以通過網(wǎng)絡(luò)在非常短的時間內(nèi)組成一個完善的、高效的、先進的企業(yè)管理系統(tǒng),迅速獲得企業(yè)一體化的運營管理方案。
網(wǎng)絡(luò)經(jīng)濟發(fā)展突飛猛進,電子商務(wù)一日千里,網(wǎng)絡(luò)和網(wǎng)站從門戶到內(nèi)容、從注意力到垂直性,目前逐漸轉(zhuǎn)向熱衷ASP也是一個主要的原因。
筆者資料中,國內(nèi)最早對ASP觸電的是網(wǎng)友“飛鳥”,在1998年6月自發(fā)組織了研究、交流和探討ASP技術(shù)的“飛鳥之家”,現(xiàn)在已經(jīng)發(fā)展成為chinaasp.com,成為國內(nèi)最早的ASP應(yīng)用技術(shù)服務(wù)提供商網(wǎng)站。上海的互易網(wǎng)絡(luò)有限公司結(jié)合國內(nèi)實際情況,推出了為國內(nèi)企業(yè)服務(wù)的ASP平臺互易網(wǎng),向企業(yè)提供以電子商務(wù)為核心的,企業(yè)內(nèi)、外部網(wǎng)絡(luò)設(shè)施和應(yīng)用的遠程構(gòu)架和托管服務(wù),創(chuàng)造虛擬企業(yè)門戶(EP)直接將ASP應(yīng)用到商業(yè)增殖環(huán)節(jié)中去。
此外,ISP也全面轉(zhuǎn)向ASP的懷抱,成為ASP進一步發(fā)展的產(chǎn)物。軟件商對于ASP更是情有獨鐘。業(yè)界最新的消息是,中國第三電信“網(wǎng)通”已經(jīng)制定ASP發(fā)展戰(zhàn)略,國內(nèi)最大的管理咨詢公司“漢普”將把旗下八個子公司定位在企業(yè)內(nèi)部資源計劃管理(ERP)領(lǐng)域的ASP中,北京“聯(lián)成互動”瞄準客戶關(guān)系管理(CRM)領(lǐng)域的ASP,北京“數(shù)碼方舟”定位在網(wǎng)絡(luò)辦公的ASP,HP正在和中國建設(shè)銀行討論共建金融領(lǐng)域的ASP。
ASP正在IT經(jīng)濟大潮中顯山露水,其發(fā)展前景不可估量。
3. ASP的發(fā)展階段和面臨的問題
以網(wǎng)絡(luò)服務(wù)商、軟件廠商和ISP為主力的各種IT角色,正在根據(jù)自己的優(yōu)勢條件出發(fā)對ASP領(lǐng)域進行多種方面的嘗試。就目前階段來講,ASP提供的服務(wù)不計其數(shù)五花八門,沒有標準化和量化的概念,硬件廠商向ASP的“土壤”和勢力方向靠攏,軟件廠商和ISP則直接參與到ASP業(yè)務(wù)的第一線。
筆者估計,經(jīng)過一段時間的試探和發(fā)展,ASP將向服務(wù)集成方面發(fā)展,產(chǎn)品和服務(wù)初步的標準化將很快建立起來,接著進入到市場細化和標準制定、ASP產(chǎn)品成熟時期,ASP的穩(wěn)步增長,最終將成為IT行業(yè)商務(wù)模式的核心!
目前在ASP發(fā)展的道路上,主要面臨的問題是觀念的轉(zhuǎn)變方面:用租賃代替購買,服務(wù)集成代替產(chǎn)品經(jīng)銷商、服務(wù)經(jīng)濟代替產(chǎn)品經(jīng)濟等等。具體到實際方面來講,安全和服務(wù)的質(zhì)量是ASP和客戶共同關(guān)心的頭等大事,要實現(xiàn)ASP提出的“租賃高科技”的口號,ASP任重而道遠!
附錄1:ASP---IIS的安裝與配置
IIS的安裝與配置
a.安裝IIS
若操作系統(tǒng)中還未安裝IIS服務(wù)器,可打開“控制面板”,然后單擊啟動 “添加/刪除程序”,在彈出的對話框中選擇“添加/刪除Windows組件”,在Windows組件向?qū)υ捒蛑羞x中“Internet信息服務(wù)(IIS)”,然后單擊“下一步”,按向?qū)е甘?,完成對IIS的安裝
b.啟動Internet信息服務(wù)(IIS)
Internet信息服務(wù)簡稱為IIS,單擊Windows開始菜單---所有程序---管理工具---Internet信息服務(wù)(IIS)管理器,即可啟動“Internet信息服務(wù)”管理工具.
c.配置IIS
IIS安裝后,系統(tǒng)自動創(chuàng)建了一個默認的Web站點,該站點的主目錄默認為C:\\Inetpub\\www.root。
用鼠標右鍵單擊“默認Web站點”,在彈出的快捷菜單中選擇“屬性”,此時就可以打開站點屬性設(shè)置對話框,在該對話框中,可完成對站點的全部配置。
主目錄與啟用父路徑
單擊“主目錄”標簽,切換到主目錄設(shè)置頁面,該頁面可實現(xiàn)對主目錄的更改或設(shè)置。注意檢查啟用父路徑選項是否勾選,如未勾選將對以后的程序運行有部分影響。主目錄—配置---選項。
設(shè)置主頁文檔
單擊“文檔”標簽,可切換到對主頁文檔的設(shè)置頁面,主頁文檔是在瀏覽器中鍵入網(wǎng)站域名,而未制定所要訪問的網(wǎng)頁文件時,系統(tǒng)默認訪問的頁面文件。常見的主頁文件名有index.htm、index.html、index.asp、index.php、index.jsp、default.htm、default.html、default.asp等
IIS默認的主頁文檔只有default.htm和default.asp,根據(jù)需要,利用“添加”和“刪除”按鈕,可為站點設(shè)置所能解析的主頁文檔。
啟動與停止IIS服務(wù)
在Internet信息服務(wù)的工具欄中提供有啟動與停止服務(wù)的功能。單擊 可啟動IIS服務(wù)器;單擊 則停止IIS服務(wù)器。
附錄2:ASP、JSP、PHP 三種技術(shù)比較
在ASP.NET流行之前,最常用的三種動態(tài)網(wǎng)頁語言有ASP(Active Server Pages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor)。
簡 介
ASP全名Active Server Pages,是一個WEB服務(wù)器端的開發(fā)環(huán)境,利用它可以產(chǎn)生和執(zhí)行動態(tài)的、互動的、高性能的WEB服務(wù)應(yīng)用程序。ASP采用腳本語言VBScript(Java script)作為自己的開發(fā)語言。
PHP是一種跨平臺的服務(wù)器端的嵌入式腳本語言。它大量地借用C,Java和Perl語言的語法,并耦合PHP自己的特性,使WEB開發(fā)者能夠快速地寫出動態(tài)產(chǎn)生頁面。它支持目前絕大多數(shù)數(shù)據(jù)庫。還有一點,PHP是完全免費的,不用花錢,你可以從PHP官方站點。自由下載。而且你可以不受限制地獲得源碼,甚至可以從中加進你自己需要的特色。
JSP是Sun公司推出的新一代網(wǎng)站開發(fā)語言,Sun公司借助自己在Java上的不凡造詣,將Java從Java應(yīng)用程序和JavaApplet之外,又有新的碩果,就是JSP,Java ServerPage。JSP可以在Servlet和JavaBean的支持下,完成功能強大的站點程序。
三者都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執(zhí)行程序代碼的能力。但JSP代碼被編譯成Servlet并由Java虛擬機解釋執(zhí)行,這種編譯操作僅在對JSP頁面的第一次請求時發(fā)生。在ASP、PHP、JSP環(huán)境下,HTML代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的HTML頁面只依賴于
Web服務(wù)器,而ASP、PHP、JSP頁面需要附加的語言引擎分析和執(zhí)行程序代碼。程序代碼的執(zhí)行結(jié)果被重新嵌入到HTML代碼中,然后一起發(fā)送給瀏覽器。ASP、PHP、JSP三者都是面向Web服務(wù)器的技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。
附錄3:ASP常用內(nèi)置函數(shù)
ASP常用內(nèi)置函數(shù)在ASP中,把帶有返回值的這樣的一段代碼叫做函數(shù)。例如通過編寫一段代碼計算出一個自然數(shù)是否是質(zhì)數(shù),返回給調(diào)用程序,由于調(diào)用程序需要知道那個自然數(shù)是否是質(zhì)數(shù),所以必須要返回一個值。
1,日期/時間函數(shù)
這些函數(shù)包括對“年”、“月”、“日”、“時”、“分”、“秒”、“星期”等的顯示。
?。?)Now函數(shù):根據(jù)計算機系統(tǒng)設(shè)定的日期和時間,返回當前的日期和時間值。使用方法now();
(2)Date函數(shù):只返回當前計算機系統(tǒng)設(shè)定的日期值。使用方法:date();
?。?)Time函數(shù):只返回當前計算機系統(tǒng)設(shè)定的時間值。使用方法:time();
?。?)Year函數(shù):返回一個代表某年的整數(shù)。使用方法:year(date),其中date參數(shù)是任意的可以代表日期的參數(shù),比如“year(date())”就表示是從“date()”得出的日期中提取其中“年”的整數(shù)。
另外,還可以這樣應(yīng)用:“year(#520,2006#)”表示提取“2006年5月20日”中“年”的整數(shù)值。關(guān)于“520,2006”,也可使用“5-20-2006”、“5/20/2006”等形式表現(xiàn),即“某月某日”和“某年”的組合。同時注意使用“#”進行包括以表示日期值。
?。?)Month函數(shù):返回1到12之間的整數(shù)值,表示一年中某月。使用方法:month(date)。關(guān)于參數(shù)date的說明和year函數(shù)相同。但要注意日期的正確性,比如“#13-31-2006#”,根本就沒有“13”月,肯定是錯誤的了。
?。?)Day函數(shù):返回1到31之間的整數(shù)值,表示一個月中的某天。使用方法:day(date)。關(guān)于參數(shù)date的說明和year函數(shù)相同。同樣要注意日期的正確性,比如“#2-30-2006#”其中對“2”月定義的“30”日這天就是錯誤的。
?。?)Hour函數(shù):返回0到23之間的整數(shù)值,表示一天中的某個小時。使用方法:hour(time)。其中參數(shù)time是任意的可代表時間的表達式。比如“hour(time())”就表示是從“time()”得出的時間中提取其中“小時”的整數(shù)。同樣,參數(shù)time還可以這樣應(yīng)用“hour(#11:45:50#)”表示從“11”時“45”分“50”秒中提取當前小時數(shù)。當然,定義的時間要符合時間的規(guī)范。
?。?)Minute函數(shù):返回0到59之間的整數(shù)值,表示一小時中的某分鐘。使用方法:minute(time)。time參數(shù)的說明和hour函數(shù)相同。
?。?)Second函數(shù):返回0到59之間的整數(shù)值,表示一分鐘中的某秒。使用方法:second(time)。time參數(shù)的說明和hour函數(shù)相同。
(10)Weekday函數(shù):返回一個星期中某天的整數(shù)。使用方法:weekday(date)。關(guān)于參數(shù)date的說明和year函數(shù)相同。該函數(shù)返回值為“1”到“7”,分別代表“星期日”、“星期一”……“星期六”。比如當返回值是“4”時就表示“星期三”。
(11)WeekDayName函數(shù):返回一個星期中具體某天的字符串。相對weekday函數(shù)而言即翻譯出“星期幾”,使用方法:weekdayname(weekday)。參數(shù)weekday即星期中具體某天的數(shù)值。比如“weekdayname(weekday(date()))”就表示當前是“星期幾”。因為“date()”表示的是當前的時間,而“weekday(date())”就表示的是一星期中具體某天的整數(shù)。
當然weekdayname函數(shù)最終顯示的字符串內(nèi)容還與當前操作系統(tǒng)語系有關(guān),比如中文操作系統(tǒng)將顯示“星期一”這類的中文字符,而英文操作系統(tǒng)則顯示為“Mon”(Monday簡寫)。
此外,在VBScript中還有一些關(guān)于時間間隔的計算函數(shù):
?。?)DateAdd函數(shù):返回指定時間間隔的日期、時間。可以計算出相隔多少年、或相隔幾個月、又或相隔幾個小時等的新日期、時間。使用方法:dateadd(interval, number, date)。
其中參數(shù)interval表示需要添加的時間間隔單位。其是以字符串的形式表達的,比如“yyyy”表示年,“q”表示季度,“m”表示月份,“d”表示天數(shù),“ww”表示周數(shù),“h”表示小時數(shù),“n”表示分鐘數(shù),“s”表示秒數(shù)。
而參數(shù)number則表示添加的時間間隔數(shù)。其是以數(shù)值的形式表達的,可以為負值。參數(shù)date則要求是日期、時間的正確格式。
比如dateadd("d",100,"2006-5-20")就表示2006年5月20號以后的100天的日期值:2006-8-28。再比如dateadd("h",-12,"2005-5-2010:00:00")就表示2005年5月20號上午10點前的12小時的日期時間:2005-5-19 22:00:00。
?。?)DateDiff函數(shù):返回兩個日期時間之間的間隔??捎嬎愠鰞蓚€日期相隔的年代、小時數(shù)等。使用方法:datediff(interval,date1,date2)。
參數(shù)interval和dateadd函數(shù)中的interval參數(shù)內(nèi)容描述相同,date1和date2參數(shù)分別就是相互比較的兩個日期時間。另外,當date1的日期時間值大于date2時,將顯示為負值。
比如DateDiff("yyyy","1982-7-18",date)表示某人的出生到現(xiàn)在已經(jīng)多少年了。又比如DateDiff("d","1982-7-18","2062-7-18")則計算了80年過了多少天:29220。
2,字符串處理函數(shù)
在腳本的功能處理中,通常需要對一些字符串進行一些修飾性處理。比如過濾掉字符串中的敏感字眼以符合最終顯示的要求;又比如一段較長的字符串,需要提取開頭的幾個字符時。
(1)Asc函數(shù):返回字符串中第一個字母對應(yīng)的ANSI字符代碼。使用方法:asc(string)。其中string參數(shù)表示字符串。
?。?)Chr函數(shù):返回指定了ANSI 字符代碼對應(yīng)的字符。使用方法:chr(chrcode)。參數(shù)chrcode是相關(guān)的標識數(shù)字。該函數(shù)的功能和asc函數(shù)形成對應(yīng)。
比如:asc(“a”)表示小寫字母“a”的ANSI字符“97”;同樣chr(97)表示的就是“小寫字母a”。另外chr(chrcode)中參數(shù)chrcode值為0到31的數(shù)字時,表示不可打印的ASCII碼。比如“chr(10)”表示換行符,“chr(13)”表示回車符等,這常用于輸入和顯示格式的轉(zhuǎn)換中。
?。?)Len函數(shù):返回字符串內(nèi)字符的數(shù)目(字節(jié)數(shù))。使用方法:len(string)。比如len(“love”)的值就是4。
?。?)LCase函數(shù):返回所有字符串的小寫形式。使用方法:lcase(string)。比如lcase(“CNBruce”)返回為“cnbruce”。
?。?)UCase函數(shù):返回所有字符串的大寫形式。與lcase函數(shù)形成對應(yīng)。同樣,ucase(“CNBruce”)返回為“CNBRUCE”。
?。?)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ù)常用于注冊信息中,比如確保注冊用戶名前或后的空格。
?。?)Left函數(shù):返回從字符串的左邊算起的指定數(shù)目的字符。使用方法:left(string,length)。比如left(“brousce”,5)返回為“brous”,即前五位字符。
?。?)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")
?。?0)Mid函數(shù):從字符串中返回指定數(shù)目的字符。比如現(xiàn)在的“110”則應(yīng)該是從字符串“A110B121C119D1861”的第2位取得3個單位的值:mid("A110B121C119D1861",2,3)
?。?1)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,運算函數(shù)
Abs(nmb) 返回數(shù)子的絕對值
Atn(nmb) 返回一個數(shù)的反正切
Cos(nmb) 返回一個角度的余炫值
Exp(nmb) 返回自然指數(shù)的次方值
Int(nmb) 返回數(shù)字的整形(進位)部份
Fix(nmb) 返回數(shù)字的整形(舍去)部份
Formatpercent(表達式) 返回百分比
Hex(nmb) 返回數(shù)據(jù)的16進制數(shù)
Log(nmb) 返回自然對數(shù)
Oct(nmb) 返回數(shù)字的8進制數(shù)
Rnd 返回大于“0”而小于“1”的隨機數(shù),但此前需 randomize 聲明產(chǎn)生隨機種子
Sgn(nmb) 判斷一個數(shù)字的正負號
Sin(nmb) 返回角度的正鉉值
Sqr(nmb) 返回數(shù)字的二次方根
Tan(nmb) 返回一個數(shù)的正切值
5,其他函數(shù)
IsArray(var) 判斷一個變量是否是數(shù)組
IsDate(var) 判斷一個變量是否是日期
IsNull(var) 判斷一個變量是否為空
IsNumeric(var) 判斷表達式是否包含數(shù)值
IsObject(var) 判斷一個變量是否是對象
TypeName(var) 返回變量的數(shù)據(jù)類型
Array(list) 返回數(shù)組
Split(liststr) 從一個列表字符串中返回一個一維數(shù)組
LBound(array) 返回數(shù)組的最小索引
Ubound(array) 返回數(shù)組的最大索引
CreateObject(class) 創(chuàng)建一個對象
GetObject(pathfilename) 得到文件對象
附錄4:ASP常用函數(shù)介紹
1.函數(shù)array()
功能:創(chuàng)建一個數(shù)組變量
格式:array(list)
參數(shù):list 為數(shù)組變量中的每個數(shù)值列,中間用逗號間隔
例子:
<% i = array ("1","2","3") %>
結(jié)果: i 被賦予為數(shù)組
2.函數(shù)Cint()
功能:將一表達式/其它類型的變量轉(zhuǎn)換成整數(shù)類型(int)
格式:Cint(expression)
參數(shù):expression 是任何有效的表達式/其它類型的變量
例子:
<%
f = "234"
response.write cINT(f) + 2
%>
結(jié)果: 236
函數(shù)Cint()將字符"234"轉(zhuǎn)換 成整數(shù)234.如果表達式為空, 或者無效時,返回值為0;
3.函數(shù):Creatobject()
功能:創(chuàng)建及返回一個ActiveX對象.
格式:Creatobject(obname)
參數(shù)bname 是對象的名稱
例子:
<%
Set con = Server.CreateObject("ADODB.Connection")
%>
結(jié)果:
4.函數(shù)Cstr()
功能:將一表達式/其它類型的變量轉(zhuǎn)換成字符類型(string)
格式:Cstr(expression)
參數(shù):expression是任何有效的表達式/其它類型的變量
例子:
<%
s = 3 + 2
response.write "The result is: " & cStr(s)
%>
結(jié)果:函數(shù)Cstr()將整數(shù) 5 轉(zhuǎn)換 成字符"5".
5.函數(shù)Date()
功能:返回當前系統(tǒng)(server端)的日期
格式: Date()
參數(shù):無
例子<% date () %>
結(jié)果:05/10/00
5.1 Instr()
函數(shù)返回字符或字符串在另一個字符串中第一次出現(xiàn)的位置.
表達式 Instr([start, ] strToBeSearched, strSearchFor [, compare])
允許數(shù)據(jù)類型: Start為搜索的起始值,strToBeSearched接受搜索的字符串 strSearchFor要搜索的字符.compare比較方式(詳細見ASP常數(shù))
實例: <%
strText = "This is a test!!"
pos = Instr(strText, "a")
response.write pos
%>
返回結(jié)果: 9
6.函數(shù)Dateadd()
功能:計算某個指定的時間和
格式: dateadd(timeinterval,number,date)
參數(shù):timeinterval是時間單位(月,日..); number是時間間隔值,date是時間始點.
例子:
<%
currentDate = #8/4/99#
newDate = DateAdd("m",3,currentDate)
response.write newDate
%> <%
currentDate = #12:34:45 PM#
newDate = DateAdd("h",3,currentDate)
response.write newDate
%>
結(jié)果:
11/4/99
3:34:45 PM
其中
"m" = "month";
"d" = "day";
如果是currentDate 格式,則,
"h" = "hour";
"s" = "second";
7.函數(shù)Datediff()
功能:計算某量個指定的時間差
格式: datediff(timeinterval,date1,date2[,firstdayofweek[,firstdayofyear]])
參數(shù): timeinterval 是時間單位; date1,date2是有效的日期表達式,firstdayofweek,firstdayofyear 是任意選項.
例子:
<%
fromDate = #8/4/99#
toDate = #1/1/2000#
response.write "There are " & _
DateDiff("d",fromDate,toDate) & _
" days to millenium from 8/4/99."
%>
結(jié)果:There are 150 days to millenium from 8/4/99.
8.函數(shù)day()
功能:返回一個整數(shù)值,對應(yīng)于某月的某日
格式: day(date)
參數(shù): date是一個有效的日期表達式;
例子<% =date(#8/4/99#) %>
結(jié)果:4
9.函數(shù)formatcurrency()
功能:轉(zhuǎn)換成貨幣格式
格式: formatcurrency(expression [,digit[,leadingdigit[,paren[,groupdigit]]]])
參數(shù): expression 是有效的數(shù)字表達式;digit表示小數(shù)點后的位數(shù);leadingdigit,paren,groupdigit是任意選項.
例子<%=FormatCurrency(34.3456)%>
結(jié)果34.35
10.函數(shù)Formatdatetime()
功能:格式化日期表達式/變量
格式: formatdatetime(date[,nameformat])
參數(shù): date為有效的日期表達式/變量;nameformat是指定的日期格式常量名稱.
例子<% =formatdatetime("08/04/99",vblongdate) %>
結(jié)果:Wednesday,August 04,1999
說明:
描述
返回表達式,此表達式已被格式化為日期或時間?!?br>
語法
FormatDateTime(Date[, NamedFormat])
FormatDateTime 函數(shù)的語法有以下參數(shù):
參數(shù) 描述
Date 必選項。要被格式化的日期表達式。
NamedFormat 可選項。指示所使用的日期/時間格式的數(shù)值,如果省略,則使用 vbGeneralDate?!?br>
設(shè)置
NamedFormat 參數(shù)可以有以下值:
常數(shù) 值 描述
vbGeneralDate 0 顯示日期和/或時間。如果有日期部分,則將該部分顯示為短日期格式。如果有時間部分,則將該部分顯示為長時間格式。如果都存在,則顯示所有部分?!?br>
vbLongDate 1 使用計算機區(qū)域設(shè)置中指定的長日期格式顯示日期?!?br>
vbShortDate 2 使用計算機區(qū)域設(shè)置中指定的短日期格式顯示日期?!?br>
vbLongTime 3 使用計算機區(qū)域設(shè)置中指定的時間格式顯示時間?!?br>
vbShortTime 4 使用 24 小時格式 (hh:mm) 顯示時間?!?br>
說明
下面例子利用 FormatDateTime 函數(shù)把表達式格式化為長日期型并且把它賦給 MyDateTime:
Function GetCurrentDate
"FormatDateTime 把日期型格式化為長日期型。
GetCurrentDate = FormatDateTime(Date, 1)
End Function
11.函數(shù)Isnumeric()
功能:返回一個布爾值,判斷變量是否為數(shù)字變量,或者是可以轉(zhuǎn)換成數(shù)字的其它變量.
格式:isnumeric(expression)
參數(shù):expression 是任意的變量.
例子:
<%
i="234"
response.write isnumeric(i)
%>
結(jié)果: true.
12.函數(shù)Isobject()
功能:返回一個布爾值,判斷變量是否為對象的變量,
格式: isobject(expression)
參數(shù): expression 是任意的變量.
例子:
<%
set con =server.creatobject("adodb.connection")
response.write isobject(con)
%>
結(jié)果: true
13.函數(shù):Lbound()
功能:返回一個數(shù)組的下界.
格式:Lbound(arrayname[,dimension])
參數(shù):arrayname 是數(shù)組變量,dimension 是任意項
例子:
<%
i = array("1","2","3")
response.write lbound(i)
%>
結(jié)果:0
14.函數(shù)Lcase()
功能:將一字符類型變量的字符全部變換小寫字符.
格式:Lcase(string)
參數(shù):string是字符串變量
例子:
<%
str="THIS is Lcase!"
response.write Lcase(str)
%>
結(jié)果:this is lcase!
15.函數(shù)left()
功能:截取一個字符串的前部分;
格式:left(string,length)
參數(shù):string字符串,length截取的長度.
例子: <% =left("this is a test!",6) %>
結(jié)果:this i
16.函數(shù)len()
功能:返回字符串長度或者變量的字節(jié)長度
格式:len(string *varname)
參數(shù):string字符串;varname任意的變量名稱
例子:
<%
strtest="this is a test!"
response.write left(strtest)
%>
結(jié)果:15
17.函數(shù)ltrim()
功能:去掉字符串前的空格.
格式:ltrim(string)
參數(shù):string 字符串.
例子: <% =ltrim (" this is a test!")
結(jié)果:this is a test!
18.函數(shù)Mid()
功能:從字符串中截取字符串.
格式:mid(string,start [,length])
參數(shù):string字符串,start截取的起點,length要截取的長度.
例子:
<%
strtest="this is a test, Today is Monday!"
response.write mid(strtest,17,5)
%>
結(jié)果:Today
19.函數(shù)minute()
功能:返回一數(shù)值, 表示分鐘
格式:minute(time)
參數(shù): time是時間變量
例子lt;% =minute(#12:23:34#) %>
結(jié)果:23
20.函數(shù)month()
功能:返回一數(shù)值, 表示月份
格式:month(time)
參數(shù):time是日期變量
例子<% =month(#08/09/99) %>
結(jié)果:9
21.函數(shù)monthname()
功能:返回月份的字符串(名稱).
格式:Monthname(date [,abb])
參數(shù): date是日期變量,abb=true時 則月份的縮寫,
例子:
<% =monthname(#4/5/99#) %>
結(jié)果:April
22.函數(shù)Now()
功能:返回系統(tǒng)的當前時間和日期.
格式:now()
參數(shù):無
例子:
<% =now() %>
結(jié)果: 05/10/00 8:45:32 pm
23.函數(shù):replace()
功能:在字符串中查找,替代指定的字符串.
格式:replace(strtobesearched,strsearchfor,strreplacewith [,start[,count[,compare]]])
參數(shù):strtobesearched是字符串; strsearchfor是被查找的子字符串;strreplacewith 是用來替代的子字符串.start,count,compare 是任意選項.
例子:
<%
strtest="this is an apple."
response.write replace(strtest,"apple","orange")
%>
結(jié)果:this is an orange.
24.函數(shù)right()
功能:截取一個字符串的后部分
格式:right(string,length)
參數(shù):string字符串,length截取的長度.
例子:
<%
strtest="this is a test!"
response.write right(strtest,3)
%>
結(jié)果:st!
25.函數(shù)rnd()
功能:返回一個隨機數(shù)值
格式:rnd[(number)]
參數(shù):number是任意數(shù)值.
例子:
<%
randomize()
response.write rnd()
%>
結(jié)果:0/1數(shù)值之一,無randomize(), 則不能產(chǎn)生隨機數(shù).
26.函數(shù)round()
功能:完整數(shù)值
格式:round(expression[,numright])
參數(shù):expression數(shù)字表達式;numright任意選項.
例子:
<%
i=12.33654
response.write round(i)
%>
結(jié)果: 12
27.函數(shù)rtrim()
功能:去掉字符串后的空格.
格式:rtrim(string)
參數(shù):string 是字符串
例子:
<%
response.write rtrim("this is a test! ")
%>
結(jié)果:this is a test!
28.函數(shù)second()
功能:返回一個整數(shù)值.
格式:second(time)
參數(shù):time是一個有效的時間表達式;
例子lt;% =second(# 12:28:30#) %>
結(jié)果:30
29.函數(shù)strReverse()
功能:返回與原字符串排列逆向的字符串.
格式:strreverse(string)
參數(shù):string是字符串
例子<% =strreverse("this is a test!")
結(jié)果:!tset a si siht
30.函數(shù)time()
功能:返回當前系統(tǒng)的時間值.
格式:time()
參數(shù):無
結(jié)果:9:58:28 Am
31.函數(shù)trim()
功能:刪去字符串前,后的空格.
格式:trim(string)
參數(shù):string 字符串.
例子:
<%
strtest=" this is a test! "
response.write trim(strtest)
%>
結(jié)果:this is a test!
32.函數(shù)UBound()
功能:返回一個數(shù)組的上界.
格式:Ubound(expression [,dimension])
參數(shù):expression 是數(shù)組表達式/數(shù)組變量,dimension 是任意項
例子:
<%
i = array("1","2","3")
response.write ubound(i)
%>
結(jié)果: 2
33.函數(shù):UCase()
功能:將一字符類型變量的字符全部變換成大寫字符.
格式:Ucase(string)
參數(shù):string是字符串變量
例子:
<%
str="THIS is Lcase!"
response.write Lcase(str)
%>
結(jié)果:THIS IS LCASE!
34.函數(shù)Vartype()
功能:返回變量的常量代碼(整數(shù))
格式:Vartype(varname)
參數(shù):varname是任何類型的變量名稱.
例子:
<%
i=5
response.write vartype(i)
%>
結(jié)果:2 (2表示整數(shù),須要參考ASP常量代碼.)
35.函數(shù)Weekday()
功能:返回一個整數(shù),對應(yīng)一周中的第幾天.
格式:Weekday(date [,firstofweek])
參數(shù): date為日期變量,firstofweek為任選項.
例子:
<%
d= # 5/9/00 #
response.write weekday(d) %>
結(jié)果:3(3 表示是星期二)
36.函數(shù)weekdayname()
功能:返回字符串,對應(yīng)星期幾.
格式:weekdayname(weekday[,abb[,firstdayofweek]])
參數(shù):weekday為日期變量,abb,firstdayofweek為任選項.
例子:
<%
d = #8/4/99#
response.write weekdayname(d)
%>
結(jié)果: Wednesday
37.函數(shù)year()
功能:返回日期表達式所在的年份.
格式:year(date)
參數(shù): date是有效的日期表達式
例子:
<% =year(#8/9/99#) %>
結(jié)果:1999
38.函數(shù)Mod()功能:取余數(shù).
例子:3 Mod 2
結(jié)果:1
附錄5:asp網(wǎng)頁提升速度方法5則
技巧之一:提高使用Request集合的效率
訪問一個ASP集合來提取一個值是費時的、占用計算資源的過程。因為這個操作包含了一系列對相關(guān)集合的搜索,這比訪問一個局部變量要慢得多。因此,如果打算在頁面中多次使用Request集合中的一個值,應(yīng)該考慮將其存貯為一個局部變量。例如將代碼寫成下面的形式以加快腳本引擎處理速度:
strTitle=Request.Form("Title")
strFirstName=Request.Form("FirstName")
strLastName=Request.Form("LastName")
If Len(strTitle) Then strTitle=strTitle & " "
If strFirstName="" Then strFullName=strTitle & " " & strLastName
Elseif Len(strFirstName)=1 Then
strFullName=strTitle & strFirstName & ". " & strLastName
Else
strFullName=strTitle & strFirstName & " " & strLastName
End If
技巧之二:直接訪問適當?shù)募?
如果不是別無選擇,否則不要使用strPage=Request("page")的這樣的形式來獲取參數(shù),因為這將按順序搜索全部的集合—QueryString、Form、Cookies、ClientCertificate、ServerVarible直到發(fā)現(xiàn)第一個匹配值的名稱。這樣做比直接訪問適當?shù)募闲实?,并且是不安全的,除非能絕對保證這個值不會出現(xiàn)在另外一個集合中。
例如,可能希望搜索滿足客戶請求的WEB服務(wù)器名稱,這通過出現(xiàn)在每個查詢中的Request.ServerVarables集合中尋找“SERVER_NAME”來實現(xiàn)。然而,假如其他的集合也包含名為“SERVER_NAME”的值(鍵名不區(qū)分大小寫),當使用Request("server_Name")時,就會得到錯誤的結(jié)果。總而言之,應(yīng)盡可能直接訪問適當?shù)募稀?
技巧之三:在費時操作前使用Response.IsClientConnected屬性
使用Response.IsClientConnected是觀察用戶是否仍連到服務(wù)器并正在載入ASP創(chuàng)建的網(wǎng)頁的有用方式。如果用戶斷開連接或停止下載,我們就不用再浪費服務(wù)器的資源創(chuàng)建網(wǎng)頁,因為緩沖區(qū)內(nèi)容將被IIS丟棄。所以,對那些需要大量時間計算或資源使用較多的網(wǎng)頁來說,值得在每一階段都檢查游覽者是否已離線:
…… Code to create first part of the page
If Response.IsClientConnected Then
Response.Flush
Else
Response.End
End If
…… Code to create next part of page
技巧之四:優(yōu)化ASP中的ADO操作
通常面言,數(shù)據(jù)構(gòu)成了WEB站點的實際內(nèi)容。所以,優(yōu)化ADO操作以加速ASP代碼執(zhí)行,十分有用:
a.僅選擇所需的列:當打開ADO記錄集時,除非需要獲得所有的列,否則不應(yīng)自動地使用表名(即SELECT*)。使用單獨的列意味著將減少發(fā)送到服務(wù)器或從服務(wù)器取出的數(shù)據(jù)量。即使需要使用全部列,單獨地命名每個列也會獲得最佳的性能,因為服務(wù)器不必再解釋這些列的名字。
b. 盡可能的使用存儲過程。存儲過程是預(yù)先編譯的程序,含有一個已經(jīng)準備好的執(zhí)行計劃,所以比SQL語句執(zhí)行更快。
c. 使用適當?shù)墓鈽撕玩i定模式。如果所做的全部工作只是從記錄集中讀取數(shù)據(jù),并將其顯示在屏幕上,那么就使用缺省的只能前移、只讀的記錄集。ADO用來維護記錄和鎖定的細節(jié)的工作越少,執(zhí)行的性能就越高。
d. 使用對象變量。當遍歷記錄集時一個肯定能提高性能的方法是使用對象變量指向集合中的成員。例如:
While Not RsGc.EOF
Response.Write "工程名稱:" & RsGc("GcMC") & "(工程代碼:" & RsGc("GcCode") & ")
"
RsGc.MoveNext
Wend
可以用改寫為下面的代碼以加快執(zhí)行:
set GcMc=RsGc("GcMc")
set GcCode=RsGc("GcCode")
While Not rsGc.EOF Response.Write "工程名稱:" & GcMc & "(工程代碼:" & GcCode & ")
" RsGc.MoveNext
Wend
新的代碼建立了對象變量的引用,所以可以使用對象變量而不是實際的變量,這意味著腳本引擎的工作減少了,因為在集合中進行索引的次數(shù)變少了。
技巧五:不要混用腳本引擎
我們知道,ASP頁面中既可以使用VBScript,也可以使用JScript。但是在同一個頁面上同時使用JScript和VBScript則是不可取的。因為服務(wù)器必須實例化并嘗試緩存兩個(而不是一個)腳本引擎,這在一定程度上增加了系統(tǒng)負擔。因此,從性能上考慮,不應(yīng)在同一頁面中混用多種腳本引擎。