asp網(wǎng)頁設(shè)計(jì)課件_第1頁
asp網(wǎng)頁設(shè)計(jì)課件_第2頁
asp網(wǎng)頁設(shè)計(jì)課件_第3頁
asp網(wǎng)頁設(shè)計(jì)課件_第4頁
asp網(wǎng)頁設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩192頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

ASP程序安全10.1常見ASP漏洞及安全處理ASP提供強(qiáng)大功能的背后,還存在一些安全方面的漏洞和不足。本章主要介紹ASP常見漏洞以及解決途徑和方法。在Windows2000系統(tǒng)的IIS5.0版本以及WindowsServer2003的IIS6.0版本中,有些ASP漏洞已經(jīng)得到了較好的解決。介紹ASP中存在的安全隱患在一定程度上有助于提高對安全問題的重視。10.1.1

Access數(shù)據(jù)庫下載漏洞ASP結(jié)合后臺access數(shù)據(jù)庫開發(fā)應(yīng)用系統(tǒng)在一些中小型網(wǎng)站中得到了廣泛采用。這種方式的主要安全隱患是,一旦訪問者知道Access數(shù)據(jù)庫的路徑和文件名,整個數(shù)據(jù)庫就存在被完全下載的可能。在此,以第8章txl.mdb數(shù)據(jù)庫為例進(jìn)行解釋說明.該access數(shù)據(jù)庫存放在服務(wù)器d:\aspcode\8\db目錄下,若使用者知道該數(shù)據(jù)庫文件存放路徑和文件名,可直接在瀏覽器的地址欄中輸入該路徑以及文件名安全處理

顯然,造成這種危險的主要原因是由于知道了數(shù)據(jù)庫文件路徑和文件名。許多攻擊者往往根據(jù)站點(diǎn)或系統(tǒng)的主題對數(shù)據(jù)庫文件進(jìn)行一定的猜測。因此,如果將數(shù)據(jù)庫文件另存于一個不太有實(shí)際意義的目錄中,或者將數(shù)據(jù)庫文件名取得不太規(guī)則可大大提高系統(tǒng)在這方面的安全性。 此外,目前比較流行的做法就是將數(shù)據(jù)庫文件擴(kuò)展名改為.asp,這樣,即便知道該數(shù)據(jù)庫文件,在客戶端瀏覽器中下載時也將出現(xiàn)亂碼10.1.2

FileSystemObject組件漏洞ASP文件通過FileSystemObject組件實(shí)現(xiàn)對文件的操作。這些操作主要包括對文本文件的讀寫、目錄的改名、刪除和移動等。在IIS6.0及以前各版本中,這種權(quán)限一旦被用戶利用,服務(wù)器上的文件就面臨著一定的危險。利用修改系統(tǒng)注冊表內(nèi)容的方法⑴首先利用開始菜單的運(yùn)行框中輸入:regedit進(jìn)入注冊表;⑵查找注冊表中HKEY_CLASSES_ROOT\Scripting.FileSystemObject的鍵值,并將其改為HKEY_CLASSES_ROOT\Scripting.FileSystemObjectABC。如此,在ASP中引用該組件時就必須改為:Setfso=CreateObject("Scripting.FileSystemObjectABC")如此一來,對于一般的攻擊者來說,就很難準(zhǔn)確知道該服務(wù)器中的FileSystemObject組件名,因此也就達(dá)到了限制別人使用該組件的目的。10.1.3腳本漏洞在一個留言程序的輸入框中,如果用戶輸入的不是普通的文本信息,而是帶有HTML標(biāo)記或VBScript等腳本信息,結(jié)果會怎樣呢?試看在一個普通留言框中輸入如下內(nèi)容:<fontcolor=bluesize=7>我的留言!</font>

如果站點(diǎn)的留言板程序沒有對HTML或VBScript等腳本采取一定的避免措施,那么,在瀏覽器輸出時,留言信息的內(nèi)容字體將根據(jù)用戶的輸入而變成綠色,同時字體的大小也會改變。顯然,這些輸出結(jié)果已經(jīng)隨著用戶的輸入而改變。如果用戶在留言框中輸入的是一段惡意代碼的話,譬如:<ahref="http://123.net"onMouseover="while(1)i=i+1">重要提示</a>

在上述語句中,"起到的是雙引號的作用;如果在該語句中直接輸入雙引號,將得不到需要的結(jié)果。顯然,留言顯示的是一個超級鏈接,當(dāng)其他用戶看到這個鏈接并單擊鼠標(biāo)后,將觸發(fā)onMouseover事件,該事件為死循環(huán),從而導(dǎo)致頁面出現(xiàn)異常10.1.4密碼驗(yàn)證漏洞常用站點(diǎn)在用戶管理中都將用戶名和密碼放在數(shù)據(jù)庫的有關(guān)表中,而在登錄程序中使用SQL語句來查詢是否為合法用戶,如代碼10-3所示。該代碼常常被作為檢驗(yàn)系統(tǒng)合法用戶的頁面,登錄頁面利用session將用戶名和密碼傳遞到該頁面,再利用SQL語句在數(shù)據(jù)庫中進(jìn)行查找是否有該用戶并密碼,找到的話結(jié)束該頁面,否則重新轉(zhuǎn)到登錄頁面。在一些實(shí)際的應(yīng)用系統(tǒng)中,往往將用于判斷合法用戶的頁面包含在其他頁面中,若該頁面為名為IsAdmin.asp,則只要在其他頁面的開始部分加入<!--#includefile=”IsAdmin.asp”-->即可。若不是合法用戶,則轉(zhuǎn)到登錄頁面;否則結(jié)束該頁面,執(zhí)行本頁面的其他內(nèi)容安全處理通過修改單引號的使用可以防止該漏洞。解決該漏洞的方法是修改單引號的使用,把SQL語句中可能存在的單引號轉(zhuǎn)換成雙單引號連用的形式,這樣就避免了因單引號前后匹配造成的攻擊者繞過用戶名和密碼驗(yàn)證的漏洞。主要代碼如下:<% username="'"&replace(username,"'","''")sql="select*fromuserwhereusername="&username%>10.2ASP安全配置ASP系統(tǒng)連接SQLServer數(shù)據(jù)庫ASP+SQLServer數(shù)據(jù)庫在一些實(shí)際應(yīng)用系統(tǒng)中被廣泛采用,由于SQLServer數(shù)據(jù)庫默認(rèn)的管理員帳戶名sa,每個使用SQL的用戶都知道存在sa帳戶。因此,在SQLServer中需要刪除sa帳戶并創(chuàng)建具有安全可靠密碼的其他SQL管理帳戶。ASP系統(tǒng)連接Access數(shù)據(jù)庫前面已經(jīng)介紹過在使用Access作為后臺數(shù)據(jù)庫時,存在著整個數(shù)據(jù)庫被下載的威脅。解決的方法是為該數(shù)據(jù)庫和目錄取一個比較復(fù)雜的非常規(guī)名字,并將其放置虛擬目錄下的多層目錄中。在實(shí)際應(yīng)用中,仍然可以在許多環(huán)節(jié)進(jìn)行安全方面的設(shè)置。 進(jìn)行Access數(shù)據(jù)庫連接時,比較直接的方法是使用如下代碼:conn.open"driver={MicrosoftAccessDriver(*.mdb)};dbq=Server.MapPath("padje12.mdb")"顯然,上述代碼的危險在于一旦該源程序被獲取,那數(shù)據(jù)庫就一覽無余。因此,使用Access數(shù)據(jù)庫時,最好使用本書第8章所介紹的方法,即在ODBC里面設(shè)置好數(shù)據(jù)源,而在以后的連接代碼中就可這樣寫:conn.open"txl"在程序中記錄訪問用戶信息記錄訪問用戶信息對網(wǎng)站安全的追蹤有非常大的幫助,用戶信息中包含了用戶使用的瀏覽器、停留時間以及IP地址。記錄IP地址可以查找訪問用戶的具體地點(diǎn)。當(dāng)然,如果用戶通過代理來訪問網(wǎng)站,就只能記錄代理服務(wù)器的IP地址,而不是真實(shí)的訪問機(jī)器的地址。使用最新的ASP漏洞掃描器可以掃描IIS漏洞的掃描器有許多,比較有名的有ISS,CIS和GNIT等。一般的掃描器通過掃描服務(wù)器端口,產(chǎn)生一個HTML文件,該文件中說明了服務(wù)器中的一些信息和漏洞,包括用戶名和組的相關(guān)信息,開放的服務(wù)和Web掃描的漏洞。10.2.2服務(wù)器安全配置將應(yīng)用程序主目錄置入NTFS格式分區(qū)NTFS是微軟基于WindowsNT內(nèi)核的一種文件系統(tǒng)。相對于傳統(tǒng)的FAT和FAT32文件系統(tǒng),NTFS通過特有的權(quán)限控制提供文件和文件夾級的安全訪問機(jī)制。因此,可以定義一個或一組用戶訪問文件和目錄的不同級別。如一個Web應(yīng)用程序所有者就需要有查看、更改和刪除應(yīng)用程序的權(quán)限;而訪問應(yīng)用程序的用戶只應(yīng)具有“只讀”權(quán)限,以便將其限制為只能查看而不能更改應(yīng)用程序。10.2.2服務(wù)器安全配置及時安裝Windows系統(tǒng)最新的補(bǔ)丁所有的軟件系統(tǒng)都存有缺陷。為了修復(fù)發(fā)現(xiàn)的錯誤和漏洞,微軟公司會經(jīng)常公布軟件的最新補(bǔ)丁,用戶可以經(jīng)常進(jìn)入微軟官方網(wǎng)站了解和下載最新的漏洞補(bǔ)丁程序。這里需要強(qiáng)調(diào)的是對補(bǔ)丁程序的安裝應(yīng)該做到及時。因?yàn)榘l(fā)現(xiàn)錯誤和漏洞并進(jìn)行修復(fù)往往是在現(xiàn)有系統(tǒng)遭受攻擊后發(fā)生的。否則,系統(tǒng)就隨時有被入侵的可能。10.2.2服務(wù)器安全配置關(guān)閉不需要的服務(wù)如果著重考慮安全性,對一個平臺的所有抽象層進(jìn)行濃縮,那么,操作系統(tǒng)、進(jìn)程和網(wǎng)絡(luò)端口就是安全配置的重點(diǎn)。操作系統(tǒng)為進(jìn)程提供了軟硬件的接口,而進(jìn)程可打開到網(wǎng)絡(luò)的端口。10.2.2服務(wù)器安全配置IIS中的虛擬目錄IIS是ASP程序的開發(fā)和管理平臺,因此,它的安全設(shè)置十分重要。IIS支持虛擬目錄,建立虛擬目錄對web站點(diǎn)的安全性是非常重要。首先,虛擬目錄隱藏了有關(guān)站點(diǎn)目錄結(jié)構(gòu)的信息;而當(dāng)web頁面被放置在虛擬目錄中時,通過對目錄設(shè)置不同的屬性達(dá)到對web頁面的管理,如可將靜態(tài)的HTML頁面放置在一個子目錄中并將屬性設(shè)置為“讀”,而將ASP頁面放在另一個子目錄中并將屬性設(shè)為“執(zhí)行”。顯然,這樣進(jìn)一步提高web站點(diǎn)的安全性。10.2.2服務(wù)器安全配置設(shè)置好系統(tǒng)帳戶和安全策略WindowsNT系統(tǒng)在缺省安裝后,自動建立了Administrator和guest帳戶,許多攻擊者就是通過破解上述帳戶的密碼進(jìn)入系統(tǒng)。因此,為安全起見,往往將Administrator系統(tǒng)帳戶重命名,并保證一定的密碼長度和復(fù)雜度。對于guest帳戶來說,為提高安全性,往往將其設(shè)定為禁用狀態(tài)。小結(jié)本章針對常見ASP漏洞,介紹了一些安全處理的方法;同時,對IIS安全配置等方面作了一定的闡述。通過對本章內(nèi)容的學(xué)習(xí),使讀者對ASP在安全方面的一些不足有所了解,并且,能夠在實(shí)踐的基礎(chǔ)上,靈活運(yùn)用,進(jìn)一步做好安全防范。

ASP基礎(chǔ)及運(yùn)行平臺1.1 ASP技術(shù)概述ASP即ActiveServerPages,是Microsoft公司開發(fā)的服務(wù)器端腳本環(huán)境,可用來創(chuàng)建動態(tài)交互式網(wǎng)頁并由此建立強(qiáng)大的Web應(yīng)用程序。當(dāng)服務(wù)器收到對ASP文件的請求時,它會處理包含在用于發(fā)送給瀏覽器的HTML網(wǎng)頁文件中的服務(wù)器端腳本代碼。除服務(wù)器端腳本代碼外,ASP文件也可以包含文本、HTML(包括相關(guān)的客戶端腳本)和COM組件調(diào)用,其中這些組件可執(zhí)行不同任務(wù),如連接到數(shù)據(jù)庫或處理商業(yè)規(guī)則。1.1.1 Web程序設(shè)計(jì)基礎(chǔ)1.Web工作方式WWW(WorldWideWeb)即萬維網(wǎng),是在Internet上運(yùn)行的覆蓋全球的多媒體信息系統(tǒng)。Web中的信息保存在Web服務(wù)器中,用戶使用瀏覽器通過網(wǎng)絡(luò)在Web服務(wù)器中得到有關(guān)的信息。因此,瀏覽器的主要功能是解釋并顯示由Web服務(wù)器傳送的、由HTML寫成的文檔。通常情況下,這些文檔被直接稱為Web頁面。Web頁面的基本要素有文字、圖形和超級鏈接。在瀏覽器中,通過單擊超級鏈接標(biāo)記,用戶就能實(shí)現(xiàn)從一個頁面轉(zhuǎn)到另一個頁面中;而用戶在頁面中輸入的文本、聲音等各種信息同樣可通過瀏覽器傳遞到Web服務(wù)器中,從而實(shí)現(xiàn)系統(tǒng)的交互。2.超文本標(biāo)記語言HTMLHTML是一種用來制作超文本文檔的簡單標(biāo)記語言。用HTML編寫的超文本文檔稱為HTML文檔,也就是通常所說的那些帶有.html或.htm擴(kuò)展名的網(wǎng)頁。事實(shí)上,HTML通過各種標(biāo)記來標(biāo)識文檔的結(jié)構(gòu)以及標(biāo)識超級鏈接的信息。當(dāng)用戶通過瀏覽器打開這些頁面時,瀏覽器就能夠解釋這些標(biāo)記并顯示它的執(zhí)行效果。3.動態(tài)服務(wù)器頁面ASPASP實(shí)際上是在標(biāo)準(zhǔn)的HTML網(wǎng)頁上擴(kuò)展了一些附加的特征。它們就是那些后綴名為.asp的網(wǎng)頁。通常一個.asp網(wǎng)頁是由文本、HTML和腳本命令組成。使用它可以創(chuàng)建和運(yùn)行動態(tài)、交互的Web服務(wù)器應(yīng)用程序。1.1.2 ASP主要特點(diǎn)由于ASP簡單易用,借助Microsoft的COM+技術(shù)可以實(shí)現(xiàn)在C/S模式上實(shí)現(xiàn)的大部分功能。由于它只能在微軟操作系統(tǒng)平臺上,因此,無法實(shí)現(xiàn)跨平臺的應(yīng)用。其主要特點(diǎn)是:⑴無需編譯,在服務(wù)器端執(zhí)行;⑵主要使用VBScript、JavaScript等腳本語言進(jìn)行編輯設(shè)計(jì);⑶ASP腳本不會被傳到客戶端瀏覽器中,可以避免源代碼泄漏,提高程序安全性;⑷ActiveX服務(wù)器組件具有較強(qiáng)的擴(kuò)充性,可以使用其他語言如VB、Java、VC++等編寫的ActiveX服務(wù)器組件。⑸ASP程序的執(zhí)行與瀏覽器版本無關(guān)。ASP程序是在服務(wù)器端被解釋成相應(yīng)的HTML頁面,只要瀏覽器支持該HTML就行。1.2 IIS6.0安裝及設(shè)置微軟WindowsServer2003家族的Internet信息服務(wù)(InternetInformationService,IIS)在互聯(lián)網(wǎng)及企業(yè)內(nèi)部網(wǎng)絡(luò)上提供了集成、可靠、可伸縮、安全和可管理的Web服務(wù)器功能。IIS是用于為動態(tài)網(wǎng)絡(luò)應(yīng)用程序創(chuàng)建強(qiáng)大的通信平臺的工具。在以WindowsServer2003為服務(wù)器平臺的組織可使用IIS6.0來管理和控制Internet或其Intranet上的網(wǎng)頁。IIS6.0支持用于開發(fā)、實(shí)現(xiàn)和管理Web應(yīng)用程序的最新Web標(biāo)準(zhǔn)(如MicrosoftASP.NET、XML以及簡單對象訪問協(xié)議(SOAP)。IIS6.0包括一些面向組織、IT專家和Web管理員的新功能,它們旨在為單臺IIS服務(wù)器或多臺服務(wù)器上可能擁有的數(shù)千個網(wǎng)站實(shí)現(xiàn)性能、可靠性和安全性目標(biāo)。1.2.1 IIS6.0安裝與Windows2000Server稍有不同的是,默認(rèn)情況下,微軟沒有直接將IIS6.0安裝到WindowsServer2003系統(tǒng)中,主要原因是為了進(jìn)一步防止惡意用戶和攻擊者。1.2.2 IIS6.0設(shè)置IIS安裝完成后只能為靜態(tài)內(nèi)容提供服務(wù),對于動態(tài)頁面來說,瀏覽器會出現(xiàn)一個404錯誤,提示“文件或目錄未找到”,主要原因是系統(tǒng)在安裝之初是在高度安全和“鎖定”的模式下運(yùn)行的。默認(rèn)情況下,ASP、ASP.NET、在服務(wù)器端的包含文件、WebDAV發(fā)布和FrontPage?ServerExtensions等功能只有在手動啟用時才能工作。通過【開始】菜單再次進(jìn)入【管理您的服務(wù)器】對話框,如圖1-4所示。注意此時出現(xiàn)的對話框和圖1-1稍有不同,該對話框多了一個應(yīng)用程序服務(wù)器選單。用戶可以閱讀關(guān)于應(yīng)用程序服務(wù)器的各種信息,也可單擊【管理此應(yīng)用程序服務(wù)器】直接打開【應(yīng)用程序服務(wù)器】窗口,展開【Internet信息服務(wù)(IIS)管理器】目錄樹,可以看到應(yīng)用程序池、網(wǎng)站和Web服務(wù)擴(kuò)展三個子目錄,如圖1-5所示。1.2.2 IIS6.0設(shè)置1.3 編輯器幾乎所有的編輯軟件都可以直接對ASP進(jìn)行處理。除了普通的文本編輯軟件外,許多軟件集成開發(fā)環(huán)境如VisualBasic、Delphi以及專業(yè)級網(wǎng)頁制作軟件如Dreamweaver、FrontPage等都提供了對ASP的支持。其中,最原始、最通用的、并且也是最難使用的編輯軟件應(yīng)該是記事本。下面簡單介紹一些常用的編輯ASP的工具。1.3 編輯器記事本從字符編輯的角度來看,ASP腳本在記事本中就是一個文本文件,與一般文本文件不同在于其文件的擴(kuò)展名不再是“.txt”,而是“.asp”。對于HTML文件的控制標(biāo)記來說,都可以將它視為基本的“符號”再加上HTML文件的控制命令而已。因此,不論是HTML文件或是ASP程序代碼對于記事本而言,都屬于一般的文本文件。記事本由于占用內(nèi)存較少、使用簡單、執(zhí)行較快而受到許多ASP編程人員的歡迎。但由于它僅提供純文本文件的編輯功能,并沒有提供相應(yīng)HTML或ASP的標(biāo)記和驗(yàn)證等功能,因此,初學(xué)者再使用記事本編輯ASP腳本時,記住一些控制標(biāo)記或ASP指令部分顯得十分重要。1.3 編輯器專業(yè)級網(wǎng)頁制作工具DreamweaverMXMacromedia公司的DreamweaverMX2004是建立Web站點(diǎn)和應(yīng)用程序的專業(yè)工具。作為一款專業(yè)的HTML編輯器,它可用于對Web站點(diǎn)、頁面和Web應(yīng)用程序進(jìn)行設(shè)計(jì)、編碼和開發(fā)。DreamweaverMX2004提供的可視化編輯功能用于快速創(chuàng)建Web頁面而無需編寫代碼;同時,Dreamweaver還包括許多與編碼相關(guān)的工具和功能,借助這些功能可以使用服務(wù)器語言,如ASP、ASP.NET、ColdFusion標(biāo)記語言(CFML)、JSP和PHP等用于生成支持動態(tài)數(shù)據(jù)庫的Web應(yīng)用程序。1.3 編輯器微軟FrontPage2000Microsoft公司的FrontPage作為網(wǎng)頁設(shè)計(jì)工具,在功能上沒有Dreamweaver強(qiáng)大,但完全可以實(shí)現(xiàn)一個復(fù)雜網(wǎng)頁的設(shè)計(jì),可以編輯ASP程序,其主要界面如圖1-13所示。使用FrontPage打開一個ASP頁面一般占用十幾兆內(nèi)存空間。1.3 編輯器微軟腳本編輯器微軟腳本編輯器(MicrosoftScriptEditor,MSE)用于查看和編輯HTML文件中的HTML標(biāo)記,向文件中添加VBScript或Jscript腳本并對其進(jìn)行調(diào)試。小結(jié)

ASP由于簡單實(shí)用受到廣泛歡迎,借助Microsoft的COM+技術(shù)幾乎可以實(shí)現(xiàn)在C/S能夠?qū)崿F(xiàn)的所有功能,主要缺點(diǎn)是只能運(yùn)行在Windows平臺上。本章內(nèi)容主要介紹ASP技術(shù)基本概念,并根據(jù)實(shí)踐操作需要對其運(yùn)行和編輯環(huán)境做了深入闡述。

ASP數(shù)據(jù)庫應(yīng)用8.1數(shù)據(jù)庫設(shè)計(jì)基礎(chǔ)數(shù)據(jù)庫是計(jì)算機(jī)軟件的重要分支,企業(yè)信息管理系統(tǒng)、人事管理系統(tǒng)和學(xué)校成績查詢管理系統(tǒng)等都需要后臺數(shù)據(jù)庫支持。目前,很多軟件開發(fā)人員都在運(yùn)用各種工具開發(fā)數(shù)據(jù)庫應(yīng)用程序,而網(wǎng)絡(luò)與數(shù)據(jù)庫的結(jié)合更是數(shù)據(jù)庫應(yīng)用程序的發(fā)展趨勢。ASP在網(wǎng)絡(luò)數(shù)據(jù)庫方面具有很大的優(yōu)越性。利用ASP語言可以快速開發(fā)簡單高效的網(wǎng)絡(luò)數(shù)據(jù)庫程序,如留言簿、論壇以及基于網(wǎng)絡(luò)的各種信息查詢系統(tǒng)等。本章以Access為數(shù)據(jù)庫平臺,詳細(xì)講解ASP開發(fā)數(shù)據(jù)庫程序的各種方法。8.1.1數(shù)據(jù)庫系統(tǒng)概述數(shù)據(jù)庫系統(tǒng)主要由三大部分組成:數(shù)據(jù)庫管理系統(tǒng)(DBMS)、數(shù)據(jù)庫應(yīng)用程序和數(shù)據(jù)庫。其中,數(shù)據(jù)庫是指按一定結(jié)構(gòu)組織在一起的相關(guān)數(shù)據(jù)的集合;而DBMS是專門負(fù)責(zé)組織和管理數(shù)據(jù)信息的程序,是數(shù)據(jù)庫系統(tǒng)的核心組成部分。用戶通過數(shù)據(jù)庫應(yīng)用程序能夠獲取、顯示和更新由DBMS存儲的數(shù)據(jù),通過應(yīng)用程序提供的管理界面實(shí)現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的訪問。數(shù)據(jù)庫由一個或多個表組成,每個表是由若干記錄組成。記錄是信息處理的基本單位,且每條記錄在結(jié)構(gòu)上完全相同。例如有一張保存通訊錄信息的表,該表由編號、姓名、性別、出生日期、電話、地址、郵件地址等列構(gòu)成。8.1.2Access數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)是幫助用戶建立和管理數(shù)據(jù)庫的軟件系統(tǒng),目前比較流行的大型數(shù)據(jù)庫管理系統(tǒng)有:SQLServer、IBMDB2、Oracle、Sybase、Informix等,而小型數(shù)據(jù)庫管理系統(tǒng)有Access、FoxPro、Pradox等。在ASP中使用較多的是Access和SQLServer數(shù)據(jù)庫管理系統(tǒng)。本書以Access桌面數(shù)據(jù)庫為主,因?yàn)锳ccess數(shù)據(jù)庫比較簡單,在一般的小型網(wǎng)站中使用綽綽有余,如網(wǎng)上留言簿、論壇等程序大多使用Access數(shù)據(jù)庫。而且Access數(shù)據(jù)庫可以很快的轉(zhuǎn)換成SQLServer數(shù)據(jù)庫。8.1.3建立Access數(shù)據(jù)庫Access數(shù)據(jù)庫是MicrosoftOffice辦公軟件中的一員,可以通過Office默認(rèn)自動安裝。在建立數(shù)據(jù)庫文件之前,首先要進(jìn)行系統(tǒng)分析,對數(shù)據(jù)庫進(jìn)行合理的規(guī)劃。實(shí)際應(yīng)用中,這是最重要的一步。要深入了解用戶需求,也就是說要掌握用戶使用該軟件的具體要求,需要進(jìn)行一定的需求分析。真正掌握用戶的需求后,才能確定數(shù)據(jù)庫中需要哪些字段來存儲數(shù)據(jù),以減少數(shù)據(jù)冗余。數(shù)據(jù)庫中表和字段的多少,要按照實(shí)際需求來定。數(shù)據(jù)庫設(shè)計(jì)是否合理直接影響到程序開發(fā)和維護(hù)的難易程度,所以建立數(shù)據(jù)庫時一定要慎重。8.2設(shè)置數(shù)據(jù)源ASP中為方便存儲數(shù)據(jù)庫,需要通過數(shù)據(jù)庫存儲組件ADO來實(shí)現(xiàn)。在操作任何數(shù)據(jù)庫之前,首先必須連接到數(shù)據(jù)庫。ASP連接到數(shù)據(jù)庫的方法很多,其中很重要的方法是通過ODBC數(shù)據(jù)源來完成。8.2.1ODBC簡介ODBC是開放數(shù)據(jù)庫連接的英文縮寫,意為在不同的數(shù)據(jù)庫管理系統(tǒng)上存取數(shù)據(jù)。例如,有一個可使用SQL語句存取數(shù)據(jù)庫記錄的程序,此時ODBC可以讓用戶使用此程序直接存取MicrosoftAccess數(shù)據(jù)庫中的數(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數(shù)據(jù)庫的ODBC數(shù)據(jù)源,步驟如下:8.2.3測試ODBC數(shù)據(jù)源前面已經(jīng)介紹了ODBC數(shù)據(jù)源的設(shè)置。接下來,以ADO對象為基礎(chǔ),使用ODBC數(shù)據(jù)源與Access數(shù)據(jù)庫文件txl.mdb進(jìn)行連接,同時,使用SQL查詢語句嘗試取得txl.mdb數(shù)據(jù)庫中“Userlist”表中的字段名稱,作為ODBC數(shù)據(jù)源實(shí)際測試的驗(yàn)證。8.3常用SQL語句簡介SQL是StructureQueryLanguage的縮寫,即結(jié)構(gòu)化查詢語言。在ASP數(shù)據(jù)庫操作時,處處離不開SQL。SQL不僅可以實(shí)現(xiàn)記錄的查詢、插入、修改和刪除以及數(shù)據(jù)表的建立、修改、刪除等操作,還可以實(shí)現(xiàn)其它更復(fù)雜的操作。在一般的數(shù)據(jù)庫應(yīng)用程序中,對數(shù)據(jù)的增、刪、改、查操作最為廣泛,下面介紹一些簡單實(shí)用的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訪問數(shù)據(jù)庫基礎(chǔ)ASP通過ADO來訪問各種數(shù)據(jù)庫。ADO全稱為ActivexDataObjects,可以實(shí)現(xiàn)用戶與數(shù)據(jù)庫進(jìn)行交互的組件。使用ADO來可以訪問MicrosoftAccess,MicrosoftSQL和Oracle數(shù)據(jù)庫中的信息,甚至可以從MicrosoftExcel表格中讀取信息。ADO提供了多種對象來操作數(shù)據(jù)庫,其中包括連接對象Connection、命令對象Command和記錄集對象Recordset等。ASP通過這些對象,可編寫簡單的腳本連接到與OLEDB兼容的數(shù)據(jù)源,如數(shù)據(jù)庫、Excel等。OLEDB是一個系統(tǒng)級的編程接口,它提供了一套標(biāo)準(zhǔn)的COM接口,用來管理數(shù)據(jù)存儲。另外,還可以使用ADO模型訪問與開放式數(shù)據(jù)庫互聯(lián)(ODBC)兼容的數(shù)據(jù)庫。8.4.1Connection對象Connection對象又稱連接對象,主要用來建立與數(shù)據(jù)庫的連接。只有建立連接后才能利用其他對象對數(shù)據(jù)庫進(jìn)行各種操作。所以Connection對象是對數(shù)據(jù)庫操作的前提,在用ASP腳本操作數(shù)據(jù)庫之前,必須要利用Connection對象建立與OLEDB兼容的數(shù)據(jù)源或者ODBC兼容的數(shù)據(jù)庫之間的連接。8.4.2RecordSet對象Recordset對象是ADO中使用最普遍的對象,它含有從數(shù)據(jù)存儲中提取的數(shù)據(jù)集。它是一個記錄的集合,用于檢索和更新數(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數(shù)據(jù)庫訪問可以通過ADO實(shí)現(xiàn)。SQL是結(jié)構(gòu)化查詢語言,專門用于查詢和操作關(guān)系型數(shù)據(jù)庫。1986年被國際標(biāo)準(zhǔn)化組織規(guī)定為國際標(biāo)準(zhǔn),許多數(shù)據(jù)庫廠商如Oracle、IBMDB2、MicrosoftSQLServer、ACCESS都提供了對SQL的支持。本章主要介紹常用SQL的基本語法以及ADO訪問Access數(shù)據(jù)庫的基本方法;同時對Connection、Recordset、Command等對象作了一定闡述。通過大量實(shí)例深入介紹了數(shù)據(jù)庫增、刪、改、查等操作的基本技巧和記錄內(nèi)容的分頁技術(shù)。

ASP中的會話6.1 Session對象本章討論ASP中另兩個對象,就是Application和Session對象。要在同一個ASP程序的不同頁面之間傳遞數(shù)據(jù),最直接的方法可以采用表單提交的方式或者采用查詢字符串(QueryString)的方法來實(shí)現(xiàn),當(dāng)然也可以采用Cookies方法實(shí)現(xiàn)把數(shù)據(jù)從一個頁面?zhèn)鬟f到另外一個頁面。使用Application和Session對象能夠輕易完成這些功能。把客戶數(shù)據(jù)在各頁面之間進(jìn)行傳遞,這就是會話。6.1.1 Session簡介使用Session對象可實(shí)現(xiàn)保存特定用戶的信息。訪問者從訪問某個特定主頁到離開為止的那段時間,每個訪問者都會單獨(dú)獲得一個Session對象,也就是用戶在同一個網(wǎng)站里從一個頁面跳轉(zhuǎn)到另外一個頁面時,該Session信息仍然存在。這里的同一個網(wǎng)站指的是虛擬目錄。用戶在同一個網(wǎng)站的任何一個頁面都可以存取Session對象的有關(guān)信息。6.1.1 Session簡介Session對象利用Cookie進(jìn)行信息處理。當(dāng)用戶提出請求后,服務(wù)端就會在用戶瀏覽器上創(chuàng)建一個Cookie對象。當(dāng)某個Session結(jié)束時,就意味著該Cookie已經(jīng)過期。為這個用戶創(chuàng)建的Cookie名稱是SessionID,該Cookie唯一目的是為每個用戶提供不同的身份認(rèn)證。在一個應(yīng)用程序中,當(dāng)客戶端啟動一個Session時,ASP會自動生成一個長整型SessionID,并把這個SessionID傳遞給客戶端瀏覽器。瀏覽器會把這個SessionID存放在Cookies內(nèi),即暫存于客戶端硬盤中。而當(dāng)用戶轉(zhuǎn)到同一個應(yīng)用程序的其它頁面再次請求該Session對象時,ASP就會查找保存該SessionID的Cookies,并返回對應(yīng)的Session信息。最后,當(dāng)用戶離開網(wǎng)站時,也就是當(dāng)這個Session結(jié)束時,該Cookies信息會從硬盤上自動刪除。6.1.2 利用Session對象存儲信息Session對象使用非常簡單,它的語法為:Session("Session名稱")=變量值如有以下代碼:<%Session("UserName")="李逵"'保存字符串信息到Session變量Session("UserName")中Session("UserName")=Name '保存Name變量的值保存到Session變量中Session("Age")=25 '把數(shù)字信息保存到Session變量中Response.Write(Session("UserName"))'輸出Session變量%>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循環(huán)來顯示Contents所有內(nèi)容6.1.4 利用Session存儲數(shù)組信息Session對象存儲數(shù)組的方法跟前面講過的方法基本相同,要注意的是,Session對象往往被當(dāng)作一個集合使用。當(dāng)Session在存儲數(shù)組時,把數(shù)組當(dāng)成一個整體來看待,即只能對數(shù)組整體進(jìn)行存取,不能直接對某個數(shù)組元素進(jìn)行修改6.1.5 Session對象的有效期用Timeout屬性控制Session的有效期 當(dāng)用戶離開當(dāng)前站點(diǎn)而去訪問另一個站點(diǎn),或者關(guān)閉所有該站點(diǎn)的網(wǎng)頁時,Session會話自動結(jié)束。若用戶一直打開某個網(wǎng)頁而很長時間沒有提出請求或者刷新該網(wǎng)頁,那么這個Session會話是否一直存在呢?是不是直到關(guān)閉瀏覽器或者轉(zhuǎn)向其它站點(diǎn)時才結(jié)束呢?6.1.5 Session對象的有效期用Abandon方法強(qiáng)行結(jié)束Session會話 該方法釋放Web服務(wù)器中保存有關(guān)用戶會話信息的存儲空間。但是該方法并不影響其它用戶的會話信息。如果不明確地調(diào)用Abandon方法,Web服務(wù)器會一直保存所有會話信息,直到會話結(jié)束。語法如下:

Session.Abandon

該語句可刪除所有Session變量,且只有當(dāng)包含該語句的網(wǎng)頁執(zhí)行結(jié)束后才能成功地刪除Session信息。6.1.6 Session事件Session對象共有兩個事件(Event)。分別是Session_OnStart事件和Session_OnEnd事件。其中,Session_OnStart事件是當(dāng)還沒有在服務(wù)器上實(shí)例化會話的用戶向服務(wù)器請求任意一個頁面時(Session開始時)被觸發(fā);而Session_OnEnd事件是在用戶會話結(jié)束時或腳本調(diào)用Session對象的Abandon方法時被觸發(fā)。6.2 Application對象Session對象是用來記載特定用戶的信息,它的內(nèi)容因人而異,每個訪問用戶都有一個獨(dú)立的Session來保存自己的信息,不可共享,只能被用戶自己訪問;Application對象則好比是一個公共場所,它記載的信息是可以同時被大家共享,也就說Application對象是公用的。6.2.2 使用Application對象存儲信息Application對象存儲信息的方法跟Sesssion對象差不多,它的語法如下:Application("Application名稱")=變量值或者:Application.Contents("Application名稱")=變量值這兩種賦值方法是等價的,在使用時往往省略Contents。Contents集合的運(yùn)用跟Session對象中的Contents相同,這里不再詳細(xì)闡述。6.2.3 Application事件 Application對象中的Application_OnStart事件在首次創(chuàng)建新會話之前發(fā)生。服務(wù)器啟動并允許對應(yīng)用程序所包含的文件進(jìn)行請求時觸發(fā)Application_OnStart事件。 Application_OnEnd事件則在應(yīng)用程序退出時在Session_OnEnd事件之后發(fā)生。兩個事件的處理過程必須寫在Global.asa文件中。小結(jié)本章主要介紹Session對象與Application對象常用屬性和方法,利用它們可實(shí)現(xiàn)不同網(wǎng)頁間數(shù)據(jù)的相互傳遞。因此,也被稱作網(wǎng)頁間的會話。其中,Session對象主要傳遞單個會話用戶的私有信息;而Application對象則存儲了所有用戶的共享信息。對本章提供的諸如聊天室等具體實(shí)例,需要進(jìn)一步地熟悉和掌握。

HTML基礎(chǔ)2.1 HTML語言概述

HTML(HyperTextMarkupLanguage)即超文本標(biāo)記語言,是學(xué)習(xí)ASP的基礎(chǔ)。HTML由一些特定符號和語法組成,并按照一定格式標(biāo)記文本和圖像等元素??蛻舳藶g覽器根據(jù)HTML標(biāo)記解釋并顯示其內(nèi)容。2.1.1 HTML標(biāo)記與組件HTML標(biāo)記

HTML控制數(shù)據(jù)顯示格式的方式是通過一組前后呼應(yīng)的HTML標(biāo)記來實(shí)現(xiàn)。為控制數(shù)據(jù)顯示格式可將一組特定的HTML標(biāo)記包含在需要控制的對象中間。每一組HTML標(biāo)記以“<標(biāo)記名稱>”為開始,以“</標(biāo)記名稱>”作為結(jié)尾標(biāo)記。有關(guān)HTML標(biāo)記控制對象顯示的語法格式如下:

<標(biāo)記名稱[屬性1=屬性值1屬性2=屬性值2…]>

欲控制對象

</標(biāo)記名稱>2.1.1 HTML標(biāo)記與組件組件的概念 用一組HTML標(biāo)記將需要控制對象包含在中間時,這個需要控制對象與包含文字的HTML標(biāo)記將被稱之為一個組件。大部分的HTML標(biāo)記還可根據(jù)實(shí)際情況對需要控制對象的一些屬性進(jìn)行設(shè)置。2.1.1 HTML標(biāo)記與組件HTML層的概念 在HTML語法中,每個由HTML標(biāo)記與文字所形成的組件還可以包含另一個組件,整個HTML文件就像是一個大組件,包含了許多小組件,因此就形成了層的概念。 所有HTML文件最外層的組件由<HTML>標(biāo)記建立。在<HTML>標(biāo)記所建構(gòu)的組件中,還包含兩個主要的子組件,這兩個子組件由<HEAD>與<BODY>標(biāo)記建立。其中<HEAD>標(biāo)記建立的組件內(nèi)容為文件標(biāo)題,而<BODY>標(biāo)記建立的組件內(nèi)容為文件內(nèi)容。2.1.2 HTML開發(fā)環(huán)境 HTML文件其實(shí)是一個擴(kuò)展名為.htm或.html的純文本文件。因此,所有文字編輯軟件都可以用來撰寫HTML文件,如:Windows系統(tǒng)的記事本Notepad、Word等等。

WWW的日益盛行使得在Windows平臺下出現(xiàn)了許多可視化的網(wǎng)頁開發(fā)工具,如:FrontPage、Dreamweaver等。這些網(wǎng)頁開發(fā)軟件提供了進(jìn)行網(wǎng)頁設(shè)計(jì)的平臺和環(huán)境。許多并不十分熟悉HTML語法的網(wǎng)頁設(shè)計(jì)者通過這些專業(yè)級的網(wǎng)頁開發(fā)環(huán)境往往可以設(shè)計(jì)出功能強(qiáng)大的頁面。2.2 HTML網(wǎng)頁格式<HTML>標(biāo)記 一個HTML文件,事實(shí)上是一個由<HTML>標(biāo)記所建立的組件,所有文件的內(nèi)容都應(yīng)該被包含在此標(biāo)記中。而在這個組件中,整個文件將被區(qū)分為兩個部分,一是由<HEAD>標(biāo)記所建立的文件標(biāo)題,另一個則是由<BODY>標(biāo)記所建立的文件主體。<HEAD>標(biāo)記由<HEAD>標(biāo)記所定義的組件中,并不放網(wǎng)頁的任何內(nèi)容,而是放置有關(guān)這份HTML文件的信息,例如:文件的標(biāo)題、編碼方式、URL等等。這些信息大部分是提供索引、辨認(rèn)或其他應(yīng)用的使用。<TITLE>標(biāo)記

<TITLE>標(biāo)記使用于<HEAD>標(biāo)記中,用于標(biāo)識此HTML文件的標(biāo)題名稱。而被標(biāo)識的標(biāo)題名稱,將顯示在瀏覽器的標(biāo)題欄中。<BODY>標(biāo)記 由<BODY>標(biāo)記所建立的組件,為該HTML文件的內(nèi)容主體。此HTML文件顯示的所有文件內(nèi)容都將放在這個組件中,此標(biāo)記屬性的說明請參考2.3.1節(jié)的說明。而在這個組件中,可以利用各種HTML標(biāo)記控制網(wǎng)頁顯示內(nèi)容的格式、編排與效果。關(guān)于各種應(yīng)用于控制HTML文件格式的標(biāo)記說明,請參考以下章節(jié)的說明。2.2.3 文件主體標(biāo)記

定義于<BODY>標(biāo)記內(nèi)的內(nèi)容就是HTML文件的主體,也就是網(wǎng)頁的主要內(nèi)容,這些內(nèi)容依照各種HTML標(biāo)記的控制,呈現(xiàn)在瀏覽器的視窗中。而設(shè)定于<BODY>標(biāo)記內(nèi)的屬性,可用于控制整個頁面的顯示方式。2.2.3 文件主體標(biāo)記Bgcolor屬性

Bgcolor屬性主要控制文件的背景顏色,語法為:

bgcolor=“顏色”顏色可以用兩種方法表示,可以直接指定顏色的英文名稱,常用的基本顏色名稱如表2-1所示。另外,也可以利用16進(jìn)位數(shù)值的方式指定顏色,其語法如下:

#RRGGBBRR代表紅色,GG代表綠色,BB代表藍(lán)色,以00到FF的值表示三種顏色成分的多少,以指定出這三種原色以多少成分組成新顏色。如下面的網(wǎng)頁背景為綠色:

<bodybgcolor=”#00FF00”>2.3 文字及表格處理標(biāo)題標(biāo)記<Hn></Hn> <Hn></Hn>標(biāo)記用于標(biāo)識網(wǎng)頁中的標(biāo)題文字,被標(biāo)記的文字將以粗體的方式顯示在網(wǎng)頁中。其語法為:

<Hn>標(biāo)題文字</Hn>

其中n的范圍為1到6,因此共有6個層次的標(biāo)題。2.3 文字及表格處理Align屬性 在<Hn></Hn>標(biāo)記中較為常用的屬性為align,該屬性用于控制標(biāo)題的對齊方式,其語法如下:

align=left或center或rignt

以上三個設(shè)定值將依次把標(biāo)題文字的水平對齊方式設(shè)定為靠左對齊、置中對齊以及靠右對齊。2.3 文字及表格處理段落標(biāo)記<P></P>

利用<P></P>標(biāo)記所標(biāo)識的文字,代表為同一個段落的文字。在瀏覽器中,不同段落文字間將會以一行空白加以間隔,以便區(qū)別出文字的不同段落。語法如下:

<P>文字</P>

在<P>標(biāo)記中較常用的屬性為align屬性,通過此屬性可以控制段落的對齊方式。其語法如下:

align=left或center或right

以上三個設(shè)定值將依次把段落文字的水平對齊方式設(shè)為靠左對齊、置中對齊以及靠右對齊。2.3 文字及表格處理換行標(biāo)記<BR>

換行標(biāo)記是一個沒有結(jié)尾標(biāo)記的標(biāo)記,HTML文件中任何位置只要使用了<BR>標(biāo)記,當(dāng)文件顯示于瀏覽器中時,該位置之后的文字將顯示于下一行。 注意,在一般的文本文件中,只要按下鍵盤上的Enter鍵便會產(chǎn)生一個換行符,是文本文件中的文字分行顯示。但是在HTML文件中,由Enter鍵所產(chǎn)生的換行符瀏覽器并不會視為換行符。因此,若需要將某位置之后的文字顯示于下一行時,必須使用<BR>標(biāo)記。當(dāng)然利用<P>標(biāo)記也可以達(dá)到分行顯示數(shù)據(jù)的效果,但兩個段落間將以一行空白做為間隔。2.3 文字及表格處理水平分隔線<HR> <HR>標(biāo)記將會在網(wǎng)頁上畫出一條橫跨網(wǎng)頁的水平分隔線,通??梢杂糜诜指畈煌奈淖侄温?。下面說明一些常用于控制<HR>標(biāo)記所建立水平分隔線樣式的屬性。⑴size屬性 該屬性設(shè)置水平線的粗細(xì),以像素(pixel)為單位表示,將建立粗細(xì)為10個pixel的水平分隔線的語法為:<HRsize=10>⑵width屬性 該屬性設(shè)置水平線的寬度,可以用像素(pixel)為單位表示,也可以使用屏幕的百分比表示。下面的語句將建立寬度為屏幕長度50%的水平分隔線:<HRwidth=50%>⑶align屬性 該屬性控制水平分隔線的對齊方式,有置中、靠左、靠右三種方式。語法如下:

align=center或left或right⑷color屬性 該屬性設(shè)置線條的顏色,顏色可以用英文名稱或是16進(jìn)位數(shù)值設(shè)定,有關(guān)顏色值的設(shè)定請參考2-2-3節(jié)中有關(guān)bgcolor屬性設(shè)定的說明。語法為:color=顏色值⑸noshade屬性 該屬性設(shè)置水平線不顯示3D陰影。2.3.2 文字格式標(biāo)記字型標(biāo)記<font></font>

字型標(biāo)記通常用于控制文字的字型、大小與顏色。控制的方式是利用屬性設(shè)定來完成,下面介紹各屬性的使用方式,語法如下:

<font屬性1=值1屬性2=值2……>需要控制的文字</font>⑴face屬性該屬性用于控制文字使用字型的屬性,語法為:

face=“字型名稱” 如果使用者的系統(tǒng)中并不存在所指定的字型名稱,將使用預(yù)設(shè)的字型。⑵size屬性該屬性用于控制文字大小的屬性,語法為:

size=字體等級 在IE中,字體的等級共有7級,7為最大的字體。⑶color屬性該屬性用于設(shè)定文字的顏色,語法為:

color=“顏色” 顏色的設(shè)定可運(yùn)用英文名稱,或是16進(jìn)位數(shù)值。有關(guān)顏色值的設(shè)定請參考2.2.3節(jié)中有關(guān)bgcolor屬性的說明。2.3.2 文字格式標(biāo)記特定文字樣式標(biāo)記

HTML中有一些標(biāo)記可以設(shè)定以特別的樣式顯示文字。每一種瀏覽器對此類標(biāo)記的顯示可能會有些不同。下面將列出較為常用特定文字樣式的標(biāo)記。2.3.3 表格的建立建立表格的四種標(biāo)記 在網(wǎng)頁中,表格的運(yùn)用是非常重要的技巧。在HTML語法中,表格的建立主要運(yùn)用<TABLE>、<TH>、<TR>、<TD>四個標(biāo)記完成。下面是這四個標(biāo)記的說明:⑴<TABLE></TABLE>標(biāo)記該標(biāo)記標(biāo)識表格組件。一個表格組件,由數(shù)個列、單元格與標(biāo)題格子組件組成。⑵<TR></TR>標(biāo)記該標(biāo)記定義表格的一列,通常包含數(shù)組由<TD>或<TH>所定義的單元格。⑶<TD></TD>標(biāo)記該標(biāo)記定義表格的單元格。⑷<TH></TH>標(biāo)記該標(biāo)記定義表格的標(biāo)題單元格,此單元格中的文字將以粗體的方式顯示。在一個基本的表格組件中,必須包含一組<TABLE>標(biāo)記、一組<TR>標(biāo)記與一組<TD>標(biāo)記。語法如下:<TABLE><TR><TD></TD></TR></TABLE>上述語法將建立只有一個單元格的表格。2.3.3 表格的建立<TABLE>標(biāo)記的屬性 下面將說明一些<TABLE>標(biāo)記常用的屬性,這些屬性將用于控制整個表格組件的格式。⑴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 其他常用標(biāo)記在介紹其它HTML標(biāo)記之前,先簡單介紹一下相對路徑與絕對路徑的概念,在接下來的小節(jié)中,需要運(yùn)用這些概念來引用存在于同一個Web服務(wù)器中的文件或網(wǎng)頁。⑴相對路徑以引用文件的網(wǎng)頁所在位置為參考基礎(chǔ)而建立的目錄路徑。因此,當(dāng)不同網(wǎng)頁引用同一個文件時,所使用的路徑都不相同,故稱之為相對。⑵絕對路徑以Web站點(diǎn)根目錄為參考基礎(chǔ)的目錄路徑。“絕對”意指當(dāng)所有網(wǎng)頁應(yīng)用同一個文件時,所使用的路徑都是一樣的。2.4.2超級鏈接的標(biāo)記<A>與</A>HTML文件中最重要的應(yīng)用之一就是超級鏈接,在網(wǎng)頁上使用超級鏈接,可提供使用者鏈接至網(wǎng)絡(luò)上其它網(wǎng)頁的功能。當(dāng)使用者單擊網(wǎng)頁中的超級鏈接后,瀏覽器便會瀏覽超級鏈接位置的網(wǎng)頁。建立超級鏈接所使用的標(biāo)記為<A></A>,其語法為:<AHref=“鏈接位置”>超級鏈接名稱</A>語法中部分說明如下:

超級鏈接名稱該字符串以明文形式顯示在網(wǎng)頁中。除了可以使用字符串外,在<A></A>標(biāo)記中,也可使用位圖文件或其他圖形文件,此時,該圖文件即代表超鏈接。當(dāng)使用者將鼠標(biāo)指針移到代表超鏈接的文字或圖文件上時,光標(biāo)形態(tài)變成手狀,表示使用者可單擊該鏈接。

鏈接位置用于指定href屬性,用來放置超鏈接的目標(biāo),可使用URL指定。URL的格式由使用的通信協(xié)議、鏈接地址與文件位置所組成。語法如下:通信協(xié)議://鏈接地址/文件位置…/文件名稱2.4.3圖文件加載標(biāo)記<IMG>圖文件加載標(biāo)記,用于將圖文件加載HTML文件中顯示。使用此標(biāo)記加載GIF、JPG等格式的圖片文件。利用<IMG>標(biāo)記加載圖文件的最基本語法如下:<ingsrc=“圖文件存儲位置與名稱”>5其中src屬性為<IMG>標(biāo)記的必要屬性,用于指定需要加載圖文件的儲存位置與名稱。而待加載圖文件的位置可以是在同一服務(wù)器中的文件或是位于網(wǎng)絡(luò)上的其它服務(wù)器。若是同一主機(jī)內(nèi)的文件,可運(yùn)用相對路徑指出圖文件的位置。下面的語句將加載位于上一層目錄中名為mark.gif的圖文件。<imgsrc=“‥/mark.gif”>若是從網(wǎng)絡(luò)上其他服務(wù)器加載,則設(shè)定src屬性時,必須使用URL格式,下面的語句將從0這個服務(wù)器的根目錄下加載名稱為mark.gif的圖文件。<imgsrc=”0/mard.gif”>2.4.4批注標(biāo)記<!>當(dāng)需要在HTML文件中說明HTML語法的意義時,可以使用<!---->標(biāo)記來定義這些批注文字。語法為<!--批注文字-->使用者在瀏覽網(wǎng)頁時,這些批注文字將不會出現(xiàn)在瀏覽器中。小結(jié)

HTML是在SGML定義下的一個描述性語言,它不是C++或Java之類的程序設(shè)計(jì)語言,而僅僅是一種標(biāo)識語言。只要明白各種標(biāo)記的用法便基本上掌握HTML;同時,HTML的格式簡單,主要由文字及標(biāo)記組合而成。在編輯環(huán)境方面,任何文字編輯器都可以使用,只要能將文件另存成ASCII純文字格式即可,當(dāng)然使用專業(yè)的網(wǎng)頁編輯軟件更能起到事半功倍的作用。

Response對象第4章Response對象WEB應(yīng)用程序在處理ASP腳本時,任何沒有包含在ASP腳本定界符或者<SCRIPT>標(biāo)記中的內(nèi)容都將被直接返回給瀏覽器。如果要用ASP腳本來顯示瀏覽器輸出內(nèi)容,則需要通過Response對象來實(shí)現(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(變量或字符串)4.1.2 Write方法和HTML標(biāo)記相互嵌套編寫ASP程序時,ASP腳本語句和HTML語言可以相互嵌套。通常也可以把HTML語言用Response.Write方法輸出。4.2 用Redirect方法實(shí)現(xiàn)網(wǎng)頁間跳轉(zhuǎn)Response對象除了提供Write方法,可以輸出數(shù)據(jù)到瀏覽器之外,也可以實(shí)現(xiàn)網(wǎng)頁的跳轉(zhuǎn),使用的方法如下所示:Response.Redirect目標(biāo)網(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ū)中的當(dāng)前內(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)建并進(jìn)入HTML代碼流中立即把它們發(fā)送到客戶瀏覽器上。Buffer屬性的值為布爾量。在ASP3.0以后,默認(rèn)情況下Buffer屬性值為True。如果Buffer屬性設(shè)置為False,則每一句執(zhí)行的結(jié)果都會立即發(fā)送到瀏覽器上顯示出來。如果Buffer屬性設(shè)置為True,那么Web服務(wù)器會對腳本的所有輸出結(jié)果進(jìn)行緩沖,直到對腳本的處理結(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ù)輸出到瀏覽器之前進(jìn)行,否則會出錯。但是從ASP3.0以后,默認(rèn)情況下緩沖為打開狀態(tài),即Buffer屬性為True,所以,無論在ASP文件的什么位置加入“Response.Buffer=True”都是允許的。下面的程序可以正常執(zhí)行。4.4.2 送出和取消緩沖區(qū)的數(shù)據(jù)一旦將Response.Buffer設(shè)置為True,Web服務(wù)器必須等到執(zhí)行完整個ASP文檔之后,才會將緩沖區(qū)的數(shù)據(jù)下載到瀏覽器。但也可調(diào)用Response.End或Response.Flush方法強(qiáng)制將緩沖區(qū)的數(shù)據(jù)送出,其中Response.End結(jié)束程序的執(zhí)行,而Response.Flush則繼續(xù)執(zhí)行程序。此外,也可調(diào)用Response.Clear方法暫時取消(清除)當(dāng)前緩沖區(qū)已有的數(shù)據(jù),若清除后還有數(shù)據(jù)輸出,則還會把這些數(shù)據(jù)再送到緩沖區(qū)去。小結(jié)本章通過對ASP中最常用的Response對象的方法和屬性的介紹,為進(jìn)一步學(xué)習(xí)ASP打好基礎(chǔ)。重點(diǎn)需要掌握Write方法、Redirect方法、End方法以及其它常用的屬性和方法。

Server對象和服務(wù)端包含指令7.1 相對路徑和虛擬路徑前面章節(jié)已經(jīng)介紹了ASP中的Request、Response、Session和Application等內(nèi)置對象。ASP中另一個比較重要的對象是Server對象。本章從相對路徑和虛擬路徑的概念入手,重點(diǎn)介紹Server對象的相關(guān)屬性和方法。另外還介紹了運(yùn)用服務(wù)端包含指令#include在ASP文件中包含其它文件的方法。7.1 相對路徑和虛擬路徑在網(wǎng)站設(shè)計(jì)中有一個很重要的概念,那就是路徑。如在網(wǎng)頁中加載圖片或者設(shè)置超鏈接時,都必須要指定圖片或者鏈接網(wǎng)頁的路徑。一般都是采用相對路徑或虛擬路徑的方法來實(shí)現(xiàn),這里對“相對路徑”和“虛擬路徑”的概念進(jìn)行介紹。7.1.1 相對路徑相對路徑是以當(dāng)前網(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ǔ)的,引用時要在前面加上“/”和“\”符號;而相對路徑則是以當(dāng)前網(wǎng)頁所在路徑為基礎(chǔ)的,引用情況有三種,分別是只有文件名、以文件夾名開頭和以“../”符號開頭。7.2 Server對象Server對象提供了訪問服務(wù)器對象的屬性和方法,專門為處理服務(wù)器上的特定任務(wù)而設(shè)計(jì)。這些特定的任務(wù)主要是與服務(wù)器環(huán)境和處理活動有關(guān)的任務(wù)。服務(wù)器提供的一系列對象模型,一般需要通過Server對象創(chuàng)建具體對象模型的實(shí)例。它包含一個屬性和七種方法,通過它們可以實(shí)現(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í)行,并從內(nèi)存中刪除包含可能進(jìn)入死循環(huán)的錯誤頁面或者是那些長時間等待其他資源的網(wǎng)頁。這就有效地防止服務(wù)器因存在錯誤頁面而過載。對于運(yùn)行時間較長的頁面應(yīng)該把這個屬性值設(shè)的大一些。7.2.2 Server對象的方法CreateObject方法

CreateObject方法是Server對象最主要也是最常用的方法,主要用于創(chuàng)建組件、應(yīng)用對象或者腳本對象。在ASP實(shí)際開發(fā)中經(jīng)常使用,尤其是在文件操作和數(shù)據(jù)庫操作中。此外,要調(diào)用第三方組件也必須使用該方法創(chuàng)建一個實(shí)例。7.2.2 Server對象的方法MapPath方法

MapPath方法可將“網(wǎng)址路徑”(“相對路徑”和“虛擬路徑”)轉(zhuǎn)換成服務(wù)器上相應(yīng)的物理路徑。ASP對某些類型的數(shù)據(jù)庫文件進(jìn)行操作時就必須要使用物理路徑。語法如下:

Server.MapPath(Path)

其中參數(shù)Path是指要映射物理目錄的相對路徑或虛擬路徑。該方法將返回Path所指路徑的物理路徑。7.2.2 Server對象的方法HtmlEncode方法 該方法主要是將字符串中的HTML標(biāo)記字符轉(zhuǎn)換成字符實(shí)體。把<、>、&和雙引號,分別轉(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方法可以在當(dāng)前ASP文件中調(diào)用和執(zhí)行另一個ASP文件的腳本代碼。執(zhí)行完畢后,繼續(xù)執(zhí)行Execute方法后的語句。也就是可以在當(dāng)前ASP文件中,包含其它ASP文件,作用類似于服務(wù)端包含指令#include。有了Execute方法,可以把復(fù)雜的ASP應(yīng)用程序分成模塊化、可重復(fù)使用的若干個文件組成部分,以便在需要的時候隨時調(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)容插入到當(dāng)前頁面中,語法如下:

<!--#includeFile/Virtual="FileName"-->

其中File和Virtual關(guān)鍵字用來指名包含文件的路徑的類型,其中FileName是要包含的文件的路徑和文件名。被包含的文件沒有擴(kuò)展名的限制,即可以包含任何擴(kuò)展名的文件,一般在實(shí)際應(yīng)用中,往往習(xí)慣給被包含文件指定后綴名為.inc,以便和其它類型的文件區(qū)分開來。小結(jié)本章內(nèi)容主要介紹Server對象的方法和屬性,同時對其它一些常用概念如對相對路徑和絕對路徑、Include包含語句作了具體說明。

VBScript基礎(chǔ)3.1VBScript基本概念VBScript是一種腳本語言。所謂腳本語言就是介于HTML和Java、VB等編程語言之間的腳本命令。HTML通常用于格式化和鏈接文本,而編程語言通常用于向計(jì)算機(jī)發(fā)出一系列復(fù)雜的指令。腳本語言在功能上與編程語言接近而在語法和規(guī)則上比編程語言簡單。當(dāng)執(zhí)行腳本程序時,腳本程序?qū)⒁徽酌畎l(fā)送給腳本解釋器(即腳本引擎),由腳本解釋器進(jìn)行翻譯并將其轉(zhuǎn)換成服務(wù)器所能執(zhí)行的命令。當(dāng)然,同其他編程語言一樣,腳本程序的編寫也遵循一定的規(guī)則,如果想使用特定的腳本語言,那么服務(wù)器上必須要有能解釋這種腳本語言的腳本解釋器。目前比較流行的腳本語言有兩種:VBScript和JavaScript。其中VBScript基于Microsoft公司的VisualBasic語言;而JavaScript基于SUN公司的Java語言。3.1.1 概述ASP本身并不是一種腳本語言,它只是提供了一種嵌在HTML頁面中的腳本語言得以運(yùn)行的環(huán)境。也就是說,只要服務(wù)器端支持這些腳本語言,在同一個ASP文件中使用不同的腳本語言也是可行的。因?yàn)樗械囊磺卸紝⒃诜?wù)器端進(jìn)行,客戶瀏覽器得到的只是一個程序執(zhí)行的結(jié)果。下面具體介紹VBScript腳本在ASP中的使用。3.1.1 概述VBScript腳本還可以使用兩個特殊字符<%和%>來標(biāo)識是否為服務(wù)器端腳本。<%和%>能夠?qū)⑦@些腳本和HTML區(qū)分出來,表明哪些是由服務(wù)器來執(zhí)行的,哪些是由瀏覽器來完成的。在ASP中,較多的使用這種方式。下面以一個示例說明服務(wù)器端腳本和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變量和常量使用變量主要是為了方便引用計(jì)算機(jī)內(nèi)存單元,該內(nèi)存單元中可以存儲腳本運(yùn)行時可以更改的程序信息。譬如,可以創(chuàng)建一個名為WebCount的變量用來存儲用戶訪問某個Web頁面的次數(shù)。使用變量時并不需要了解變量在計(jì)算機(jī)內(nèi)存中的地址,只要通過變量名引用就可以查看或更改變量的值。在VBScript中只有一個基本數(shù)據(jù)類型,即Variant,因此所有變量的數(shù)據(jù)類型都是Variant。3.2.1 變量隱式聲明和顯式聲明在VBScript中只有一個基本數(shù)據(jù)類型,即Variant,因此所有變量的數(shù)據(jù)類型都是Variant類型。在VB腳本環(huán)境中,可以直接在腳本中使用變量名這一簡單方式隱式聲明變量。但這往往容易產(chǎn)生異常,主要是因?yàn)檫@樣有時會由于變量名被拼錯而導(dǎo)致在運(yùn)行腳本時出現(xiàn)意外的結(jié)果。因此,一般通過使用DIM語句、PUBLIC語句和PRIVATE語句實(shí)現(xiàn)對一個變量的顯式聲明。當(dāng)同時聲明多個變量時,注意中間用逗號隔開,聲明格式為:DIMvarname1[,varname2][,varname3]...其中,DIM語句為變量聲明的標(biāo)識符,varname1、varname2等分別為聲明的變量名。[]表示為任選項(xiàng),表示在DIM語句中可以同時聲明一個或多個變量。3.2.1 變量命名規(guī)則變量命名必須遵循VBScript的標(biāo)準(zhǔn)命名規(guī)則。變量命名必須遵循:⑴第一個字符必須是字母。⑵不能包含嵌入的句點(diǎn)。⑶長度不能超過255個字符。⑷在被聲明的作用域內(nèi)必須唯一。3.2.1 變量變量的類型在使用DIM語句聲明一個變量時,并沒有為該變量定義數(shù)據(jù)類型。因?yàn)閂BScript中所有變量都是相同的數(shù)據(jù)類型,即variant型變量。variant是一種特殊的變量類型,它可以代表許多其它類型的變量。3.2.1 變量變量的作用域與存活期變量的作用域指的是變量的有效范圍,因?yàn)樽兞勘宦暶骱蟛皇窃谌魏蔚胤蕉伎梢员皇褂?,每個變量都有它的使用范圍,在作用域內(nèi)可以使用變量,在作用域外則變量不可見。變量的作用域由聲明它的位置決定。如果在過程中聲明變量,則只有該過程中的代碼可以訪問或更改變量值,此時變量具有局部作用域并被稱為過程級變量。如果在過程之外聲明變量,則該變量可以被SCRIPT中所有過程所識別,稱為SCRIPT級變量,具有SCRIPT級作用域。3.2.2常量常量聲明和使用常量是用來代替一個數(shù)或字符串的名稱。在VBScript中也可以聲明一個常量,所謂常量就是一旦聲明,以后其值就不能更改了。聲明格式為:CONSTconstname=expression其中,const語句為常量聲明的標(biāo)識符,constname為聲明的常量名,expression為常量表達(dá)式。和變量聲明類似,在const語句中一次也可以聲明多個常量,中間用逗號隔開,如下:CONSTPI=3.14159,CN=”china”3.2.2常量固有常量VBScrip

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論