




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
ASP程式安全10.1常見ASP漏洞及安全處理ASP提供強大功能的背後,還存在一些安全方面的漏洞和不足。本章主要介紹ASP常見漏洞以及解決途徑和方法。在Windows2000系統(tǒng)的IIS5.0版本以及WindowsServer2003的IIS6.0版本中,有些ASP漏洞已經(jīng)得到了較好的解決。介紹ASP中存在的安全隱患在一定程度上有助於提高對安全問題的重視。10.1.1
Access資料庫下載漏洞ASP結(jié)合後臺access資料庫開發(fā)應(yīng)用系統(tǒng)在一些中小型網(wǎng)站中得到了廣泛採用。這種方式的主要安全隱患是,一旦訪問者知道Access資料庫的路徑和文件名,整個資料庫就存在被完全下載的可能。在此,以第8章txl.mdb資料庫為例進行解釋說明.該access資料庫存放在伺服器d:\aspcode\8\db目錄下,若使用者知道該資料庫檔存放路徑和文件名,可直接在流覽器的地址欄中輸入該路徑以及檔案名安全處理
顯然,造成這種危險的主要原因是由於知道了資料庫檔路徑和文件名。許多攻擊者往往根據(jù)站點或系統(tǒng)的主題對數(shù)據(jù)庫檔進行一定的猜測。因此,如果將資料庫檔另存於一個不太有實際意義的目錄中,或者將資料庫檔案名取得不太規(guī)則可大大提高系統(tǒng)在這方面的安全性。 此外,目前比較流行的做法就是將資料庫檔擴展名改為.asp,這樣,即便知道該資料庫檔,在客戶端流覽器中下載時也將出現(xiàn)亂碼10.1.2
FileSystemObject組件漏洞ASP檔通過FileSystemObject組件實現(xiàn)對檔的操作。這些操作主要包括對文本檔的讀寫、目錄的改名、刪除和移動等。在IIS6.0及以前各版本中,這種許可權(quán)一旦被用戶利用,伺服器上的檔就面臨著一定的危險。利用修改系統(tǒng)註冊表內(nèi)容的方法⑴首先利用開始菜單的運行框中輸入:regedit進入註冊表;⑵查找註冊表中HKEY_CLASSES_ROOT\Scripting.FileSystemObject的鍵值,並將其改為HKEY_CLASSES_ROOT\Scripting.FileSystemObjectABC。如此,在ASP中引用該組件時就必須改為:Setfso=CreateObject("Scripting.FileSystemObjectABC")如此一來,對於一般的攻擊者來說,就很難準確知道該伺服器中的FileSystemObject組件名,因此也就達到了限制別人使用該組件的目的。10.1.3腳本漏洞在一個留言程式的輸入框中,如果用戶輸入的不是普通的文本資訊,而是帶有HTML標記或VBScript等腳本資訊,結(jié)果會怎樣呢?試看在一個普通留言框中輸入如下內(nèi)容:<fontcolor=bluesize=7>我的留言!</font>
如果站點的留言板程式?jīng)]有對HTML或VBScript等腳本採取一定的避免措施,那麼,在流覽器輸出時,留言資訊的內(nèi)容字體將根據(jù)用戶的輸入而變成綠色,同時字體的大小也會改變。顯然,這些輸出結(jié)果已經(jīng)隨著用戶的輸入而改變。如果用戶在留言框中輸入的是一段惡意代碼的話,譬如:<ahref="http://123.net"onMouseover="while(1)i=i+1">重要提示</a>
在上述語句中,"起到的是雙引號的作用;如果在該語句中直接輸入雙引號,將得不到需要的結(jié)果。顯然,留言顯示的是一個超級鏈接,當其他用戶看到這個鏈接並單擊滑鼠後,將觸發(fā)onMouseover事件,該事件為死迴圈,從而導(dǎo)致頁面出現(xiàn)異常10.1.4密碼驗證漏洞常用站點在用戶管理中都將用戶名和密碼放在資料庫的有關(guān)表中,而在登錄程式中使用SQL語句來查詢是否為合法用戶,如代碼10-3所示。該代碼常常被作為檢驗系統(tǒng)合法用戶的頁面,登錄頁面利用session將用戶名和密碼傳遞到該頁面,再利用SQL語句在資料庫中進行查找是否有該用戶並密碼,找到的話結(jié)束該頁面,否則重新轉(zhuǎn)到登錄頁面。在一些實際的應(yīng)用系統(tǒng)中,往往將用於判斷合法用戶的頁面包含在其他頁面中,若該頁面為名為IsAdmin.asp,則只要在其他頁面的開始部分加入<!--#includefile=”IsAdmin.asp”-->即可。若不是合法用戶,則轉(zhuǎn)到登錄頁面;否則結(jié)束該頁面,執(zhí)行本頁面的其他內(nèi)容安全處理通過修改單引號的使用可以防止該漏洞。解決該漏洞的方法是修改單引號的使用,把SQL語句中可能存在的單引號轉(zhuǎn)換成雙單引號連用的形式,這樣就避免了因單引號前後匹配造成的攻擊者繞過用戶名和密碼驗證的漏洞。主要代碼如下:<% username="'"&replace(username,"'","''")sql="select*fromuserwhereusername="&username%>10.2ASP安全配置ASP系統(tǒng)連接SQLServer資料庫ASP+SQLServer資料庫在一些實際應(yīng)用系統(tǒng)中被廣泛採用,由於SQLServer資料庫默認的管理員帳戶名sa,每個使用SQL的用戶都知道存在sa帳戶。因此,在SQLServer中需要刪除sa帳戶並創(chuàng)建具有安全可靠密碼的其他SQL管理帳戶。ASP系統(tǒng)連接Access資料庫前面已經(jīng)介紹過在使用Access作為後臺資料庫時,存在著整個資料庫被下載的威脅。解決的方法是為該資料庫和目錄取一個比較複雜的非常規(guī)名字,並將其放置虛擬目錄下的多層目錄中。在實際應(yīng)用中,仍然可以在許多環(huán)節(jié)進行安全方面的設(shè)置。 進行Access資料庫連接時,比較直接的方法是使用如下代碼:conn.open"driver={MicrosoftAccessDriver(*.mdb)};dbq=Server.MapPath("padje12.mdb")"顯然,上述代碼的危險在於一旦該根源程式被獲取,那資料庫就一覽無餘。因此,使用Access資料庫時,最好使用本書第8章所介紹的方法,即在ODBC裏面設(shè)置好數(shù)據(jù)源,而在以後的連接代碼中就可這樣寫:conn.open"txl"在程式中記錄訪問用戶資訊記錄訪問用戶資訊對網(wǎng)站安全的追蹤有非常大的幫助,用戶資訊中包含了用戶使用的流覽器、停留時間以及IP地址。記錄IP地址可以查找訪問用戶的具體地點。當然,如果用戶通過代理來訪問網(wǎng)站,就只能記錄代理伺服器的IP地址,而不是真實的訪問機器的地址。使用最新的ASP漏洞掃描器可以掃描IIS漏洞的掃描器有許多,比較有名的有ISS,CIS和GNIT等。一般的掃描器通過掃描伺服器端口,產(chǎn)生一個HTML檔,該檔中說明了伺服器中的一些資訊和漏洞,包括用戶名和組的相關(guān)資訊,開放的服務(wù)和Web掃描的漏洞。10.2.2伺服器安全配置將應(yīng)用程式主目錄置入NTFS格式分區(qū)NTFS是微軟基於WindowsNT內(nèi)核的一種檔系統(tǒng)。相對於傳統(tǒng)的FAT和FAT32檔系統(tǒng),NTFS通過特有的許可權(quán)控制提供檔和文件夾級的安全訪問機制。因此,可以定義一個或一組用戶訪問檔和目錄的不同級別。如一個Web應(yīng)用程式所有者就需要有查看、更改和刪除應(yīng)用程式的許可權(quán);而訪問應(yīng)用程式的用戶只應(yīng)具有“只讀”許可權(quán),以便將其限制為只能查看而不能更改應(yīng)用程式。10.2.2伺服器安全配置及時安裝Windows系統(tǒng)最新的補丁所有的軟體系統(tǒng)都存有缺陷。為了修復(fù)發(fā)現(xiàn)的錯誤和漏洞,微軟公司會經(jīng)常公佈軟體的最新補丁,用戶可以經(jīng)常進入微軟官方網(wǎng)站瞭解和下載最新的漏洞補丁程式。這裏需要強調(diào)的是對補丁程式的安裝應(yīng)該做到及時。因為發(fā)現(xiàn)錯誤和漏洞並進行修復(fù)往往是在現(xiàn)有系統(tǒng)遭受攻擊後發(fā)生的。否則,系統(tǒng)就隨時有被入侵的可能。10.2.2伺服器安全配置關(guān)閉不需要的服務(wù)如果著重考慮安全性,對一個平臺的所有抽象層進行濃縮,那麼,操作系統(tǒng)、進程和網(wǎng)路端口就是安全配置的重點。操作系統(tǒng)為進程提供了軟硬體的介面,而進程可打開到網(wǎng)路的端口。10.2.2伺服器安全配置IIS中的虛擬目錄IIS是ASP程式的開發(fā)和管理平臺,因此,它的安全設(shè)置十分重要。IIS支持虛擬目錄,建立虛擬目錄對web站點的安全性是非常重要。首先,虛擬目錄隱藏了有關(guān)站點目錄結(jié)構(gòu)的資訊;而當web頁面被放置在虛擬目錄中時,通過對目錄設(shè)置不同的屬性達到對web頁面的管理,如可將靜態(tài)的HTML頁面放置在一個子目錄中並將屬性設(shè)置為“讀”,而將ASP頁面放在另一個子目錄中並將屬性設(shè)為“執(zhí)行”。顯然,這樣進一步提高web站點的安全性。10.2.2伺服器安全配置設(shè)置好系統(tǒng)帳戶和安全策略WindowsNT系統(tǒng)在缺省安裝後,自動建立了Administrator和guest帳戶,許多攻擊者就是通過破解上述帳戶的密碼進入系統(tǒng)。因此,為安全起見,往往將Administrator系統(tǒng)帳戶重命名,並保證一定的密碼長度和複雜度。對於guest帳戶來說,為提高安全性,往往將其設(shè)定為禁用狀態(tài)。小結(jié)本章針對常見ASP漏洞,介紹了一些安全處理的方法;同時,對IIS安全配置等方面作了一定的闡述。通過對本章內(nèi)容的學習,使讀者對ASP在安全方面的一些不足有所瞭解,並且,能夠在實踐的基礎(chǔ)上,靈活運用,進一步做好安全防範。
ASP基礎(chǔ)及運行平臺1.1 ASP技術(shù)概述ASP即ActiveServerPages,是Microsoft公司開發(fā)的伺服器端腳本環(huán)境,可用來創(chuàng)建動態(tài)互動式網(wǎng)頁並由此建立強大的Web應(yīng)用程式。當伺服器收到對ASP檔的請求時,它會處理包含在用於發(fā)送給流覽器的HTML網(wǎng)頁檔中的伺服器端腳本代碼。除伺服器端腳本代碼外,ASP檔也可以包含文本、HTML(包括相關(guān)的客戶端腳本)和COM組件調(diào)用,其中這些組件可執(zhí)行不同任務(wù),如連接到資料庫或處理商業(yè)規(guī)則。1.1.1 Web程式設(shè)計基礎(chǔ)1.Web工作方式WWW(WorldWideWeb)即萬維網(wǎng),是在Internet上運行的覆蓋全球的多媒體資訊系統(tǒng)。Web中的資訊保存在Web伺服器中,用戶使用流覽器通過網(wǎng)路在Web伺服器中得到有關(guān)的資訊。因此,流覽器的主要功能是解釋並顯示由Web伺服器傳送的、由HTML寫成的文檔。通常情況下,這些文檔被直接稱為Web頁面。Web頁面的基本要素有文字、圖形和超級鏈接。在流覽器中,通過單擊超級鏈接標記,用戶就能實現(xiàn)從一個頁面轉(zhuǎn)到另一個頁面中;而用戶在頁面中輸入的文本、聲音等各種資訊同樣可通過流覽器傳遞到Web伺服器中,從而實現(xiàn)系統(tǒng)的交互。2.超文本標記語言HTMLHTML是一種用來製作超文本文檔的簡單標記語言。用HTML編寫的超文本文檔稱為HTML文檔,也就是通常所說的那些帶有.html或.htm擴展名的網(wǎng)頁。事實上,HTML通過各種標記來標識文檔的結(jié)構(gòu)以及標識超級鏈接的資訊。當用戶通過流覽器打開這些頁面時,流覽器就能夠解釋這些標記並顯示它的執(zhí)行效果。3.動態(tài)伺服器頁面ASPASP實際上是在標準的HTML網(wǎng)頁上擴展了一些附加的特徵。它們就是那些尾碼名為.asp的網(wǎng)頁。通常一個.asp網(wǎng)頁是由文本、HTML和腳本命令組成。使用它可以創(chuàng)建和運行動態(tài)、交互的Web伺服器應(yīng)用程式。1.1.2 ASP主要特點由於ASP簡單易用,借助Microsoft的COM+技術(shù)可以實現(xiàn)在C/S模式上實現(xiàn)的大部分功能。由於它只能在微軟操作系統(tǒng)平臺上,因此,無法實現(xiàn)跨平臺的應(yīng)用。其主要特點是:⑴無需編譯,在伺服器端執(zhí)行;⑵主要使用VBScript、JavaScript等腳本語言進行編輯設(shè)計;⑶ASP腳本不會被傳到客戶端流覽器中,可以避免源代碼洩漏,提高程式安全性;⑷ActiveX伺服器組件具有較強的擴充性,可以使用其他語言如VB、Java、VC++等編寫的ActiveX伺服器組件。⑸ASP程式的執(zhí)行與流覽器版本無關(guān)。ASP程式是在伺服器端被解釋成相應(yīng)的HTML頁面,只要流覽器支持該HTML就行。1.2 IIS6.0安裝及設(shè)置微軟WindowsServer2003家族的Internet資訊服務(wù)(InternetInformationService,IIS)在互聯(lián)網(wǎng)及企業(yè)內(nèi)部網(wǎng)路上提供了集成、可靠、可伸縮、安全和可管理的Web伺服器功能。IIS是用於為動態(tài)網(wǎng)路應(yīng)用程式創(chuàng)建強大的通信平臺的工具。在以WindowsServer2003為伺服器平臺的組織可使用IIS6.0來管理和控制Internet或其Intranet上的網(wǎng)頁。IIS6.0支持用於開發(fā)、實現(xiàn)和管理Web應(yīng)用程式的最新Web標準(如MicrosoftASP.NET、XML以及簡單對象訪問協(xié)議(SOAP)。IIS6.0包括一些面向組織、IT專家和Web管理員的新功能,它們旨在為單臺IIS伺服器或多臺伺服器上可能擁有的數(shù)千個網(wǎng)站實現(xiàn)性能、可靠性和安全性目標。1.2.1 IIS6.0安裝與Windows2000Server稍有不同的是,默認情況下,微軟沒有直接將IIS6.0安裝到WindowsServer2003系統(tǒng)中,主要原因是為了進一步防止惡意用戶和攻擊者。1.2.2 IIS6.0設(shè)置IIS安裝完成後只能為靜態(tài)內(nèi)容提供服務(wù),對於動態(tài)頁面來說,流覽器會出現(xiàn)一個404錯誤,提示“檔或目錄未找到”,主要原因是系統(tǒng)在安裝之初是在高度安全和“鎖定”的模式下運行的。默認情況下,ASP、ASP.NET、在伺服器端的包含檔、WebDAV發(fā)佈和FrontPage?ServerExtensions等功能只有在手動啟用時才能工作。通過【開始】菜單再次進入【管理您的伺服器】對話框,如圖1-4所示。注意此時出現(xiàn)的對話框和圖1-1稍有不同,該對話框多了一個應(yīng)用程式伺服器選單。用戶可以閱讀關(guān)於應(yīng)用程式伺服器的各種資訊,也可單擊【管理此應(yīng)用程式伺服器】直接打開【應(yīng)用程式伺服器】窗口,展開【Internet資訊服務(wù)(IIS)管理器】目錄樹,可以看到應(yīng)用程式池、網(wǎng)站和Web服務(wù)擴展三個子目錄,如圖1-5所示。1.2.2 IIS6.0設(shè)置1.3 編輯器幾乎所有的編輯軟體都可以直接對ASP進行處理。除了普通的文本編輯軟體外,許多軟體集成開發(fā)環(huán)境如VisualBasic、Delphi以及專業(yè)級網(wǎng)頁製作軟體如Dreamweaver、FrontPage等都提供了對ASP的支持。其中,最原始、最通用的、並且也是最難使用的編輯軟體應(yīng)該是記事本。下麵簡單介紹一些常用的編輯ASP的工具。1.3 編輯器記事本從字元編輯的角度來看,ASP腳本在記事本中就是一個文本檔,與一般文本檔不同在於其檔的擴展名不再是“.txt”,而是“.asp”。對於HTML檔的控制標記來說,都可以將它視為基本的“符號”再加上HTML檔的控制命令而已。因此,不論是HTML檔或是ASP程式代碼對於記事本而言,都屬於一般的文本檔。記事本由於佔用記憶體較少、使用簡單、執(zhí)行較快而受到許多ASP編程人員的歡迎。但由於它僅提供純文本檔的編輯功能,並沒有提供相應(yīng)HTML或ASP的標記和驗證等功能,因此,初學者再使用記事本編輯ASP腳本時,記住一些控制標記或ASP指令部分顯得十分重要。1.3 編輯器專業(yè)級網(wǎng)頁製作工具DreamweaverMXMacromedia公司的DreamweaverMX2004是建立Web站點和應(yīng)用程式的專業(yè)工具。作為一款專業(yè)的HTML編輯器,它可用於對Web站點、頁面和Web應(yīng)用程式進行設(shè)計、編碼和開發(fā)。DreamweaverMX2004提供的可視化編輯功能用於快速創(chuàng)建Web頁面而無需編寫代碼;同時,Dreamweaver還包括許多與編碼相關(guān)的工具和功能,借助這些功能可以使用伺服器語言,如ASP、ASP.NET、ColdFusion標記語言(CFML)、JSP和PHP等用於生成支持動態(tài)資料庫的Web應(yīng)用程式。1.3 編輯器微軟FrontPage2000Microsoft公司的FrontPage作為網(wǎng)頁設(shè)計工具,在功能上沒有Dreamweaver強大,但完全可以實現(xiàn)一個複雜網(wǎng)頁的設(shè)計,可以編輯ASP程式,其主要介面如圖1-13所示。使用FrontPage打開一個ASP頁面一般佔用十幾兆記憶體空間。1.3 編輯器微軟腳本編輯器微軟腳本編輯器(MicrosoftScriptEditor,MSE)用於查看和編輯HTML檔中的HTML標記,向檔中添加VBScript或Jscript腳本並對其進行調(diào)試。小結(jié)
ASP由於簡單實用受到廣泛歡迎,借助Microsoft的COM+技術(shù)幾乎可以實現(xiàn)在C/S能夠?qū)崿F(xiàn)的所有功能,主要缺點是只能運行在Windows平臺上。本章內(nèi)容主要介紹ASP技術(shù)基本概念,並根據(jù)實踐操作需要對其運行和編輯環(huán)境做了深入闡述。
ASP資料庫應(yīng)用8.1資料庫設(shè)計基礎(chǔ)資料庫是電腦軟體的重要分支,企業(yè)資訊管理系統(tǒng)、人事管理系統(tǒng)和學校成績查詢管理系統(tǒng)等都需要後臺資料庫支持。目前,很多軟體開發(fā)人員都在運用各種工具開發(fā)資料庫應(yīng)用程式,而網(wǎng)路與資料庫的結(jié)合更是資料庫應(yīng)用程式的發(fā)展趨勢。ASP在網(wǎng)路資料庫方面具有很大的優(yōu)越性。利用ASP語言可以快速開發(fā)簡單高效的網(wǎng)路資料庫程式,如留言簿、論壇以及基於網(wǎng)路的各種資訊查詢系統(tǒng)等。本章以Access為數(shù)據(jù)庫平臺,詳細講解ASP開發(fā)資料庫程式的各種方法。8.1.1資料庫系統(tǒng)概述資料庫系統(tǒng)主要由三大部分組成:資料庫管理系統(tǒng)(DBMS)、資料庫應(yīng)用程式和數(shù)據(jù)庫。其中,資料庫是指按一定結(jié)構(gòu)組織在一起的相關(guān)數(shù)據(jù)的集合;而DBMS是專門負責組織和管理數(shù)據(jù)資訊的程式,是資料庫系統(tǒng)的核心組成部分。用戶通過資料庫應(yīng)用程式能夠獲取、顯示和更新由DBMS存儲的數(shù)據(jù),通過應(yīng)用程式提供的管理介面實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的訪問。資料庫由一個或多個表組成,每個表是由若干記錄組成。記錄是資訊處理的基本單位,且每條記錄在結(jié)構(gòu)上完全相同。例如有一張保存通訊錄資訊的表,該表由編號、姓名、性別、出生日期、電話、地址、郵件地址等列構(gòu)成。8.1.2Access資料庫管理系統(tǒng)資料庫管理系統(tǒng)是幫助用戶建立和管理資料庫的軟體系統(tǒng),目前比較流行的大型資料庫管理系統(tǒng)有:SQLServer、IBMDB2、Oracle、Sybase、Informix等,而小型資料庫管理系統(tǒng)有Access、FoxPro、Pradox等。在ASP中使用較多的是Access和SQLServer資料庫管理系統(tǒng)。本書以Access桌面資料庫為主,因為Access資料庫比較簡單,在一般的小型網(wǎng)站中使用綽綽有餘,如網(wǎng)上留言簿、論壇等程式大多使用Access資料庫。而且Access資料庫可以很快的轉(zhuǎn)換成SQLServer資料庫。8.1.3建立Access資料庫Access資料庫是MicrosoftOffice辦公軟體中的一員,可以通過Office默認自動安裝。在建立資料庫檔之前,首先要進行系統(tǒng)分析,對數(shù)據(jù)庫進行合理的規(guī)劃。實際應(yīng)用中,這是最重要的一步。要深入瞭解用戶需求,也就是說要掌握用戶使用該軟體的具體要求,需要進行一定的需求分析。真正掌握用戶的需求後,才能確定資料庫中需要哪些字段來存儲數(shù)據(jù),以減少數(shù)據(jù)冗餘。資料庫中表和字段的多少,要按照實際需求來定。資料庫設(shè)計是否合理直接影響到程式開發(fā)和維護的難易程度,所以建立資料庫時一定要慎重。8.2設(shè)置數(shù)據(jù)源ASP中為方便存儲資料庫,需要通過資料庫存儲組件ADO來實現(xiàn)。在操作任何資料庫之前,首先必須連接到資料庫。ASP連接到資料庫的方法很多,其中很重要的方法是通過ODBC數(shù)據(jù)源來完成。8.2.1ODBC簡介ODBC是開放資料庫連接的英文縮寫,意為在不同的資料庫管理系統(tǒng)上存取數(shù)據(jù)。例如,有一個可使用SQL語句存取資料庫記錄的程式,此時ODBC可以讓用戶使用此程式直接存取MicrosoftAccess資料庫中的數(shù)據(jù)。為此,必須為系統(tǒng)添加稱為“驅(qū)動程式”的軟體組件,ODBC會幫助用戶添加並配置這些驅(qū)動程式。8.2.2ODBC數(shù)據(jù)源的創(chuàng)建下麵介紹如何建立ODBC的連接。由於Windows98/NT與Windows2000系統(tǒng)在操作上基本相同,因此以Windows2000操作系統(tǒng)為例,創(chuàng)建txl.mdb資料庫的ODBC數(shù)據(jù)源,步驟如下:8.2.3測試ODBC數(shù)據(jù)源前面已經(jīng)介紹了ODBC數(shù)據(jù)源的設(shè)置。接下來,以ADO對象為基礎(chǔ),使用ODBC數(shù)據(jù)源與Access資料庫檔txl.mdb進行連接,同時,使用SQL查詢語句嘗試取得txl.mdb資料庫中“Userlist”表中的字段名稱,作為ODBC數(shù)據(jù)源實際測試的驗證。8.3常用SQL語句簡介SQL是StructureQueryLanguage的縮寫,即結(jié)構(gòu)化查詢語言。在ASP資料庫操作時,處處離不開SQL。SQL不僅可以實現(xiàn)記錄的查詢、插入、修改和刪除以及數(shù)據(jù)表的建立、修改、刪除等操作,還可以實現(xiàn)其他更複雜的操作。在一般的資料庫應(yīng)用程式中,對數(shù)據(jù)的增、刪、改、查操作最為廣泛,下麵介紹一些簡單實用的SQL語句,如SELECT、INSERT、UPDATE和DELETE語句。8.3.1查詢SELECT語句基本的Select語句的格式如下:
SELECT[TOP數(shù)值]字段列表[as列名]FROM表名
[WHERE查詢條件][GROUPBY分組字段][HAVING分組條件][ORDERBY字段名[ASC|DESC]]8.3.2刪除DELETE語句DELETE語句用於刪除數(shù)據(jù)表中的記錄。格式如下:
DELETEFROM表名WHERE條件8.3.3插入INSERT語句INSERT語句的具體形式如下:
INSERTINTO
數(shù)據(jù)表名(字段名1,字段名2,…) VALUES(字段值1,字段值2,…)8.3.4 UPDATE語句UPDATE的語法如下:
UPDATE數(shù)據(jù)表名
SET字段名1=字段值1[,字段名2=字段值2,
字段名N=字段值N]WHERE更新條件8.4訪問資料庫基礎(chǔ)ASP通過ADO來訪問各種資料庫。ADO全稱為ActivexDataObjects,可以實現(xiàn)用戶與資料庫進行交互的組件。使用ADO來可以訪問MicrosoftAccess,MicrosoftSQL和Oracle資料庫中的資訊,甚至可以從MicrosoftExcel表格中讀取資訊。ADO提供了多種對象來運算元據(jù)庫,其中包括連接對象Connection、命令對象Command和記錄集對象Recordset等。ASP通過這些對象,可編寫簡單的腳本連接到與OLEDB相容的數(shù)據(jù)源,如數(shù)據(jù)庫、Excel等。OLEDB是一個系統(tǒng)級的編程介面,它提供了一套標準的COM介面,用來管理數(shù)據(jù)存儲。另外,還可以使用ADO模型訪問與開放式資料庫互聯(lián)(ODBC)相容的資料庫。8.4.1Connection對象Connection對象又稱連接對象,主要用來建立與資料庫的連接。只有建立連接後才能利用其他對象對數(shù)據(jù)庫進行各種操作。所以Connection對象是對數(shù)據(jù)庫操作的前提,在用ASP腳本運算元據(jù)庫之前,必須要利用Connection對象建立與OLEDB相容的數(shù)據(jù)源或者ODBC相容的資料庫之間的連接。8.4.2RecordSet對象Recordset對象是ADO中使用最普遍的對象,它含有從數(shù)據(jù)存儲中提取的數(shù)據(jù)集。它是一個記錄的集合,用於檢索和更新資料庫。資料庫應(yīng)用程式通常用Connection對象建立鏈接並用Recordset對象處理返回的數(shù)據(jù)。8.4.2RecordSet對象Recordset對象是擁有這些記錄的對象??梢愿?增加、更新和刪除)記錄集中的記錄,上下移動記錄,過濾記錄並只顯示部分內(nèi)容等等。Recordset對象也包含F(xiàn)ields集合,F(xiàn)ields集合中有記錄集中每一個字段(列)的Filed對象。所以,通過Recordset對象可以獲得記錄的每個字段的值。小結(jié)ADO是ActiveXDataObjects的縮寫,它是一種面向?qū)ο蟮?、與語言無關(guān)的數(shù)據(jù)訪問介面。ASP資料庫訪問可以通過ADO實現(xiàn)。SQL是結(jié)構(gòu)化查詢語言,專門用於查詢和操作關(guān)係型資料庫。1986年被國際標準化組織規(guī)定為國際標準,許多資料庫廠商如Oracle、IBMDB2、MicrosoftSQLServer、ACCESS都提供了對SQL的支持。本章主要介紹常用SQL的基本語法以及ADO訪問Access資料庫的基本方法;同時對Connection、Recordset、Command等對象作了一定闡述。通過大量實例深入介紹了資料庫增、刪、改、查等操作的基本技巧和記錄內(nèi)容的分頁技術(shù)。
ASP中的會話6.1 Session對象本章討論ASP中另兩個對象,就是Application和Session對象。要在同一個ASP程式的不同頁面之間傳遞數(shù)據(jù),最直接的方法可以採用表單提交的方式或者採用查詢字串(QueryString)的方法來實現(xiàn),當然也可以採用Cookies方法實現(xiàn)把數(shù)據(jù)從一個頁面?zhèn)鬟f到另外一個頁面。使用Application和Session對象能夠輕易完成這些功能。把客戶數(shù)據(jù)在各頁面之間進行傳遞,這就是會話。6.1.1 Session簡介使用Session對象可實現(xiàn)保存特定用戶的資訊。訪問者從訪問某個特定主頁到離開為止的那段時間,每個訪問者都會單獨獲得一個Session對象,也就是用戶在同一個網(wǎng)站裏從一個頁面跳轉(zhuǎn)到另外一個頁面時,該Session資訊仍然存在。這裏的同一個網(wǎng)站指的是虛擬目錄。用戶在同一個網(wǎng)站的任何一個頁面都可以存取Session對象的有關(guān)資訊。6.1.1 Session簡介Session對象利用Cookie進行資訊處理。當用戶提出請求後,服務(wù)端就會在用戶流覽器上創(chuàng)建一個Cookie對象。當某個Session結(jié)束時,就意味著該Cookie已經(jīng)過期。為這個用戶創(chuàng)建的Cookie名稱是SessionID,該Cookie唯一目的是為每個用戶提供不同的身份認證。在一個應(yīng)用程式中,當客戶端啟動一個Session時,ASP會自動生成一個長整型SessionID,並把這個SessionID傳遞給客戶端流覽器。流覽器會把這個SessionID存放在Cookies內(nèi),即暫存於客戶端硬碟中。而當用戶轉(zhuǎn)到同一個應(yīng)用程式的其他頁面再次請求該Session對象時,ASP就會查找保存該SessionID的Cookies,並返回對應(yīng)的Session資訊。最後,當用戶離開網(wǎng)站時,也就是當這個Session結(jié)束時,該Cookies資訊會從硬碟上自動刪除。6.1.2 利用Session對象存儲資訊Session對象使用非常簡單,它的語法為:Session("Session名稱")=變數(shù)值如有以下代碼:<%Session("UserName")="李逵"'保存字串資訊到Session變數(shù)Session("UserName")中Session("UserName")=Name '保存Name變數(shù)的值保存到Session變數(shù)中Session("Age")=25 '把數(shù)字資訊保存到Session變數(shù)中Response.Write(Session("UserName"))'輸出Session變數(shù)%>6.1.3 Session的內(nèi)容集合前面介紹用Session("Session名稱")來存取Session變數(shù),實際上幾乎所有的Session存儲的內(nèi)容均存在Contents集合中。例如,下麵兩個語句是等效的:<%Session("MyVar")="Value"%><%Session.Contents("MyVar")="Value"%>正如前面對集合的討論中提到,可利用Count屬性來檢查集合的數(shù)量,同樣也可利用FOREACH,F(xiàn)OR...NEXT迴圈來顯示Contents所有內(nèi)容6.1.4 利用Session存儲數(shù)組資訊Session對象存儲數(shù)組的方法跟前面講過的方法基本相同,要注意的是,Session對象往往被當作一個集合使用。當Session在存儲數(shù)組時,把數(shù)組當成一個整體來看待,即只能對數(shù)組整體進行存取,不能直接對某個數(shù)組元素進行修改6.1.5 Session對象的有效期用Timeout屬性控制Session的有效期 當用戶離開當前站點而去訪問另一個站點,或者關(guān)閉所有該站點的網(wǎng)頁時,Session會話自動結(jié)束。若用戶一直打開某個網(wǎng)頁而很長時間沒有提出請求或者刷新該網(wǎng)頁,那麼這個Session會話是否一直存在呢?是不是直到關(guān)閉流覽器或者轉(zhuǎn)向其他站點時才結(jié)束呢?6.1.5 Session對象的有效期用Abandon方法強行結(jié)束Session會話 該方法釋放Web伺服器中保存有關(guān)用戶會話資訊的存儲空間。但是該方法並不影響其他用戶的會話資訊。如果不明確地調(diào)用Abandon方法,Web伺服器會一直保存所有會話資訊,直到會話結(jié)束。語法如下:
Session.Abandon
該語句可刪除所有Session變數(shù),且只有當包含該語句的網(wǎng)頁執(zhí)行結(jié)束後才能成功地刪除Session資訊。6.1.6 Session事件Session對象共有兩個事件(Event)。分別是Session_OnStart事件和Session_OnEnd事件。其中,Session_OnStart事件是當還沒有在伺服器上實例化會話的用戶向伺服器請求任意一個頁面時(Session開始時)被觸發(fā);而Session_OnEnd事件是在用戶會話結(jié)束時或腳本調(diào)用Session對象的Abandon方法時被觸發(fā)。6.2 Application對象Session對象是用來記載特定用戶的資訊,它的內(nèi)容因人而異,每個訪問用戶都有一個獨立的Session來保存自己的資訊,不可共用,只能被用戶自己訪問;Application對象則好比是一個公共場所,它記載的資訊是可以同時被大家共用,也就說Application對象是公用的。6.2.2 使用Application對象存儲資訊Application對象存儲資訊的方法跟Sesssion對象差不多,它的語法如下:Application("Application名稱")=變數(shù)值或者:Application.Contents("Application名稱")=變數(shù)值這兩種賦值方法是等價的,在使用時往往省略Contents。Contents集合的運用跟Session對象中的Contents相同,這裏不再詳細闡述。6.2.3 Application事件 Application對象中的Application_OnStart事件在首次創(chuàng)建新會話之前發(fā)生。伺服器啟動並允許對應(yīng)用程式所包含的檔進行請求時觸發(fā)Application_OnStart事件。 Application_OnEnd事件則在應(yīng)用程式退出時在Session_OnEnd事件之後發(fā)生。兩個事件的處理過程必須寫在Global.asa檔中。小結(jié)本章主要介紹Session對象與Application對象常用屬性和方法,利用它們可實現(xiàn)不同網(wǎng)頁間數(shù)據(jù)的相互傳遞。因此,也被稱作網(wǎng)頁間的會話。其中,Session對象主要傳遞單個會話用戶的私有資訊;而Application對象則存儲了所有用戶的共用資訊。對本章提供的諸如聊天室等具體實例,需要進一步地熟悉和掌握。
HTML基礎(chǔ)2.1 HTML語言概述
HTML(HyperTextMarkupLanguage)即超文本標記語言,是學習ASP的基礎(chǔ)。HTML由一些特定符號和語法組成,並按照一定格式標記文本和圖像等元素。客戶端流覽器根據(jù)HTML標記解釋並顯示其內(nèi)容。2.1.1 HTML標記與組件HTML標記
HTML控制數(shù)據(jù)顯示格式的方式是通過一組前後呼應(yīng)的HTML標記來實現(xiàn)。為控制數(shù)據(jù)顯示格式可將一組特定的HTML標記包含在需要控制的對象中間。每一組HTML標記以“<標記名稱>”為開始,以“</標記名稱>”作為結(jié)尾標記。有關(guān)HTML標記控制對象顯示的語法格式如下:
<標記名稱[屬性1=屬性值1屬性2=屬性值2…]>
欲控制對象
</標記名稱>2.1.1 HTML標記與組件組件的概念 用一組HTML標記將需要控制對象包含在中間時,這個需要控制對象與包含文字的HTML標記將被稱之為一個組件。大部分的HTML標記還可根據(jù)實際情況對需要控制對象的一些屬性進行設(shè)置。2.1.1 HTML標記與組件HTML層的概念 在HTML語法中,每個由HTML標記與文字所形成的組件還可以包含另一個組件,整個HTML檔就像是一個大組件,包含了許多小組件,因此就形成了層的概念。 所有HTML檔最外層的組件由<HTML>標記建立。在<HTML>標記所建構(gòu)的組件中,還包含兩個主要的子組件,這兩個子組件由<HEAD>與<BODY>標記建立。其中<HEAD>標記建立的組件內(nèi)容為檔標題,而<BODY>標記建立的組件內(nèi)容為檔內(nèi)容。2.1.2 HTML開發(fā)環(huán)境 HTML檔其實是一個擴展名為.htm或.html的純文本檔。因此,所有文字編輯軟體都可以用來撰寫HTML檔,如:Windows系統(tǒng)的記事本Notepad、Word等等。
WWW的日益盛行使得在Windows平臺下出現(xiàn)了許多可視化的網(wǎng)頁開發(fā)工具,如:FrontPage、Dreamweaver等。這些網(wǎng)頁開發(fā)軟體提供了進行網(wǎng)頁設(shè)計的平臺和環(huán)境。許多並不十分熟悉HTML語法的網(wǎng)頁設(shè)計者通過這些專業(yè)級的網(wǎng)頁開發(fā)環(huán)境往往可以設(shè)計出功能強大的頁面。2.2 HTML網(wǎng)頁格式<HTML>標記 一個HTML檔,事實上是一個由<HTML>標記所建立的組件,所有檔的內(nèi)容都應(yīng)該被包含在此標記中。而在這個組件中,整個檔將被區(qū)分為兩個部分,一是由<HEAD>標記所建立的檔標題,另一個則是由<BODY>標記所建立的檔主體。<HEAD>標記由<HEAD>標記所定義的組件中,並不放網(wǎng)頁的任何內(nèi)容,而是放置有關(guān)這份HTML檔的資訊,例如:檔的標題、編碼方式、URL等等。這些資訊大部分是提供索引、辨認或其他應(yīng)用的使用。<TITLE>標記
<TITLE>標記使用於<HEAD>標記中,用於標識此HTML檔的標題名稱。而被標識的標題名稱,將顯示在流覽器的標題欄中。<BODY>標記 由<BODY>標記所建立的組件,為該HTML檔的內(nèi)容主體。此HTML檔顯示的所有檔內(nèi)容都將放在這個組件中,此標記屬性的說明請參考2.3.1節(jié)的說明。而在這個組件中,可以利用各種HTML標記控制網(wǎng)頁顯示內(nèi)容的格式、編排與效果。關(guān)於各種應(yīng)用於控制HTML檔格式的標記說明,請參考以下章節(jié)的說明。2.2.3 檔主體標記
定義於<BODY>標記內(nèi)的內(nèi)容就是HTML檔的主體,也就是網(wǎng)頁的主要內(nèi)容,這些內(nèi)容依照各種HTML標記的控制,呈現(xiàn)在流覽器的視窗中。而設(shè)定於<BODY>標記內(nèi)的屬性,可用於控制整個頁面的顯示方式。2.2.3 檔主體標記Bgcolor屬性
Bgcolor屬性主要控制檔的背景顏色,語法為:
bgcolor=“顏色”顏色可以用兩種方法表示,可以直接指定顏色的英文名稱,常用的基本顏色名稱如表2-1所示。另外,也可以利用16進位數(shù)值的方式指定顏色,其語法如下:
#RRGGBBRR代表紅色,GG代表綠色,BB代表藍色,以00到FF的值表示三種顏色成分的多少,以指定出這三種原色以多少成分組成新顏色。如下面的網(wǎng)頁背景為綠色:
<bodybgcolor=”#00FF00”>2.3 文字及表格處理標題標記<Hn></Hn> <Hn></Hn>標記用於標識網(wǎng)頁中的標題文字,被標記的文字將以粗體的方式顯示在網(wǎng)頁中。其語法為:
<Hn>標題文字</Hn>
其中n的範圍為1到6,因此共有6個層次的標題。2.3 文字及表格處理Align屬性 在<Hn></Hn>標記中較為常用的屬性為align,該屬性用於控制標題的對齊方式,其語法如下:
align=left或center或rignt
以上三個設(shè)定值將依次把標題文字的水準對齊方式設(shè)定為靠左對齊、置中對齊以及靠右對齊。2.3 文字及表格處理段落標記<P></P>
利用<P></P>標記所標識的文字,代表為同一個段落的文字。在流覽器中,不同段落文字間將會以一行空白加以間隔,以便區(qū)別出文字的不同段落。語法如下:
<P>文字</P>
在<P>標記中較常用的屬性為align屬性,通過此屬性可以控制段落的對齊方式。其語法如下:
align=left或center或right
以上三個設(shè)定值將依次把段落文字的水準對齊方式設(shè)為靠左對齊、置中對齊以及靠右對齊。2.3 文字及表格處理換行標記<BR>
換行標記是一個沒有結(jié)尾標記的標記,HTML檔中任何位置只要使用了<BR>標記,當檔顯示於流覽器中時,該位置之後的文字將顯示於下一行。 注意,在一般的文本檔中,只要按下鍵盤上的Enter鍵便會產(chǎn)生一個換行符,是文本檔中的文字分行顯示。但是在HTML檔中,由Enter鍵所產(chǎn)生的換行符流覽器並不會視為換行符。因此,若需要將某位置之後的文字顯示於下一行時,必須使用<BR>標記。當然利用<P>標記也可以達到分行顯示數(shù)據(jù)的效果,但兩個段落間將以一行空白做為間隔。2.3 文字及表格處理水準分隔線<HR> <HR>標記將會在網(wǎng)頁上畫出一條橫跨網(wǎng)頁的水準分隔線,通??梢杂渺斗指畈煌奈淖侄温洹O曼I說明一些常用於控制<HR>標記所建立水準分隔線樣式的屬性。⑴size屬性 該屬性設(shè)置水平線的粗細,以像素(pixel)為單位表示,將建立粗細為10個pixel的水準分隔線的語法為:<HRsize=10>⑵width屬性 該屬性設(shè)置水平線的寬度,可以用像素(pixel)為單位表示,也可以使用螢?zāi)坏陌俜直缺硎尽O曼I的語句將建立寬度為螢?zāi)婚L度50%的水準分隔線:<HRwidth=50%>⑶align屬性 該屬性控制水準分隔線的對齊方式,有置中、靠左、靠右三種方式。語法如下:
align=center或left或right⑷color屬性 該屬性設(shè)置線條的顏色,顏色可以用英文名稱或是16進位數(shù)值設(shè)定,有關(guān)顏色值的設(shè)定請參考2-2-3節(jié)中有關(guān)bgcolor屬性設(shè)定的說明。語法為:color=顏色值⑸noshade屬性 該屬性設(shè)置水平線不顯示3D陰影。2.3.2 文字格式標記字型標記<font></font>
字型標記通常用於控制文字的字型、大小與顏色。控制的方式是利用屬性設(shè)定來完成,下麵介紹各屬性的使用方式,語法如下:
<font屬性1=值1屬性2=值2……>需要控制的文字</font>⑴face屬性該屬性用於控制文字使用字型的屬性,語法為:
face=“字型名稱” 如果使用者的系統(tǒng)中並不存在所指定的字型名稱,將使用預(yù)設(shè)的字型。⑵size屬性該屬性用於控制文字大小的屬性,語法為:
size=字體等級 在IE中,字體的等級共有7級,7為最大的字體。⑶color屬性該屬性用於設(shè)定文字的顏色,語法為:
color=“顏色” 顏色的設(shè)定可運用英文名稱,或是16進位數(shù)值。有關(guān)顏色值的設(shè)定請參考2.2.3節(jié)中有關(guān)bgcolor屬性的說明。2.3.2 文字格式標記特定文字樣式標記
HTML中有一些標記可以設(shè)定以特別的樣式顯示文字。每一種流覽器對此類標記的顯示可能會有些不同。下麵將列出較為常用特定文字樣式的標記。2.3.3 表格的建立建立表格的四種標記 在網(wǎng)頁中,表格的運用是非常重要的技巧。在HTML語法中,表格的建立主要運用<TABLE>、<TH>、<TR>、<TD>四個標記完成。下麵是這四個標記的說明:⑴<TABLE></TABLE>標記該標記標識表格組件。一個表格組件,由數(shù)個列、單元格與標題格子組件組成。⑵<TR></TR>標記該標記定義表格的一列,通常包含數(shù)組由<TD>或<TH>所定義的單元格。⑶<TD></TD>標記該標記定義表格的單元格。⑷<TH></TH>標記該標記定義表格的標題單元格,此單元格中的文字將以粗體的方式顯示。在一個基本的表格組件中,必須包含一組<TABLE>標記、一組<TR>標記與一組<TD>標記。語法如下:<TABLE><TR><TD></TD></TR></TABLE>上述語法將建立只有一個單元格的表格。2.3.3 表格的建立<TABLE>標記的屬性 下麵將說明一些<TABLE>標記常用的屬性,這些屬性將用於控制整個表格組件的格式。⑴Border屬性用於控制表格框線的厚度。語法如下:
Border=數(shù)值 數(shù)值的設(shè)定值為一整數(shù),使用的單位為像素(pixel)。⑵cellspacing屬性用於控制表格框線到表格邊框的距離,也就是框線的寬度。
cellspacing=數(shù)值 數(shù)值的設(shè)定值為一整數(shù),使用的單位為像素(pixel)。⑶cellpadding屬性用於控制存儲單元內(nèi)文字的邊緣到單元格邊框的距離。
cellpadding=數(shù)值 數(shù)值的設(shè)定為一整數(shù),使用的單位為像素(pixel)。2.4 其他常用標記在介紹其他HTML標記之前,先簡單介紹一下相對路徑與絕對路徑的概念,在接下來的小節(jié)中,需要運用這些概念來引用存在於同一個Web伺服器中的檔或網(wǎng)頁。⑴相對路徑以引用檔的網(wǎng)頁所在位置為參考基礎(chǔ)而建立的目錄路徑。因此,當不同網(wǎng)頁引用同一個檔時,所使用的路徑都不相同,故稱之為相對。⑵絕對路徑以Web站點根目錄為參考基礎(chǔ)的目錄路徑。“絕對”意指當所有網(wǎng)頁應(yīng)用同一個檔時,所使用的路徑都是一樣的。2.4.2超級鏈接的標記<A>與</A>HTML檔中最重要的應(yīng)用之一就是超級鏈接,在網(wǎng)頁上使用超級鏈接,可提供使用者鏈接至網(wǎng)路上其他網(wǎng)頁的功能。當使用者單擊網(wǎng)頁中的超級鏈接後,流覽器便會流覽超級鏈接位置的網(wǎng)頁。建立超級鏈接所使用的標記為<A></A>,其語法為:<AHref=“鏈接位置”>超級鏈接名稱</A>語法中部分說明如下:
超級鏈接名稱該字串以明文形式顯示在網(wǎng)頁中。除了可以使用字串外,在<A></A>標記中,也可使用位圖文件或其他圖形檔,此時,該圖文件即代表超鏈接。當使用者將滑鼠指針移到代表超鏈接的文字或圖文件上時,游標形態(tài)變成手狀,表示使用者可單擊該鏈接。
鏈接位置用於指定href屬性,用來放置超鏈接的目標,可使用URL指定。URL的格式由使用的通信協(xié)議、鏈接地址與檔位置所組成。語法如下:通信協(xié)議://鏈接地址/檔位置…/檔案名稱2.4.3圖文件加載標記<IMG>圖文件加載標記,用於將圖文件加載HTML檔中顯示。使用此標記加載GIF、JPG等格式的圖片檔。利用<IMG>標記加載圖文件的最基本語法如下:<ingsrc=“圖文件存儲位置與名稱”>5其中src屬性為<IMG>標記的必要屬性,用於指定需要加載圖文件的儲存位置與名稱。而待加載圖文件的位置可以是在同一伺服器中的檔或是位於網(wǎng)路上的其他伺服器。若是同一主機內(nèi)的檔,可運用相對路徑指出圖文件的位置。下麵的語句將加載位於上一層目錄中名為mark.gif的圖文件。<imgsrc=“‥/mark.gif”>若是從網(wǎng)路上其他伺服器加載,則設(shè)定src屬性時,必須使用URL格式,下麵的語句將從0這個伺服器的根目錄下加載名稱為mark.gif的圖文件。<imgsrc=”0/mard.gif”>2.4.4批註標記<!>當需要在HTML檔中說明HTML語法的意義時,可以使用<!---->標記來定義這些批註文字。語法為<!--批註文字-->使用者在流覽網(wǎng)頁時,這些批註文字將不會出現(xiàn)在流覽器中。小結(jié)
HTML是在SGML定義下的一個描述性語言,它不是C++或Java之類的程式設(shè)計語言,而僅僅是一種標識語言。只要明白各種標記的用法便基本上掌握HTML;同時,HTML的格式簡單,主要由文字及標記組合而成。在編輯環(huán)境方面,任何文字編輯器都可以使用,只要能將檔另存成ASCII純文字格式即可,當然使用專業(yè)的網(wǎng)頁編輯軟體更能起到事半功倍的作用。
Response對象第4章Response對象WEB應(yīng)用程式在處理ASP腳本時,任何沒有包含在ASP腳本定界符或者<SCRIPT>標記中的內(nèi)容都將被直接返回給流覽器。如果要用ASP腳本來顯示流覽器輸出內(nèi)容,則需要通過Response對象來實現(xiàn)。Response對象主要用於控制和管理發(fā)送到流覽器上的數(shù)據(jù)。Response本身就是“回應(yīng)”的意思,也就是把數(shù)據(jù)下載給流覽器。前面已經(jīng)使用過Response對象的Write方法輸出數(shù)據(jù)到流覽器,如:Response.Write“歡迎光臨本網(wǎng)站!”4.1 使用Write方法Write方法是Response對象中使用率最高的一個方法,它可以直接向HTTP回應(yīng)主題寫入資訊,也就是將資訊從服務(wù)端直接發(fā)送到客戶端流覽器中。語法如下:Response.Write(變數(shù)或字串)4.1.2 Write方法和HTML標記相互嵌套編寫ASP程式時,ASP腳本語句和HTML語言可以相互嵌套。通常也可以把HTML語言用Response.Write方法輸出。4.2 用Redirect方法實現(xiàn)網(wǎng)頁間跳轉(zhuǎn)Response對象除了提供Write方法,可以輸出數(shù)據(jù)到流覽器之外,也可以實現(xiàn)網(wǎng)頁的跳轉(zhuǎn),使用的方法如下所示:Response.Redirect目標網(wǎng)頁網(wǎng)址在網(wǎng)頁中,也可以通過超鏈接引導(dǎo)用戶在各個頁面之間跳轉(zhuǎn),但必須要在用戶單擊超鏈接時才行,而Response.Redirect方法則可以自動跳轉(zhuǎn)到另外一個網(wǎng)頁,也稱為重定向。4.3 使用End方法使用Response.End方法可以結(jié)束對緩衝區(qū)中的所有數(shù)據(jù)的存儲,並立即把緩衝區(qū)中的當前內(nèi)容發(fā)送到流覽器顯示出來。在調(diào)用End方法以後出現(xiàn)的所有代碼都將不再執(zhí)行。例如:<%Response.Write"張三,你好" '在流覽器中顯示出來Response.End '調(diào)用END方法,停止執(zhí)行後面的程式Response.Write"歡迎光臨本站!" '不會執(zhí)行,即不顯示%>4.4 ASP緩衝技術(shù)Buffer屬性決定是否把ASP腳本創(chuàng)建的內(nèi)容作為一個整體一次發(fā)送給流覽器,還是在每一行內(nèi)容被創(chuàng)建並進入HTML代碼流中立即把它們發(fā)送到客戶流覽器上。Buffer屬性的值為布爾量。在ASP3.0以後,默認情況下Buffer屬性值為True。如果Buffer屬性設(shè)置為False,則每一句執(zhí)行的結(jié)果都會立即發(fā)送到流覽器上顯示出來。如果Buffer屬性設(shè)置為True,那麼Web伺服器會對腳本的所有輸出結(jié)果進行緩衝,直到對腳本的處理結(jié)束,或者調(diào)用了Response對象的Flush或者End方法為止,這時才把緩衝區(qū)中的所有數(shù)據(jù)一次性的發(fā)送到客戶端流覽器中。4.4 ASP緩衝技術(shù)4.4.1 Buffer屬性設(shè)置一般來說,設(shè)置Buffer屬性應(yīng)該在沒有任何數(shù)據(jù)輸出到流覽器之前進行,否則會出錯。但是從ASP3.0以後,默認情況下緩衝為打開狀態(tài),即Buffer屬性為True,所以,無論在ASP檔的什麼位置加入“Response.Buffer=True”都是允許的。下麵的程式可以正常執(zhí)行。4.4.2 送出和取消緩衝區(qū)的數(shù)據(jù)一旦將Response.Buffer設(shè)置為True,Web伺服器必須等到執(zhí)行完整個ASP文檔之後,才會將緩衝區(qū)的數(shù)據(jù)下載到流覽器。但也可調(diào)用Response.End或Response.Flush方法強制將緩衝區(qū)的數(shù)據(jù)送出,其中Response.End結(jié)束程式的執(zhí)行,而Response.Flush則繼續(xù)執(zhí)行程式。此外,也可調(diào)用Response.Clear方法暫時取消(清除)當前緩衝區(qū)已有的數(shù)據(jù),若清除後還有數(shù)據(jù)輸出,則還會把這些數(shù)據(jù)再送到緩衝區(qū)去。小結(jié)本章通過對ASP中最常用的Response對象的方法和屬性的介紹,為進一步學習ASP打好基礎(chǔ)。重點需要掌握Write方法、Redirect方法、End方法以及其他常用的屬性和方法。
Server對象和服務(wù)端包含指令7.1 相對路徑和虛擬路徑前面章節(jié)已經(jīng)介紹了ASP中的Request、Response、Session和Application等內(nèi)置對象。ASP中另一個比較重要的對象是Server對象。本章從相對路徑和虛擬路徑的概念入手,重點介紹Server對象的相關(guān)屬性和方法。另外還介紹了運用服務(wù)端包含指令#include在ASP檔中包含其他檔的方法。7.1 相對路徑和虛擬路徑在網(wǎng)站設(shè)計中有一個很重要的概念,那就是路徑。如在網(wǎng)頁中加載圖片或者設(shè)置超鏈接時,都必須要指定圖片或者鏈接網(wǎng)頁的路徑。一般都是採用相對路徑或虛擬路徑的方法來實現(xiàn),這裏對“相對路徑”和“虛擬路徑”的概念進行介紹。7.1.1 相對路徑相對路徑是以當前網(wǎng)頁所在的路徑為基礎(chǔ)。在網(wǎng)頁製作過程中,可能會使用不同的表示法來指定檔的所在位置,例如引用圖片可使用如下表示法:
<IMGSRC="photo.jpg">
或者:
<IMGSRC="Images/photo.jpg">
超級鏈接可使用:
<AHREF="index.asp">
或者:
<AHREF="../index.asp">7.1.2 虛擬路徑虛擬路徑是以WWW的根目錄為基礎(chǔ)的。虛擬路徑調(diào)用的最大特徵是在檔或目錄前加“/”或“\”。假設(shè)WWW的根目錄為“C:\Inetpub\wwwroot”,則虛擬路徑訪問方法如表7-2所示。虛擬路徑和相對路徑的最大區(qū)別就是:虛擬路徑是以WWW的根目錄為基礎(chǔ)的,引用時要在前面加上“/”和“\”符號;而相對路徑則是以當前網(wǎng)頁所在路徑為基礎(chǔ)的,引用情況有三種,分別是只有檔案名、以檔夾名開頭和以“../”符號開頭。7.2 Server對象Server對象提供了訪問伺服器對象的屬性和方法,專門為處理伺服器上的特定任務(wù)而設(shè)計。這些特定的任務(wù)主要是與伺服器環(huán)境和處理活動有關(guān)的任務(wù)。伺服器提供的一系列對象模型,一般需要通過Server對象創(chuàng)建具體對象模型的實例。它包含一個屬性和七種方法,通過它們可以實現(xiàn)格式化數(shù)據(jù)、管理其他網(wǎng)頁的執(zhí)行、創(chuàng)建外部對象和組件等特定任務(wù)。7.2.1 ScriptTimeout屬性ScriptTimeout屬性是Server對象的唯一一個屬性,用於訪問一個正在執(zhí)行的ASP網(wǎng)頁的腳本超時值,返回類型是整型,缺省值為90,單位是秒。該屬性的主要作用是規(guī)定腳本檔最長的執(zhí)行時間,如果超過該屬性設(shè)定的時間將自動停止頁面的執(zhí)行,並從記憶體中刪除包含可能進入死迴圈的錯誤頁面或者是那些長時間等待其他資源的網(wǎng)頁。這就有效地防止伺服器因存在錯誤頁面而超載。對於運行時間較長的頁面應(yīng)該把這個屬性值設(shè)的大一些。7.2.2 Server對象的方法CreateObject方法
CreateObject方法是Server對象最主要也是最常用的方法,主要用於創(chuàng)建組件、應(yīng)用對象或者腳本對象。在ASP實際開發(fā)中經(jīng)常使用,尤其是在檔操作和數(shù)據(jù)庫操作中。此外,要調(diào)用第三方組件也必須使用該方法創(chuàng)建一個實例。7.2.2 Server對象的方法MapPath方法
MapPath方法可將“網(wǎng)址路徑”(“相對路徑”和“虛擬路徑”)轉(zhuǎn)換成伺服器上相應(yīng)的物理路徑。ASP對某些類型的資料庫檔進行操作時就必須要使用物理路徑。語法如下:
Server.MapPath(Path)
其中參數(shù)Path是指要映射物理目錄的相對路徑或虛擬路徑。該方法將返回Path所指路徑的物理路徑。7.2.2 Server對象的方法HtmlEncode方法 該方法主要是將字串中的HTML標記字元轉(zhuǎn)換成字元實體。把<、>、&和雙引號,分別轉(zhuǎn)換為等價的HTML條目,即<、>、&、"等等。語法如下:
Server.HtmlEncode(字串)7.2.2 Server對象的方法URLEncode方法該方法將URL編碼規(guī)則,包括轉(zhuǎn)義字元應(yīng)用到字串中。例如把把空格轉(zhuǎn)換成“+”。語法如下:Server.UrlEncode(“String”)參數(shù)String指定要編碼的字串,如下代碼:<%Response.WriteServer.URLEncode("中國China")%>輸出結(jié)果是:%D6%D0%B9%FA+China7.2.2 Server對象的方法Execute方法
Execute方法可以在當前ASP檔中調(diào)用和執(zhí)行另一個ASP檔的腳本代碼。執(zhí)行完畢後,繼續(xù)執(zhí)行Execute方法後的語句。也就是可以在當前ASP檔中,包含其他ASP檔,作用類似於服務(wù)端包含指令#include。有了Execute方法,可以把複雜的ASP應(yīng)用程式分成模組化、可重複使用的若干個檔組成部分,以便在需要的時候隨時調(diào)用。7.2.2 Server對象的方法Transfer方法 該方法作用跟Execute方法類似,但和Execute方法不一樣,Transfer在處理完被調(diào)用的ASP頁面後,並不返回到調(diào)用處執(zhí)行,而是停止腳本執(zhí)行。7.3 服務(wù)端包含指令#Include在ASP中,可以使用#include指令把另一個檔的內(nèi)容插入到當前頁面中,語法如下:
<!--#includeFile/Virtual="FileName"-->
其中File和Virtual關(guān)鍵字用來指名包含檔的路徑的類型,其中FileName是要包含的檔的路徑和文件名。被包含的檔沒有擴展名的限制,即可以包含任何擴展名的檔,一般在實際應(yīng)用中,往往習慣給被包含檔指定尾碼名為.inc,以便和其他類型的檔區(qū)分開來。小結(jié)本章內(nèi)容主要介紹Server對象的方法和屬性,同時對其他一些常用概念如對相對路徑和絕對路徑、Include包含語句作了具體說明。
VBScript基礎(chǔ)3.1VBScript基本概念VBScript是一種腳本語言。所謂腳本語言就是介於HTML和Java、VB等編程語言之間的腳本命令。HTML通常用於格式化和鏈接文本,而編程語言通常用於向電腦發(fā)出一系列複雜的指令。腳本語言在功能上與編程語言接近而在語法和規(guī)則上比編程語言簡單。當執(zhí)行腳本程式時,腳本程式將一整套命令發(fā)送給腳本解釋器(即腳本引擎),由腳本解釋器進行翻譯並將其轉(zhuǎn)換成伺服器所能執(zhí)行的命令。當然,同其他編程語言一樣,腳本程式的編寫也遵循一定的規(guī)則,如果想使用特定的腳本語言,那麼伺服器上必須要有能解釋這種腳本語言的腳本解釋器。目前比較流行的腳本語言有兩種:VBScript和JavaScript。其中VBScript基於Microsoft公司的VisualBasic語言;而JavaScript基於SUN公司的Java語言。3.1.1 概述ASP本身並不是一種腳本語言,它只是提供了一種嵌在HTML頁面中的腳本語言得以運行的環(huán)境。也就是說,只要伺服器端支持這些腳本語言,在同一個ASP檔中使用不同的腳本語言也是可行的。因為所有的一切都將在伺服器端進行,客戶流覽器得到的只是一個程式執(zhí)行的結(jié)果。下麵具體介紹VBScript腳本在ASP中的使用。3.1.1 概述VBScript腳本還可以使用兩個特殊字元<%和%>來標識是否為伺服器端腳本。<%和%>能夠?qū)⑦@些腳本和HTML區(qū)分出來,表明哪些是由伺服器來執(zhí)行的,哪些是由流覽器來完成的。在ASP中,較多的使用這種方式。下麵以一個示例說明伺服器端腳本和HTML在一個網(wǎng)頁中的集成。3.1.2 數(shù)據(jù)類型在VBScript只有一種稱為Variant的數(shù)據(jù)類型。Variant是特殊的數(shù)據(jù)類型,它可根據(jù)使用的方式而包含不同類別的資訊。Variant也是VBScript中唯一的數(shù)據(jù)類型,所以它也是VBScript中所有函數(shù)的返回值的數(shù)據(jù)類型。3.2變數(shù)和常量使用變數(shù)主要是為了方便引用電腦記憶體單元,該記憶體單元中可以存儲腳本運行時可以更改的程式資訊。譬如,可以創(chuàng)建一個名為WebCount的變數(shù)用來存儲用戶訪問某個Web頁面的次數(shù)。使用變數(shù)時並不需要瞭解變數(shù)在電腦記憶體中的地址,只要通過變數(shù)名引用就可以查看或更改變數(shù)的值。在VBScript中只有一個基本數(shù)據(jù)類型,即Variant,因此所有變數(shù)的數(shù)據(jù)類型都是Variant。3.2.1 變數(shù)隱式聲明和顯式聲明在VBScript中只有一個基本數(shù)據(jù)類型,即Variant,因此所有變數(shù)的數(shù)據(jù)類型都是Variant類型。在VB腳本環(huán)境中,可以直接在腳本中使用變數(shù)名這一簡單方式隱式聲明變數(shù)。但這往往容易產(chǎn)生異常,主要是因為這樣有時會由於變數(shù)名被拼錯而導(dǎo)致在運行腳本時出現(xiàn)意外的結(jié)果。因此,一般通過使用DIM語句、PUBLIC語句和PRIVATE語句實現(xiàn)對一個變數(shù)的顯式聲明。當同時聲明多個變數(shù)時,注意中間用逗號隔開,聲明格式為:DIMvarname1[,varname2][,varname3]...其中,DIM語句為變數(shù)聲明的識別字,varname1、varname2等分別為聲明的變數(shù)名。[]表示為任選項,表示在DIM語句中可以同時聲明一個或多個變數(shù)。3.2.1 變數(shù)命名規(guī)則變數(shù)命名必須遵循VBScript的標準命名規(guī)則。變數(shù)命名必須遵循:⑴第一個字元必須是字母。⑵不能包含嵌入的句點。⑶長度不能超過255個字元。⑷在被聲明的作用域內(nèi)必須唯一。3.2.1 變數(shù)變數(shù)的類型在使用DIM語句聲明一個變數(shù)時,並沒有為該變數(shù)定義數(shù)據(jù)類型。因為VBScript中所有變數(shù)都是相同的數(shù)據(jù)類型,即variant型變數(shù)。variant是一種特殊的變數(shù)類型,它可以代表許多其他類型的變數(shù)。3.2.1 變數(shù)變數(shù)的作用域與存活期變數(shù)的作用域指的是變數(shù)的有效範圍,因為變數(shù)被聲明後不是在任何地方都可以被使用,每個變數(shù)都有它的使用範圍,在作用域內(nèi)可以使用變數(shù),在作用域外則變數(shù)不可見。變數(shù)的作用域由聲明它的位置決定。如果在過程中聲明變數(shù),則只有該過程中的代碼可以訪問或更改變數(shù)值,此時變數(shù)具有局部作用域並被稱為過程級變數(shù)。如果在過程之外聲明變數(shù),則該變數(shù)可以被SCRIPT中所有過程所識別,稱為SCRIPT級變數(shù),具有SCRIPT級作用域。3.2.2常量常量聲明和使用常量是用來代替一個數(shù)或字串的名稱。在VBScript中也可以聲明一個常量,所謂常量就是一旦聲明,以後其值就不能更改了。聲明格式為:CONSTconstname=expression其中,const語句為常量聲明的識別字,constname為聲明的常量名,expression為常量運算式。和變數(shù)聲明類似,在const語句中一次也可以聲明多個常量,中間用逗號隔開,如下:CONSTPI=3.14159,CN=”china”3.2.2常量固有常量VBScript中有許多系統(tǒng)自己聲明的常量,稱為固有常量,用戶可以直接使用。常用的固有常量包括:日期和時間常量、字串常量、比較常量、顏色常量等等。如PI數(shù)學常數(shù)約等於3.1415926535897932;日
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東工商學院《水力學及橋涵水文》2023-2024學年第二學期期末試卷
- 寧夏職業(yè)技術(shù)學院《能源與動力專業(yè)導(dǎo)論》2023-2024學年第二學期期末試卷
- 南通職業(yè)大學《交通設(shè)計》2023-2024學年第二學期期末試卷
- 四川科技職業(yè)學院《高級管理學》2023-2024學年第二學期期末試卷
- 黑龍江工商學院《化工安全風險評估與防范》2023-2024學年第二學期期末試卷
- 咸陽職業(yè)技術(shù)學院《妨害社會管理秩序罪研究》2023-2024學年第二學期期末試卷
- 廣東南華工商職業(yè)學院《計算機組成與體系結(jié)構(gòu)實驗》2023-2024學年第二學期期末試卷
- 寧夏葡萄酒與防沙治沙職業(yè)技術(shù)學院《環(huán)境科學前沿》2023-2024學年第二學期期末試卷
- 黔南民族醫(yī)學高等專科學?!夺樋椃b設(shè)計與工藝》2023-2024學年第二學期期末試卷
- 山西金融職業(yè)學院《高級物流學》2023-2024學年第二學期期末試卷
- 酒店水單模板
- 作文-曼娜回憶錄全文小說
- 昌江金達天然濃縮乳膠廠項目環(huán)境影響報告簡本
- 中學生交通安全教育公開課一等獎市賽課獲獎?wù)n件
- 多關(guān)節(jié)等速訓練與測試系統(tǒng)產(chǎn)品技術(shù)要求廣州一康醫(yī)療設(shè)備
- 青海美術(shù)館公開招聘工作人員(臨聘)6人模擬備考預(yù)測(共1000題含答案解析)綜合模擬試卷
- 汽輪機冷端系統(tǒng)節(jié)能診斷及優(yōu)化技術(shù)
- 國際貿(mào)易理論的發(fā)展(新)
- “財政大腦”系統(tǒng)集成項目需求
- 《尹定邦設(shè)計學概論》試題及答案
- 三新背景下高中化學高效課堂構(gòu)建策略研究
評論
0/150
提交評論