幾年以前,業(yè)界在動(dòng)態(tài)主頁發(fā)布方面唯一的渠道是CGI(Common Ga teway Interface) 模式。隨后出現(xiàn)的 ISAPI、NSAPI和 JDBC等技術(shù)方案雖較CGI進(jìn)步,但從企業(yè)網(wǎng)(Intranet )的技術(shù)現(xiàn)實(shí)來衡量,這些方案仍不適用于進(jìn)行快速開發(fā)、及時(shí)維護(hù)和大面積 的技術(shù)普及。ASP技術(shù)的出現(xiàn),使動(dòng)態(tài)交互式Web主頁設(shè)計(jì)成為一件輕松愉快的工作。只要幾行腳本語句,就能將后臺的數(shù)據(jù)庫信息發(fā) 布到Internet/Intranet上, 在編程和網(wǎng)頁腳本的可讀性方面大大優(yōu)于傳統(tǒng)的技術(shù)方案。 ASP是 Active Server Pages(動(dòng)態(tài)服務(wù)器主頁)的縮寫,它是一個(gè)服務(wù)器端的腳本環(huán)境,在站點(diǎn)的Web服務(wù)器上解釋腳本,可產(chǎn) 生并執(zhí)行動(dòng)態(tài)、交互式、高效率的站點(diǎn)服務(wù)器應(yīng)用程序。ASP可以勝任基于微軟Web服務(wù)器的各種動(dòng)態(tài)數(shù)據(jù)發(fā)布。 ASP方法與傳統(tǒng)靜態(tài)主頁的區(qū)別 把信息系統(tǒng)納入Internet/Intranet 的框架之后,首先要解決的問題是通過網(wǎng)頁訪問后臺數(shù)據(jù)庫信息。所有應(yīng)用程序都被分割 為頁面的形式,用戶的交互操作是以提交表單等方式來實(shí)現(xiàn)的,這就要求Web 站點(diǎn)具有很強(qiáng)的動(dòng)態(tài)數(shù)據(jù)發(fā)布能力。然而,目前Web的服 務(wù),仍以提供" 靜態(tài)"主頁內(nèi)容為主。所謂"靜態(tài)",指的就是站點(diǎn)的主頁內(nèi)容是"固定不變"的,無法根據(jù)用戶的需求和實(shí)際情況作出相 應(yīng)的變化。當(dāng)瀏覽器通過Internet的HTTP協(xié)議向站點(diǎn)的Web服務(wù)器申請主頁時(shí),站點(diǎn)服務(wù)器就會將已設(shè)計(jì)好的靜態(tài)的HTML文件傳送 給瀏覽器。若要更新主頁的內(nèi)容, 只能用非在線的手動(dòng)方式更新HTML的文件數(shù)據(jù)。 ASP所設(shè)計(jì)出的是動(dòng)態(tài)主頁,可接收用戶提交的信息并作出反應(yīng), 其中的數(shù)據(jù)可隨實(shí)際情況而改變,無須人工對網(wǎng)頁文件進(jìn)行更 新即可滿足應(yīng)用需要。例如:當(dāng)在瀏覽器上填好表單并提交HTTP請求時(shí),可以要求在站點(diǎn)服務(wù)器上執(zhí)行一個(gè)表單所設(shè)定的應(yīng)用程序, 而不只是一個(gè)簡單的HTML文件。該應(yīng)用程序分析表單的輸入數(shù)據(jù),根據(jù)不同的數(shù)據(jù)內(nèi)容將相應(yīng)的執(zhí)行結(jié)果(通常是數(shù)據(jù)庫查尋的結(jié)果 集)以HTML的格式傳送給瀏覽器。數(shù)據(jù)庫的數(shù)據(jù)可以隨時(shí)變化,而服務(wù)器上執(zhí)行的應(yīng)用程序卻不必更改,客戶端得到的網(wǎng)頁信息會始終保持新鮮的魅力。 ASP的工作原理和配置 如圖所示,當(dāng)用戶申請一個(gè)*.asp主頁時(shí),Web服務(wù)器響應(yīng)該HTTP請求,調(diào)用ASP引擎,解釋被申請文件。當(dāng)遇到任何與ActiveX Scripting 兼容的腳本(如VBScript和JScript)時(shí),ASP引擎會調(diào)用相應(yīng)的腳本引擎進(jìn)行處理。若腳本指令中含有訪問數(shù)據(jù)庫的請 求,就通過ODBC與后臺數(shù)據(jù)庫相連,由數(shù)據(jù)庫訪問組件執(zhí)行訪庫操作。ASP 腳本是在服務(wù)器端解釋執(zhí)行的,它依據(jù)訪庫的結(jié)果集自動(dòng) 生成符合HTML語言的主頁, 去響應(yīng)用戶的請求。所有相關(guān)的發(fā)布工作由Web服務(wù)器負(fù)責(zé)。圖1 Active Server Pages工作原理圖 有必要注意訪庫的具體運(yùn)作細(xì)節(jié)。當(dāng)遇到訪庫的腳本命令時(shí),ASP 通過ActiveX組件ADO(ActiveX Data Objects)與數(shù)據(jù)庫對 話(ADO是建立在微軟新的數(shù)據(jù)庫API,即OLE DB之上的,目前的OLE DB通過ODBC引擎與現(xiàn)存的ODBC數(shù)據(jù)庫交互,進(jìn)一步的OLE DB版本 將直接與數(shù)據(jù)庫打交道,不再通過ODBC引擎),并將執(zhí)行結(jié)果動(dòng)態(tài)生成一個(gè)HTML 頁面來返回服務(wù)器端,以響應(yīng)瀏覽器的請求。在用戶 端瀏覽器所見到的是純HTM L表現(xiàn)的畫面,例如用表格來表現(xiàn)的后臺數(shù)據(jù)庫表中的字段內(nèi)容。由于 ASP結(jié)合了腳本語言,可以通過編 程訪問Acti veX組件,并且具有現(xiàn)場自動(dòng)生成HTML的能力,所以它成為建立動(dòng)態(tài)Web站點(diǎn)的有效工具。 在結(jié)構(gòu)關(guān)系上,ASP是通過ODBC與數(shù)據(jù)庫打交道。因此,向上層可兼容各類數(shù)據(jù)庫系統(tǒng)。而對于下層,ASP 產(chǎn)生的HTML 對客戶端 的瀏覽器又有廣泛的適應(yīng)性。但ASP對Web 服務(wù)器本身有所挑剔,這看起來似乎是一種缺陷,而實(shí)際上也許是一種商業(yè)策略——它只 支持微軟各種操作系統(tǒng)下的Web 服務(wù)器,它們的最低版本是: ·Windows NT Server 4.0:MicrosoftⅡS(Internet Informatio n Server)3.0; ·Windows NT Workstation 4.0:Microsoft Peer Web Services 3.0; ·Windows 95:Microsoft PWS(Personal Web Server)1.0 ,中文 Win95應(yīng)配中文的PWS。 ASP的安裝分為Windows NT和Windows 95兩種情況。對于NT ,IIS 及ActiveX Server Pages都包含在Service Pack 3中;對 于Win95,可使用Visual Studio 服務(wù)器構(gòu)件下的ActiveX Server Pages安裝選項(xiàng)。安裝成功之后,在程序管理器中會找到一個(gè) ActiveX Se rver Pages Roadmap主頁,引導(dǎo)你學(xué)習(xí)和使用ASP。 ASP的特點(diǎn)與功能 從軟件的技術(shù)層面看,ASP有如下的特點(diǎn): 1. 無需編譯ASP腳本集成于HTML當(dāng)中,容易生成,無需編譯或鏈接即可直接解釋執(zhí)行。 2. 易于生成使用常規(guī)文本編輯器(如WINDOWS下的記事本),即可進(jìn)行*.asp頁面的設(shè)計(jì)。若從工作效率來考慮,不妨選用具有 可視化編輯能力的Visual InterDev。 3. 獨(dú)立于瀏覽器用戶端只要使用可解釋常規(guī)HTML碼的瀏覽器, 即可瀏覽ASP所設(shè)計(jì)的主頁。ASP腳本是在站點(diǎn)服務(wù)器端執(zhí)行 的,用戶端的瀏覽器不需要支持它。因此,若不通過從服務(wù)器下載來觀察*.asp 主頁,在瀏覽器端見不到正確的頁面內(nèi)容。 4. 面向?qū)ο笤贏SP腳本中可以方便地引用系統(tǒng)組件和ASP的內(nèi)置組件,還能通過定制 ActiveX Server Component(ActiveX 服務(wù)器組件)來擴(kuò)充功能。 5. 與任何ActiveX scripting 語言兼容除了可使用VBScript 和JScript語言進(jìn)行設(shè)計(jì)外,還可通過Plug-in的方式,使用 由第三方所提供的其它scripting 語言。 6. 源程序碼不會外漏ASP腳本在服務(wù)器上執(zhí)行,傳到用戶瀏覽器的只是ASP執(zhí)行結(jié)果所生成的常規(guī)HTML碼,這樣可保證辛辛苦 苦編寫出來的程序代碼不會被他人盜取。 從應(yīng)用的層面看,ASP有如下的功能: 1. 處理由瀏覽器傳送到站點(diǎn)服務(wù)器的表單輸入。 2. 訪問和編輯服務(wù)器端的數(shù)據(jù)庫表。使用瀏覽器即可輸入、更新和刪除站點(diǎn)服務(wù)器的數(shù)據(jù)庫中的數(shù)據(jù)。 3. 讀寫站點(diǎn)服務(wù)器的文件,實(shí)現(xiàn)訪客計(jì)數(shù)器、座右銘等功能。 4. 提供廣告輪播器、取得瀏覽器信息、URL表管理等內(nèi)置功能。 5. 由cookies讀寫用戶端的硬盤文件,以記錄用戶的數(shù)據(jù)。 6. 可以實(shí)現(xiàn)在多個(gè)主頁間共享信息,以開發(fā)復(fù)雜的商務(wù)站點(diǎn)應(yīng)用程序。 7. 使用VBScript或JScript等簡易的腳本語言,結(jié)合HTML碼,快速完成站點(diǎn)的應(yīng)用程序。通過站點(diǎn)服務(wù)器執(zhí)行腳本語言,產(chǎn)生或 更改在客戶端執(zhí)行的腳本語言。 8. 擴(kuò)充功能的能力強(qiáng),可通過使用Visual Basic、Java、Visual C ++ 等多種程序語言制作ActiveX Server Component以 滿足自己的特殊需要。 ADO訪庫的技術(shù)實(shí)現(xiàn)方法 ADO(ActiveX Data Objects)是一組優(yōu)化的訪問數(shù)據(jù)庫專用對象集,為ASP提供了完整的站點(diǎn)數(shù)據(jù)庫訪問解決方案。它可作用于 服務(wù)器端,以提供含有數(shù)據(jù)庫信息的主頁內(nèi)容。通過執(zhí)行SQL命令,讓用戶在瀏覽器畫面中輸入、更新和刪除站點(diǎn)服務(wù)器的數(shù)據(jù)庫信息。 ADO使用內(nèi)置的RecordSets對象作為數(shù)據(jù)的主要接口。ADO可使用 VBScript、JScrip t語言來控制對數(shù)據(jù)庫的訪問,以及查詢 結(jié)果的輸出顯示。 ADO可連接多種支持ODBC的數(shù)據(jù)庫,如SQL Server、Oracle、Info rmix等。 在使用時(shí),首先需在控制面板的ODBC中建立相應(yīng)的DSN(數(shù)據(jù)源名) 。要選擇系統(tǒng)數(shù)據(jù)源名,指定所用的驅(qū)動(dòng)程序,如"SQL Server",在數(shù)據(jù)來源名稱中輸入DSN名,并選定服務(wù)器和數(shù)據(jù)庫。 使用ADO訪問數(shù)據(jù)庫的設(shè)計(jì)要領(lǐng)是掌握ASP腳本的幾個(gè)典型語句, 它們是: 1. 定義數(shù)據(jù)庫組件。有兩種定義方法: ·使用"Server.CreateObject"建立連接的對象。 Set Conn=Server.CreateObject("ADODB.Connection") ·使用<OBJECT>標(biāo)記建立連接的對象。 <OBJECT RUNAT=Server ID=Conn CLASSID="Clsid:00000293-000 0-0010-8000-00AA 006D2EA4"></OBJECT> 2. 用"Open"打開待訪的數(shù)據(jù)庫: Conn.Open "DSN名稱" 3. 設(shè)定SQL語句,使用"Execute"命令,即可開始執(zhí)行訪問數(shù)據(jù)庫的動(dòng)作: SetRS=Conn.Execute("SQL語句") 其中RS為結(jié)果集對象(RecordSets)。 4. 利用RecordSets對象所提供的屬性顯示查詢結(jié)果,如下例將查詢結(jié)果顯示于一個(gè)表格中:(其中<%和%>是ASP腳本的專用定界符) <TABLE BORDER=1> <TR> <% For i =0 to RS.Fields.Count -1 %> <TD><% = RS(i).Name %></TD> <% Next %> </TR> <% Do While Not RS.EOF %> <TR> <% For i =0 to RS.Fields -1 %> <TD><% = RS(i) %></TD> <% Next %> </TR> <% RS.MoveNext Loop %> </TABLE> 5. 關(guān)閉結(jié)果集對象,斷開與數(shù)據(jù)庫的連接: RS.Close Conn.Close ASP訪問后臺數(shù)據(jù)庫運(yùn)作機(jī)制如圖2所示。圖2 ASP訪問后臺數(shù)據(jù)庫運(yùn)作機(jī)制 一個(gè)發(fā)布后臺MS SQL Server樣本庫pubs中 authors表的完整代碼如下(其中<%和%> 是ASP腳本的專用定界符):<html> <head>< title>Authors Listing</title></h ead><body><p>Authors Listing</font><% Set Connection=Server.CreateObje ct("ADOD B.Connection") Connection.Open "authors" Set RS=Connection.Execute("SELECT * FROM authors") %> </p> <table BORDER="1"> <TR> <% For i=0 to RS.Fields.Count-1 %> <TD><% =RS(i).Name %></TD> <% NEXT %> </TR> <% Do While Not RS.EOF %> <TR> <% For i=0 to RS.Fields.Count-1 %> <TD><% =RS(i) %></TD> <% Next %> </TR> <% RS.MoveNext Loop RS.Close Connection.Close %> </table> </body> </html> ASP與組件對象的使用 在利用ASP技術(shù)進(jìn)行動(dòng)態(tài)Web開發(fā)的時(shí)候,應(yīng)遵循這樣一個(gè)原則:即 ASP的服務(wù)器端腳本必須與微軟倡導(dǎo)的組件對象( Component Object Model )配合使用才能開發(fā)出具有實(shí)用價(jià)值的信息產(chǎn)品。ASP腳本相當(dāng)于一種粘合劑,把一個(gè)個(gè)具有特定功能的 組件對象粘合在一起,以形成最終的軟件產(chǎn)品。這一軟件制作的工藝思想類似于硬件工廠生產(chǎn)板卡的過程,那一個(gè)個(gè)的組件對象就相 當(dāng)于集成電路的芯片,而ASP腳本只是焊接芯片的焊接劑,由此可見組件對象起著核心作用。 組件對象模型COM是微軟提出的一種基于二進(jìn)制的Windows軟件標(biāo)準(zhǔn),它是由OLE 技術(shù)逐漸發(fā)展而來的。在使用不同語言工具寫 成的組件對象之間,依據(jù)COM 的標(biāo)準(zhǔn)可以進(jìn)行交互。COM是技術(shù)概念和標(biāo)準(zhǔn), 其商業(yè)概念的稱謂則使用ActiveX。 上文提到的ADO就是系統(tǒng)提供的用于訪問后臺數(shù)據(jù)庫的組件。此外,ASP本身還提供了五個(gè)內(nèi)置的對象。這五個(gè)內(nèi)置對象可被ASP 腳本直接使用,它們是: 1Request取得用戶信息 2Response 傳遞信息給用戶 3Server 提供訪問服務(wù)器的方法和屬性 4Application在一個(gè)應(yīng)用程序的多個(gè)主頁之間保留和使用某些共同的信息 5Session在一個(gè)用戶的多個(gè)主頁之間保留和使用某些共同的信息 其中,使用內(nèi)置對象1、2可實(shí)現(xiàn)Web的交互功能,使用內(nèi)置對象4、 5可解決具有協(xié)作機(jī)制的應(yīng)用問題。 ASP的一大特色,是可以用來編寫具有協(xié)作機(jī)制的應(yīng)用程序,在多個(gè)用戶的多個(gè)主頁之間共享信息。使用內(nèi)置的Application和 Session 對象可實(shí)現(xiàn)這些功能。 Application對象保存一個(gè)應(yīng)用程序共同的信息,使用此應(yīng)用程序的所有用戶都可以共同分享。為防止其被多個(gè)用戶同時(shí)更改, 提供loc k和unlock方法來實(shí)現(xiàn)互斥,例如: Application.lock 禁止其他用戶更改Application的信息; Application.unlock 允許其他用戶更改Application的信息。 Session對象比Application對象的使用外延范圍小,它保存僅屬于一個(gè)用戶的一個(gè)應(yīng)用程序的信息。ASP的應(yīng)用程序可以只有 一個(gè)首頁,也可以有多個(gè)主頁文件,所有的文件均位于一個(gè)虛擬路徑下。Sess ion對象可讓同一個(gè)用戶在多個(gè)主頁之間共享信息。當(dāng) 用戶第一次在一個(gè)應(yīng)用程序中申請一個(gè)*.asp主頁時(shí),ASP將為該用戶分配一個(gè)Sessi onID號,它將唯一地標(biāo)識用戶的身份,從而能將 同一應(yīng)用程序的不同用戶區(qū)分開來。 根據(jù)需要還可以自行定制具有某些特色的組件對象,以完成特殊的任務(wù)。用VisualB asic、Visual C++、Delphi和 Java等語 言都可以編寫。自制的組件對象分成兩類: 一是由類打包而成的*.dll文件,經(jīng)注冊器注冊后,在ASP腳本中可通過"Set 對象名 = 類名"來引用。對象在這種使用過程中是 在服務(wù)器的后臺運(yùn)行的,其運(yùn)行的結(jié)果通過系統(tǒng)自動(dòng)生成的HTML作用到前端瀏覽器。 二是生成*.ocx文件,一般用作可視化的對象ActiveX,可直接將其嵌入*.asp主頁中,在頁面中插入時(shí)需使用HTML語言的 <OBJECT>標(biāo)記加以引用。通常構(gòu)件制作完成并按下載的要求打包后生成*.cab文件。對象在這種使用方式下要先從服務(wù)器下載,然后 在客戶的前端瀏覽器運(yùn)行。在第一次下載時(shí)被展開成相關(guān)的*.dll和*.ocx文件進(jìn)行本地安裝及注冊。以后再使用時(shí),就可直接從本 地獲得,免去了下載之苦,這也是ActiveX優(yōu)于Java App let的地方。 從長遠(yuǎn)來看,ASP和組件對象的配合使用無疑是一種引人入勝的新技術(shù),更重要的是由此而提出了一種全新的軟件設(shè)計(jì)方法,把硬 件的工藝思想恰如其分地融合于軟件的面向?qū)ο蟮姆治、設(shè)計(jì)和施工之中, 使面向?qū)ο蟮母拍詈头椒◤墓ぞ哒Z言的層次一下子躍上 了系統(tǒng)的應(yīng)用層,在快速開發(fā)多層的客戶/服務(wù)器分布式應(yīng)用系統(tǒng)中將會產(chǎn)生極好的效果。 (出處:熱點(diǎn)網(wǎng)絡(luò))
|