Chs-0403-ASP動態(tài)頁面技術課件_第1頁
Chs-0403-ASP動態(tài)頁面技術課件_第2頁
Chs-0403-ASP動態(tài)頁面技術課件_第3頁
Chs-0403-ASP動態(tài)頁面技術課件_第4頁
Chs-0403-ASP動態(tài)頁面技術課件_第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第4章

Web應用基礎知識之ASP動態(tài)頁面技術靜態(tài)網(wǎng)頁與動態(tài)網(wǎng)頁1ASP及其特征32ASP頁面的運行環(huán)境4ASP文件結構3ASP與ADO的連接6VBScript語法簡介5ASP內(nèi)置對象7JavaScript、VBScript比較384.3.1.靜態(tài)網(wǎng)頁與動態(tài)網(wǎng)頁由于HTML將數(shù)據(jù)內(nèi)容與表現(xiàn)混為一體,其可讀性和可修改性差,數(shù)據(jù)可檢索性差,影響網(wǎng)絡信息傳送和共享。XML實現(xiàn)了內(nèi)容與表現(xiàn)的分離,方便信息的維護與檢索,也使得用戶之間數(shù)據(jù)的交換更加方便,可重用性更強。但從本質上說,基于XML文檔的頁面仍然是“靜態(tài)”的,不易實現(xiàn)客戶端與服務器的雙向交流,也不能實時查詢業(yè)務系統(tǒng)中的商業(yè)信息,于是提出了動態(tài)頁面的要求。4.3.1.靜態(tài)網(wǎng)頁與動態(tài)網(wǎng)頁動態(tài)網(wǎng)頁是與靜態(tài)網(wǎng)頁相對應的,這里說的“動態(tài)”,與網(wǎng)頁上的各種動畫、滾動字幕等視覺上的動態(tài)效果沒有直接關系,動態(tài)網(wǎng)頁可以是純文字內(nèi)容的,也可以是包含各種動畫的內(nèi)容,這些只是網(wǎng)頁具體內(nèi)容的表現(xiàn)形式。那么什么是動態(tài)網(wǎng)頁呢?動態(tài)頁面必須滿足以下條件:自動更新,即無須更新HTML文檔,系統(tǒng)會根據(jù)待顯示的內(nèi)容和客戶端的不同請求動態(tài)地生成新的頁面。交互性,即網(wǎng)頁會根據(jù)用戶的要求和選擇而動態(tài)改變和響應,并且客戶端能與服務器進行雙向交流。

4.3.1.靜態(tài)網(wǎng)頁與動態(tài)網(wǎng)頁從瀏覽者的角度來看,無論是動態(tài)網(wǎng)頁還是靜態(tài)網(wǎng)頁,都可以展示基本的文字和圖片信息,但從其開發(fā)、維護及信息顯示與獲取方式的角度來看就有很大的差別,動態(tài)網(wǎng)頁一般具有如下特征:動態(tài)網(wǎng)頁以數(shù)據(jù)庫技術為基礎,可以大大降低網(wǎng)站維護的工作量。動態(tài)網(wǎng)頁技術可以實現(xiàn)客戶端與服務器的雙向交流,如用戶注冊、用戶登錄、在線調(diào)查、用戶管理、訂單管理等等。動態(tài)網(wǎng)頁實際上并不是獨立存在于服務器上的網(wǎng)頁文件,只有當用戶請求時服務器才根據(jù)用戶請求動態(tài)地生成并返回一個完整的頁面。

4.3.1.靜態(tài)網(wǎng)頁與動態(tài)網(wǎng)頁

動態(tài)頁面實現(xiàn)的技術方法有多種形式,也經(jīng)過了幾個不同的階段。最早的動態(tài)頁面實現(xiàn)技術是DHTML(DynamicHTML,即:動態(tài)HTML),DHTML是一種通過各種技術的綜合應用而得以實現(xiàn)的概念,這些技術包括JavaScript、VBScript、DOM(DocumentObjectModel-文檔對象模塊)和CSS(CascadingStyleSheets-樣式表)等。

嚴格意思上說DHTML只是動態(tài)生成或改變客戶端的顯示方式,而不能動態(tài)改變顯示內(nèi)容,因此,并不是完整意義的動態(tài)頁面技術。

4.3.1.靜態(tài)網(wǎng)頁與動態(tài)網(wǎng)頁真正讓用戶在瀏覽器界面中通過互聯(lián)網(wǎng)查詢Web數(shù)據(jù)庫的資料,更新或刪除Web服務器上的信息,就必然涉及到對數(shù)據(jù)庫的操作,常用的技術方法主要有:

CGI(CommonGatewayInterface,通用網(wǎng)關接口)的傳統(tǒng)方式。

IDC(InternetDatabaseConnector,互聯(lián)網(wǎng)數(shù)據(jù)庫連接),它實際上是一個包含于IIS中的應用程序。高級數(shù)據(jù)庫連接器ADC(AdvancedDataConnector。

ADO(ActiveXDataObject,微軟提供的一種新的數(shù)據(jù)訪問模型)。ADO具有容易使用、開發(fā)執(zhí)行快速、消耗系統(tǒng)資源較少,和占用磁盤空間小等優(yōu)點,是Web數(shù)據(jù)庫應用的最佳選擇。

4.3.2.ASP及其特征

ASP(ActiveServerPage)意為“活動服務器網(wǎng)頁”,是微軟公司開發(fā)的代替CGI腳本程序的一種應用,它可以與數(shù)據(jù)庫和其它程序進行交互,是一種簡單、方便的編程工具。Active:ActiveX技術是Microsoft軟件的重要基礎,它采用對象封裝技術,簡化編程,加強程序間合作。Server:ASP運行在服務器端。ASP的編程語言可以是VBScript和JScript。對服務器的唯一要求是安裝IIS(InternetInformationServer)。Pages:ASP返回標準的HTML頁面,可以在各種常用的瀏覽器中顯示。并且在客戶端只能看到ASP生成的HTML代碼,而不是ASP程序代碼,可以有效保護源程序??梢姡珹SP是在IIS下開發(fā)Web應用的一種簡單、方便的編程工具。4.3.2.ASP及其特征與HTML相比,ASP頁面具有以下特點:利用ASP可以實現(xiàn)突破靜態(tài)網(wǎng)頁的一些功能限制,實現(xiàn)動態(tài)網(wǎng)頁技術。ASP文件是包含在HTML代碼所組成的文件中的,易于修改和測試。ASP在服務器端運行,并將結果以HTML格式傳送到客戶端瀏覽器上,因此各種瀏覽器都可以正常瀏覽ASP所產(chǎn)生的網(wǎng)頁。ASP提供了一些內(nèi)置對象,使用這些對象可以使服務器端腳本功能更強。例如可以從Web瀏覽器中獲取用戶通過HTML表單提交的信息,并在腳本中對這些信息進行處理,然后向Web瀏覽器發(fā)送信息。ASP可以使用服務器端ActiveX組件來執(zhí)行各種各樣的任務,例如存取數(shù)據(jù)庫或訪問文件系統(tǒng)等。ASP的程序代碼隱藏,在客戶端僅可以看到由ASP輸出的動態(tài)HTML文件,可防止ASP程序代碼被竊取。

ASP.NET是ActiveServerPages(ASP)技術的最新版本。在學習ASP.NET之前,具有Microsoft的ASP技術的基礎知識將會有所幫助4.3.3.ASP文件結構ASP文件是后綴名為.asp的文本文件,在ASP文件中包含HTML標記和ASP腳本命令,ASP腳本命令放在ASP界定符<%...%>中。腳本命名(Script)可以是腳本語言、ASP內(nèi)置對象和ADO對象。默認情況下ASP主腳本語言是VBScript,也可以在文件的最上面加上一行加以說明來設置腳本語言:<%@Language=JavaScript%>與HTML頁面類似,ASP頁面文件也是由標識組成的文本文件,主體還是HTML代碼,其區(qū)別是使用<%%>來表示一個ASP的腳本語言的開始和結尾。其格式如下:<%語句……%>ASP的代碼可以出現(xiàn)在一個HTML頁的任何位置??梢孕蜗蠡卣f,ASP是用HTML標識+腳本語言+asp內(nèi)置對象及組件的混合的活動頁面設計語言。4.3.4.ASP頁面的運行環(huán)境不同于HTML或XML文件,在進行基于ASP的頁面開發(fā)與調(diào)試時,要求所使用的電腦具有服務器的功能。

那么,首先就要配置IIS服務器。IIS是InternetInformationServer的縮寫,它是微軟公司主推的Web服務器對于Windows2000,在系統(tǒng)安裝時候,會自動安裝IIS,而對于WindowsXP則需要在安裝時候選擇該組件,或者在安裝完成后,添加該組件。具體安裝步驟是:打開控制面板在控制面板中選擇“添加/刪除Windows組件”,打開窗口在“Windows組件向導”窗口中選擇“Internet信息服務(IIS)”按“下一步”確認后,開始安裝服務器IIS

安裝完成后,打開瀏覽器,在其地址欄中輸入http://localhost/,出現(xiàn)歡迎界面和IIS的幫助文檔,就表示IIS已經(jīng)安裝成功了,Web服務正在運行。

4.3.4.ASP頁面的運行環(huán)境下面我們來可以建立我們的第一個ASP頁面,在記事本中輸入:<%response.write("當前時間是:"&Now())%>并保存為Times.asp,一個簡單的ASP頁面就建立成功了,那么如何運行它呢?現(xiàn)在,你的計算機既是服務器端,又是客戶端。IIS缺省的訪問目錄(主目錄)是:C:\Inetpub\wwwroot,如果你的ASP頁面文件放在該目錄,就可以直接在瀏覽器的地址欄輸入:http://localhost/Times.asp

要從主目錄以外的其他目錄中進行發(fā)布,就必須創(chuàng)建虛擬目錄

。Times.asp4.3.4.ASP頁面的運行環(huán)境運行結果如下所示:4.3.5.VBScript語法簡介

ASP文件是由HTML標簽、腳本語言命令和內(nèi)置對象命令所構成。腳本語言可以是VBScript或JavaScript語言,默認的是VBScript。VBScript或JavaScript對ASP頁面設計是必不可少的。VBScript語句是一種基于VB的腳本語言,是VisualBasic語言的簡集,主要用于Web服務器端的程序開發(fā),它是一種簡化的語言,其語法邏輯是非常容易學習。在HTML中,VBScript腳本語句必須放在<SCRIPT>…</SCRIPT>之間。格式如下:<SCRIPTLanguage="VBScript"><!--

語句……--></SCRIPT>4.3.5.VBScript語法簡介VBScript只有一種數(shù)據(jù)類型,稱為Variant。Variant將包含的數(shù)值信息類型稱為子類型。可將所需的數(shù)據(jù)放進Variant中,Variant會按照最適用于其包含的數(shù)據(jù)的方式進行操作??梢允褂棉D換函數(shù)來轉換數(shù)據(jù)的子類型,也可使用VarType函數(shù)返回數(shù)據(jù)的Variant的子類型。Variant包含的數(shù)據(jù)子類型如表4.3所示。

VBScript中的數(shù)據(jù)類型4.3.5.VBScript語法簡介子類型描述Empty未初始化的Variant,數(shù)值變量的值為0;字符串變量的值為零長度字符串Null不包含任何有效數(shù)據(jù)的VariantBoolean包含

True或

FalseByte包含0~255之間的整數(shù)Integer包含-32768~32767之間的整數(shù)

Currency-922337203685477.5808~922337203685477.5807Long包含-2147483648~2147483647之間的整數(shù)。

Single包含單精度浮點數(shù)

Double包含雙精度浮點數(shù)

Date(Time)包含表示日期的數(shù)字

String包含變長字符串,最大長度可為20億個字符Object包含對象Error包含錯誤號4.3.5.VBScript語法簡介在VBScript中只有一個基本數(shù)據(jù)類型,即Variant,因此所有變量的數(shù)據(jù)類型都是Variant。聲明變量的方式是使用Dim語句在Script中顯式聲明變量,聲明多個變量時,使用逗號分隔變量。例如:DimTop,Bottom,Left,RightVBScript變量的命名規(guī)則很簡單,主要有:第一個字符必須是字母。長度不能超過255個字符。在被聲明的作用域內(nèi)必須唯一。

VBScript中的變量

4.3.5.VBScript語法簡介在VBScript中也可以聲明和使用在數(shù)組變量,其索引號是從0開始,因此,最后一個元素的索引號等于總數(shù)組元素減去1。也可以在聲明時不指定元素的個數(shù)來聲明動態(tài)數(shù)組。例如:DimMyArray1(10)//聲明一個10個元素的數(shù)組,索引號為0~9DimDyArray()//聲明一個動態(tài)數(shù)組除變量外,也可以使用Const語句在VBScript中創(chuàng)建用戶自定義常數(shù)。例如:ConstMyString="這是一個字符串"ConstMyAge=254.3.5.VBScript語法簡介VBScript有一套完整的運算符,包括算術運算符、比較運算符、連接運算符和邏輯運算符。運算時,總是先執(zhí)行括號中的運算符,然后再執(zhí)行括號外的運算符。當表達式包含多種運算符時,首先計算算術運算符,然后計算比較運算符,最后計算邏輯運算符。所有比較運算符的優(yōu)先級相同,即按照從左到右的順序計算比較運算符。運算符的優(yōu)先級如表4.4所示。運算符4.3.5.VBScript語法簡介算術運算符比較運算符邏輯運算符描述符號描述符號描述符號求冪^等于=邏輯非Not負號-不等于<>邏輯與And乘*小于<邏輯或Or除/大于>邏輯異或Xor整除\小于等于<=邏輯等價Eqv求余Mod大于等于>=邏輯隱含Imp加+對象引用比較Is減-字符串連接&當乘號與除號同時出現(xiàn)在一個表達式中時,按從左到右的順序計算乘、除運算符。同樣當加與減同時出現(xiàn)在一個表達式中時,按從左到右的順序計算加、減運算符。字符串連接(&)運算符不是算術運算符,但是在優(yōu)先級順序中,它排在所有算術運算符之后和所有比較運算符之前。Is運算符是對象引用比較運算符。它并不比較對象或對象的值,而只是進行檢查,判斷兩個對象引用是否引用同一個對象。

4.3.5.VBScript語法簡介VBScript語言也包括順序、條件分支和循環(huán)3種流程控制結構。使用條件分支語句和循環(huán)語句可以控制Script的流程;使用條件語句可以根據(jù)不同的狀態(tài)執(zhí)行不同的命令或命令集合;使用循環(huán)語句可以實現(xiàn)重復操作的VBScript代碼。

條件分支結構在VBScript中,條件分支語句有If…Then…Else語句和SelectCase語句兩種形式,其格式分別如下:If條件1Then……Elseif條件2Then……Else……EndIf

VBScript的控制流程語句4.3.5.VBScript語法簡介SelectCase語句提供的功能與If…Then…Else語句類似,但是可以使代碼更加簡練易讀。其格式為:

SelectCase表達式

Case"表達式值1"

……Case"表達式值2"……Case"表達式值3"……CaseElse……EndSelect4.3.5.VBScript語法簡介循環(huán)結構

循環(huán)用于重復執(zhí)行一組語句。循環(huán)可分為3類:一類在條件變?yōu)門rue之前重復執(zhí)行語句;一類在條件變?yōu)镕alse之前重復執(zhí)行語句;另一類按照指定的次數(shù)重復執(zhí)行語句。VBScript中的循環(huán)結構有以下4種形式?!o...Loop:當(或直到)條件為True時執(zhí)行循環(huán)體?!hile...Wend:當條件為True時執(zhí)行循環(huán)體?!or...Next:指定循環(huán)次數(shù),使用計數(shù)器重復運行語句?!orEach...Next:對于集合中的每項或數(shù)組中的每個元素,重復執(zhí)行循環(huán)體。4.3.5.VBScript語法簡介

過程與函數(shù)都是一組語句的有序集合,其功能也類似,區(qū)別在于過程無返回值而函數(shù)必須要返回一個值。程序4.19和程序4.20定義了一個過程和一個函數(shù),用戶輸入一個華氏溫度將其轉換為攝氏溫度。這兩個例子分別演示了過程與函數(shù)的定義方法。程序4.19:一個過程

SubConvertTemp()temp=InputBox("請輸入華氏溫度。",1)MsgBox"溫度為"&Celsius(temp)&"攝氏度。"EndSubVBScript的過程與函數(shù)VBScript過程是包含在Sub和EndSub語句之間的一組VBScript語句,執(zhí)行操作但不返回值。Sub過程可以使用參數(shù),如果無任何參數(shù),則Sub語句必須包含空括號“()”。4.3.5.VBScript語法簡介程序4.20:一個函數(shù)

FunctionCelsius(fDegrees)Celsius=(fDegrees-32)*5/9EndFunctionVBScript函數(shù)是包含在Function和EndFunction語句之間的一組VBScript語句。同樣函數(shù)也可以使用參數(shù),如果無任何參數(shù),則Function語句必須包含空括號()。函數(shù)通過函數(shù)名返回一個值,這個值是在函數(shù)體內(nèi)的語句中賦給函數(shù)名的。VBScript的函數(shù)的返回值的數(shù)據(jù)類型總是Variant。4.3.5.VBScript語法簡介過程或函數(shù)定義可出現(xiàn)在<SCRIPT>和</SCRIPT>標記之間,且必須遵循聲明腳本語言的規(guī)則。如果過程所用的語言與主腳本語言不同,則要使用<SCRIPT>元素。主腳本語言中的過程用腳本分界符(<%和%>)分隔。用<SCRIPT>標記時,必須使用兩個屬性來保證服務器端能夠處理腳本。使用<SCRIPT>標記的語法如下:<SCRIPTRunat=ServerLanguage="VBScript">ProcedureDefinitionFunctionDefinition</SCRIPT>例如:<SCRIPTLanguage=vbscript>SubConvertTemp()temp=InputBox("請輸入華氏溫度。",1)MsgBox"溫度為"&Celsius(temp)&"攝氏度。"EndSubFunctionCelsius(fDegrees)Celsius=(fDegrees-32)*5/9EndFunction</SCRIPT>4.3.5.VBScript語法簡介例如:<SCRIPTLanguage=vbscript><!--SubConvertTemp()temp=InputBox("請輸入華氏溫度。",1)MsgBox"溫度為"&Celsius(temp)&"攝氏度。"EndSubFunctionCelsius(fDegrees)Celsius=(fDegrees-32)*5/9EndFunction--></SCRIPT>4.3.6.ASP與ADO的連接

ASP的優(yōu)勢就在于能與數(shù)據(jù)庫進行交互,從而實現(xiàn)頁面內(nèi)容的動態(tài)更新,這種動態(tài)性體現(xiàn)在兩個方面:一是瀏覽器端顯示的頁面隨著服務器端數(shù)據(jù)庫內(nèi)容的變化而變化;二是用戶可在客戶端更新數(shù)據(jù)庫的內(nèi)容,即可實現(xiàn)客戶端與服務器的雙向交流。一個真正的動態(tài)頁面或基于Web的系統(tǒng)是離不開數(shù)據(jù)庫的,因為實際應用中,需要使用的數(shù)據(jù)很多,而且這些數(shù)據(jù)之間往往還存在關聯(lián)關系,利用數(shù)據(jù)庫來管理這些數(shù)據(jù),可以方便地實現(xiàn)數(shù)據(jù)的查詢和更新。ASP頁面與數(shù)據(jù)庫的交互是通過ADO來實現(xiàn)的。4.3.6.ASP與ADO的連接ADO(ActiveXDataObject)是一組優(yōu)化的訪問數(shù)據(jù)庫的專用對象集,它為ASP提供了完整的數(shù)據(jù)庫解決方案,它作用在服務器端,通過執(zhí)行SQL命令,用戶通過客戶端瀏覽器可對服務器端數(shù)據(jù)庫的輸入,更新和刪除等操作。ADO主要包括Connection、Command和Recordset三個對象,它們的主要功能如下:Connection對象:負責打開或連接數(shù)據(jù)庫文件;Command對象:對數(shù)據(jù)庫下達行動查詢指令,以及執(zhí)行SQLServer的存儲過程;Recordset對象:表示記錄的集合,用于存取數(shù)據(jù)庫的內(nèi)容。4.3.6.ASP與ADO的連接數(shù)據(jù)庫有很多種,如:Informix、Oracle、SQLServer等等,這里,我將以SQLServer數(shù)據(jù)庫為例來說明ASP是如何訪問數(shù)據(jù)庫的。假定有一數(shù)據(jù)庫表asp,用來存儲員工的基本信息,其結構如下:

20char畢業(yè)院校univ84char婚否(未婚、已婚)marry74char性別(男、女)sex629numeric年收入salary538datetime生日birth404int年齡age310char姓名cname210char序號id1小數(shù)位長度類型含義名稱序號連接數(shù)據(jù)庫4.3.6.ASP與ADO的連接ADO提供了兩種連接數(shù)據(jù)庫的方法。一是用ODBC產(chǎn)生一個連接,這種連接與任何有ODBC驅動器的數(shù)據(jù)庫兼容;另一個是用原始OLEDB提供商產(chǎn)生一個連接。應盡可能用原始OLEDB提供商,因為它提供了對數(shù)據(jù)更有效的訪問,Microsoft正逐步用OLEDB取代ODBC標準,應該僅僅在沒有原始OLEDB提供商時使用ODBC。4.3.6.ASP與ADO的連接下面以OLEDB方式為例說明數(shù)據(jù)庫的連接方法,數(shù)據(jù)庫連接包括兩個步驟:即創(chuàng)建連接數(shù)據(jù)庫的對象使用該對象連接數(shù)據(jù)庫。

下面的代碼是一個SQLServer數(shù)據(jù)庫的典型的連接方法,其他數(shù)據(jù)庫的連接類似,只是其參數(shù)不同。程序4.21:conn_ole.asp<%@Language=VBScript%><%Setconn=Server.CreateObject("ADODB.Connection")//創(chuàng)建連接對象conn.Open"Provider=SQLOLEDB;DataSource=(local);database=asp_net;uid=sa;pwd=VBFVZVI"%>4.3.6.ASP與ADO的連接建立數(shù)據(jù)庫連接后,就可執(zhí)行SQL命令,即對數(shù)據(jù)庫進行操作,這里要使用到連接對象的一個方法,即Execute命令,使用格式為:SetRS=Conn.Execute("SelectCol_nameFromTab_nameWhereCondition")該語句的作用是將SQL語句的執(zhí)行結果存儲在一個RecordSet中。

然后,可利用數(shù)據(jù)集合對象Recordset的屬性和方法,從集合中讀取數(shù)據(jù),并顯示在頁面上。

Recordset對象就是一個存儲在內(nèi)存中表(table)下面簡單介紹數(shù)據(jù)集合對象Recordset的常用屬性與命令存取數(shù)據(jù)庫的內(nèi)容4.3.6.ASP與ADO的連接RecordSets對象的常用命令如下:RS.Fildes.Count//RecordSet中的字段數(shù)RS(i).Name//第i個字段名RS(i)//第i個字段的記錄RS("Col_name")//指定字段的記錄RS.EOF//是否指向最后一個字段TrueorFalseRS.MoveFirst//指向第一條記錄RS.MovePrev//指向前一條記錄RS.MoveNext//指向后一條記錄RS.MoveLast//指向最后一條記錄RS.GetRows//將查詢結果存放在數(shù)組中,然后再從數(shù)組中讀取RS.Properties.Count//得到ADO的Connection或ResultSet的屬性總數(shù)RS.Properties(Item).Name//得到ADO的Connection或ResultSet的屬性名稱RS.Properties(Item)//得到ADO的Connection或ResultSet的屬性值。4.3.6.ASP與ADO的連接結合Connection對象、Command對象和Recordset對象,連接一個SQLServer數(shù)據(jù)庫,并顯示該數(shù)據(jù)庫中asp表的記錄的完整程序如下:程序

4.22:show.asp<%@Language=VBScript%><%Setconn=Server.CreateObject("ADODB.Connection")conn.Open("Provider=SQLOLEDB;DataSource=(local);database=asp_net;uid=sa;pwd=VBFVZVI")setrs=conn.execute("select*fromemp")dowhilenotrs.eofresponse.writers("cname")&","&rs("univ")&"<br>"rs.movenextlooprs.closeconn.closesetrs=nothingsetconn=nothing%>該程序的作用是依次讀出數(shù)據(jù)庫中的每一條記錄并顯示到客戶端瀏覽器。

4.3.6.ASP與ADO的連接例子程序3.2show_Access.asp(Access數(shù)據(jù)庫連接例子)<%Setconn=server.createobjectConnODB.connection")conn.connectionstring="proConnr=microsoft.jet.oledb.4.0;datasource="&server.mappath("asp_net.mdb")conn.opensetrs=conn.execConn"select*fromaddlistorderbyid")dowhilenotrs.eofresponse.writers("id")&""&rs("name")&""&rs("sex")&""&rs("high")&""&rs("brith")&""&rs("address")&""&rs("uname")&"<br>"rs.movenextlooprs.closeconn.close%>4.3.6.ASP與ADO的連接為了便于處理,我們可以把數(shù)據(jù)庫連接及其他類似的操作的作為一個獨立的文本文件(通常為.inc.asp.html等文本文件),然后通過#include來調(diào)用這個文件。#include命令指示W(wǎng)eb服務器將讀取被包含文件的全部內(nèi)容插入到并插入到頁面中。包含文件是一種非常有用的插入HTML段落的技術,它使得相同的代碼可以同時在多個頁面中使用,提高了代碼的復用性。被包含的文件可具有任何文件擴展名,但建議使用.inc擴展名。包含文件的使用4.3.6.ASP與ADO的連接

#include命令既可用于ASP頁面,也可用在HTML頁面中,但必須使用HTML注釋定界符將指令括起來,其使用格式如下:

<!--#includePathType=FileName-->其中,PathType

指定FileName文件的路徑類型,路徑可為以下某種類型:#include命令的文檔所在目錄的相對路徑。文件名為Web站點上虛擬目錄的完整虛擬路徑。FileName指定要包含的文件名。FileName必須包含文件名擴展,而且必須將文件名用引號(")引起來。

4.3.6.ASP與ADO的連接例如,我們可以將例子程序show.asp中的數(shù)據(jù)庫連接部分分離出來,作為一個獨立的文件conn.asp或conn.inc。這樣做的好處在于,當數(shù)據(jù)庫的連接參數(shù)改變時,不需要修改每個頁面文件,只需要修改這個包含文件即可。例子程序conn.inc和例子程序shows.asp分別是包含的文件的定義和調(diào)用。例子程序conn.inc<%Setconn=Server.CreateObject("ADODB.Connection")conn.Open"Provider=SQLOLEDB;DataConnce=(local);database=asp_net;uid=sa;pwd="%>定義.inc文件后,在其調(diào)用的asp文件中加入:

<!--#includefile=include/conn.inc-->

例如:shows.asp4.3.6.ASP與ADO的連接上面的shows.asp實現(xiàn)了用ASP技術顯示數(shù)據(jù)庫內(nèi)容的頁面,但是這種顯示效果不太美觀,數(shù)據(jù)中的信息通常以表格的形式來表現(xiàn),那么,我們可以用HTML中的<table>來實現(xiàn)。

例子程序table.asp實現(xiàn)了在Asp中用表格顯示數(shù)據(jù)4.3.6.ASP與ADO的連接程序

4.25:table.asp<%@Language=VBScript%><!--#includefile=include/conn.inc--><tableborder><tr><th>姓名<th>畢業(yè)學校</tr><%setrs=conn.execute("select*fromemp")dowhilenotrs.eofresponse.write("<tr>")response.write("<td>"&rs("cname")&"</td>")response.write("<td>"&rs("univ")&"</td>")response.write("</tr>")rs.movenextlooprs.closeconn.close%></table>4.3.6.ASP與ADO的連接上面的例子table.asp是顯示一個數(shù)據(jù)庫表中的指定內(nèi)容,如果要顯示數(shù)據(jù)庫表中的所有字段,就要用到數(shù)據(jù)集RecordSet的相關屬性來獲得其字段數(shù)、字段名等信息,然后逐條獲取記錄并顯示。例子程序tables.asp是以表格的形式來顯示一個表格(asp)的所有字段信息。

4.3.6.ASP與ADO的連接<%@Language=VBScript%><!--#includefile=include/sqlconn.inc--><tableborder=1><tr><%setrs=Conn.execute("select*fromasp")fori=0tors.fields.count-1response.write("<td>"&rs(i).name&"</td>")next%></tr><%rs.movefirstdowhilenotrs.eofresponse.write("<tr>")fori=0tors.fields.count-1response.write("<td>"&rs(i)&"</td>")nextresponse.write("</tr>")rs.movenextlooprs.closeconn.close%></table>4.3.7ASP內(nèi)置對象ASP提供了可在腳本(Script)中直接使用的內(nèi)置對象,以便更容易收集通過瀏覽器請求發(fā)送的信息、響應瀏覽器以及存儲用戶信息。ASP包括五個內(nèi)置對象:Request、Response、Server、Session、Application。Request對象的主要作用就是在服務器端接受并得到從客戶端瀏覽器提交或上傳的信息;Response對象可動態(tài)地響應客戶端的請求,并將動態(tài)生成的響應結果返回給客戶端瀏覽器;Server對象可用來創(chuàng)建服務器對象,控制服務器端腳本的執(zhí)行的時間等;Application對象與Session對象可以把信息記錄在服務器端,在網(wǎng)頁結束時保留變量的內(nèi)容,以備下次使用。ASP內(nèi)置對象的語法格式為:對象名[.集合|屬性|方法](變量)4.3.7ASP內(nèi)置對象使用Request對象可訪問任何基于HTTP請求傳遞的所有信息,包括從HTML表格用POST方法或GE方法傳遞的參數(shù)、cookie和用戶認證等,可用此對象讀取已輸入HTML表單的信息。Request對象的集合

Request對象的集合主要有如下幾種。Cookies:含有瀏覽器cookies的值。Form:含有HTML表單域中的值。QueryString:含有查詢字符串的值。ServerVariables:含有頭和環(huán)境變量中的值。Request對象4.3.7ASP內(nèi)置對象Request對象的屬性

Request.Form(“name”)[(index)|.Count]。這是接收上一頁的信息時,常會用到的一種接收方式。Form集合通過使用post方法將表單中輸入的信息發(fā)送到表單元素。其中name指定集合的表單元素的名稱;index為可選參數(shù),使用該參數(shù)可以訪問某參數(shù)中多個值中的一個,它可以是1~Request.Form(parameter).Count之間的任意整數(shù);Count是集合中元素的個數(shù)。4.3.7ASP內(nèi)置對象例如,程序4.27提供輸入信息的HTML表單頁面,并將信息提交到程序4.28的ASP頁接受處理。程序4.27:test1.html<formaction="http://localhost/Sample/Ch04/ASP/submit1.asp"method="post">yourname:<inputtpye="text"name="yourname"><br>yourpwd:<inputtype="password"name="yourpwd"><br><inputtype="submit"value="submit"></form>程序4.28:submit1.aspyournameis:<%=request.form("yourname")%><br>yourpwdis:<%=request.form("yourpwd")%>從test1.html頁面接收“yourname”和“yourpwd”的輸入值,并通過yourname和yourpwd兩個表單元素,將這兩個頁面進行了關聯(lián)。在test1.html中動態(tài)輸入的yourname和yourpwd,在submit1.asp中則進行相應的動態(tài)顯示。這就是接收、提取并顯示信息的全過程。4.3.7ASP內(nèi)置對象如果要動態(tài)獲取HTML表單中的所有元素的值,則需要使用循環(huán)來檢索表單中的元素。實現(xiàn)過程如程序4.29所示。程序4.29:submit2.asp<%foreachiinrequest.form%><%=i%>:<%=request.form(i)%><br><%next%>

該例采用了for循環(huán)將HTML頁面表單所有的Form標簽信息進行接收并顯示,當表單頁的元素很多時,可以非??旖莸爻鰜斫Y果。4.3.7ASP內(nèi)置對象Request.QueryString(variable)[(index)|.Count]。

Request.QueryString也可以接收表單的值,表單遞交時采用什么方法取決于提交時使用的參數(shù),當采用post參數(shù)時就用Request.Form,否則當采用get時就采用Request.QueryString。其特色在于Request.QueryString能檢索并接收HTTP查詢字符串中變量的值,而HTTP查詢字符串則是由問號(?)后的值指定的。通過發(fā)送表格或由用戶在其瀏覽器的地址欄中輸入查詢也可以生成查詢字符串。將程序4.27中的post改為get,相應地將程序4.28中的request.form改為Request.QueryString,可達到同樣的效果。4.3.7ASP內(nèi)置對象Request.ServerVariables(“xxx”)。ServerVariables對象包含了服務器的環(huán)境變量??梢圆捎胒or循環(huán)進行遍歷,查看所有的服務器環(huán)境變量。程序4.30:Server1.asp<%foreachiinrequest.servervariables%><%=i%>:<%=request.servervariables(i)%><hr><%Next%>4.3.7ASP內(nèi)置對象Response.Write()

Response對象中Write方法是使用最頻繁的一個了,其作用是將指定的字符串寫到當前的HTTP輸出。Response.Write后面為所顯示的信息,書寫的字符串信息或者HTML代碼標記必須用引號,而ASP本身的函數(shù)或變量則不需要。并且,無論字符串信息、HTML標記、函數(shù)還是變量之間進行連接都是采用符號“&”。程序4.31:Write.asp<%response.write("我正在學習ASP"&"<br>")Randomizeresponse.write("任意數(shù)是:"&rnd()&"<br>")%>Response對象4.3.7ASP內(nèi)置對象

Response.EndResponse對象的End方法使Web服務器停止處理腳本并返回當前結果,文件中剩余的內(nèi)容將不被處理。

Response.RedirectRedirect方法是讓瀏覽器立即重定向到程序指定的URL地址。使用格式如下:<%Response.Redirect(URL)%>例如:<%Response.Redirect("")%>4.3.7ASP內(nèi)置對象ASP對象除了對象方法外,還有對象屬性。對象的屬性類似于變量,其含義明確、使用簡單。這里只列出其主要屬性和含義,如表4.7所示。屬性含義舉例Buffer緩存一個ASP值為trueorfalseCacheControl由代理服務器控制緩存值為trueorfalseCharSet用指定字符集來設置響應客戶端的文件字符編碼<%Response.charset="big5"%>ContentType規(guī)定響應的內(nèi)容類型<%Response.ContentType="text/HTML"%>Expires瀏覽器用相對時間控制緩存<%Response.Expires=0%>ExpiresAbsolute瀏覽器用絕對時間控制緩存<%Response.ExpiresAbsolute=#Dec12,2006#%>Status設置服務器要響應的狀態(tài)行<%Response.Status="401Unauthorized"%>4.3.7ASP內(nèi)置對象Server對象可在服務器上使用不同實體函數(shù),如在時間到達前控制腳本執(zhí)行的時間。還可用來創(chuàng)建其他對象。該對象的方法主要有如下幾種。CreateObject:創(chuàng)建一個對象實

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論