王逾西
天津市財(cái)貿(mào)管理干部學(xué)院,天津 300170
在互聯(lián)網(wǎng)高速發(fā)展的今天,企業(yè)上網(wǎng)、電子商務(wù)、網(wǎng)絡(luò)查詢、網(wǎng)上股票交易等大量的信息等待處理,海量的數(shù)據(jù)需要存儲(chǔ),急需的資料尚待查詢,使網(wǎng)頁開發(fā)制作成為一個(gè)新型的課題。人們不再滿足靜態(tài)網(wǎng)頁,開始廣泛應(yīng)用交互動(dòng)態(tài)網(wǎng)頁,由此網(wǎng)頁制作的技術(shù)發(fā)展到了一個(gè)很高的層次,這些動(dòng)態(tài)網(wǎng)頁的出現(xiàn)使得WEB頁面可以方便地傳播動(dòng)態(tài)信息。在目前,比較流行的有ASP、PHP和JSP程序設(shè)計(jì)語言所編輯的動(dòng)態(tài)頁面。當(dāng)然這些動(dòng)態(tài)網(wǎng)頁的實(shí)現(xiàn),是以大量數(shù)據(jù)資源為基礎(chǔ)的。
動(dòng)態(tài)網(wǎng)頁開發(fā)技術(shù)包含客戶端動(dòng)態(tài)網(wǎng)頁開發(fā)和服務(wù)器端的動(dòng)態(tài)網(wǎng)頁開發(fā),客戶端的動(dòng)態(tài)網(wǎng)頁一般是利用Javascript語言進(jìn)行開發(fā);服務(wù)器端的網(wǎng)頁開發(fā)可以利用CGI、ASP、PHP和JSP腳本語言進(jìn)行開發(fā),一般所說的動(dòng)態(tài)網(wǎng)頁開發(fā)指服務(wù)器端的動(dòng)態(tài)網(wǎng)頁開發(fā)。
動(dòng)態(tài)網(wǎng)頁開發(fā)技術(shù)一般是通過腳本語言進(jìn)行編程在服務(wù)器端調(diào)用后臺(tái)數(shù)據(jù)庫,根據(jù)客戶的不同請求,把相應(yīng)的數(shù)據(jù)庫數(shù)據(jù)以HTML的格式發(fā)送給客戶。由于對(duì)網(wǎng)站信息的更新主要是通過數(shù)據(jù)庫完成,網(wǎng)頁內(nèi)容的添加、修改、刪除等,都建立在前臺(tái)和后臺(tái)數(shù)據(jù)庫連接的基礎(chǔ)上。所以連接數(shù)據(jù)庫在網(wǎng)站制作過程中占有很重要的位置。
動(dòng)態(tài)網(wǎng)頁技術(shù)的核心技術(shù)是數(shù)據(jù)庫連接技術(shù)和數(shù)據(jù)庫訪問技術(shù)。動(dòng)態(tài)網(wǎng)頁開發(fā)技術(shù)與數(shù)據(jù)庫緊密相聯(lián),必須依靠數(shù)據(jù)庫才能正常運(yùn)行。更新網(wǎng)頁信息都必須從數(shù)據(jù)庫中讀取,每打開一個(gè)頁面就讀取數(shù)據(jù)庫一次,訪問人多時(shí)數(shù)據(jù)調(diào)用將使速度變得緩慢,并對(duì)服務(wù)器產(chǎn)生極大的運(yùn)行壓力,會(huì)增加服務(wù)器的負(fù)擔(dān)。如果后臺(tái)數(shù)據(jù)庫發(fā)生故障,整個(gè)網(wǎng)站馬上癱瘓。因此一些訪問量大、規(guī)模大以及對(duì)穩(wěn)定性要求高的網(wǎng)站都會(huì)采用動(dòng)態(tài)的網(wǎng)頁技術(shù)。
ASP(Active Server Page)是一個(gè)Web服務(wù)器的開發(fā)環(huán)境,利用它可以產(chǎn)生和運(yùn)行動(dòng)態(tài)的、交互的、高性能的Web服務(wù)應(yīng)用程序。以ASP方式訪問數(shù)據(jù)庫是ASP功能的一部分。主要是在ASP的基本原理的基礎(chǔ)上進(jìn)行擴(kuò)展,每當(dāng)Web服務(wù)器接收到一個(gè)ASP網(wǎng)頁的HTTP(超文本傳輸協(xié)議)請求時(shí),就立即解釋ASP中的程序代碼,進(jìn)而生成ADO以SQL方式向ODBC發(fā)出操作指令,達(dá)到存取數(shù)據(jù)庫的目的。由ODBC對(duì)數(shù)據(jù)庫進(jìn)行相應(yīng)操作,并將結(jié)果返回給ADO,由程序生成該部分的HTML文件,經(jīng)Web服務(wù)器將所有的HTML文件送到瀏覽器,然后由瀏覽器負(fù)責(zé)對(duì)HTML文件進(jìn)行解釋,并在瀏覽器窗口顯示結(jié)果。由于ASP所有的程序都在Web服務(wù)器端執(zhí)行,這樣就減輕了客戶端瀏覽器的負(fù)擔(dān),大大提高了交互的速度。
ASP本身并不是一種腳本語言,它只是為嵌入在HTML頁面中的腳本程序提供了運(yùn)行的環(huán)境。使用普通的文本編輯軟件即可進(jìn)行頁面的編輯與設(shè)計(jì)。ASP程序的控制部分,是使用VBScript,JavaScript等腳本語言來設(shè)計(jì)的,當(dāng)執(zhí)行ASP程序時(shí),腳本程序?qū)⒁徽酌畎l(fā)送給腳本解釋器,由腳本解釋器進(jìn)行翻譯并將其轉(zhuǎn)換成服務(wù)器所能執(zhí)行的命令。無須編譯,可以直接解釋執(zhí)行。ASP所提供的腳本通行環(huán)境可支持多種腳本語言如VBScript、JavaScript、Perl等,與多種語言相容,給ASP提供了廣泛的發(fā)揮余地。
ASP所設(shè)計(jì)出的是動(dòng)態(tài)網(wǎng)頁,可接收用戶提交的信息并作出反應(yīng),其中的數(shù)據(jù)可隨實(shí)際情況而改變,無須人工對(duì)網(wǎng)頁文件進(jìn)行更新即可滿足應(yīng)用需要。
在數(shù)據(jù)處理能力中,數(shù)據(jù)一般存儲(chǔ)在特定的數(shù)據(jù)庫系統(tǒng)中,其中的數(shù)據(jù)庫有SQLCERVER,Access以及Oracle等,而ADO(Active Data Object)對(duì)象是數(shù)據(jù)庫系統(tǒng)和ASP之間數(shù)據(jù)傳送的橋梁,提供了開發(fā)數(shù)據(jù)庫功能網(wǎng)頁所需要的應(yīng)用程序接口,可以利用ADO對(duì)象直接訪問數(shù)據(jù)庫。所以數(shù)據(jù)庫網(wǎng)頁結(jié)構(gòu)是由ASP、ADO對(duì)象以及數(shù)據(jù)庫系統(tǒng)組成的。其結(jié)構(gòu)如圖。
由圖中可知計(jì)算機(jī)上ASP通過ADO對(duì)象以不同的方式作特定的數(shù)據(jù)庫系統(tǒng),在這里ADO應(yīng)用程序接口起到了橋梁的作用。
ODBC(Open Database Connectivity,開放數(shù)據(jù)庫互連)是微軟公司開放服務(wù)結(jié)構(gòu) (WOSA,Windows Open Services Architecture)中有關(guān)數(shù)據(jù)庫方面的一個(gè)組成部分,它建立了一組規(guī)范。該規(guī)范為應(yīng)用程序提供了一組對(duì)數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)API和基于動(dòng)態(tài)鏈接庫的運(yùn)行支持環(huán)境。開發(fā)ODBC接口可以創(chuàng)建與不同數(shù)據(jù)庫系統(tǒng)進(jìn)行交互的應(yīng)用程序。在使用ODBC開發(fā)的數(shù)據(jù)庫應(yīng)用程序時(shí),應(yīng)用程序調(diào)用的是標(biāo)準(zhǔn)的ODBC函數(shù)和SQL語句,數(shù)據(jù)庫的低層操作由各個(gè)數(shù)據(jù)庫的驅(qū)動(dòng)程序完成,而對(duì)用戶來說,ODBC的驅(qū)動(dòng)程序屏蔽了不同數(shù)據(jù)庫系統(tǒng)間的差異,使得用ODBC編寫的數(shù)據(jù)庫應(yīng)用程序可以運(yùn)行在不同的數(shù)據(jù)庫環(huán)境下。這樣應(yīng)用程序就具有很好可移植性和適應(yīng)性,從而徹底克服了傳統(tǒng)數(shù)據(jù)庫的缺陷。
對(duì)于應(yīng)用者來說,使用方法是通過操作系統(tǒng)提供的ODBC數(shù)據(jù)源管理器來定義數(shù)據(jù)源名稱即DSN,然后在應(yīng)用程序中使用DSN來連接和訪問具體的數(shù)據(jù)庫。
在ASP中建立數(shù)據(jù)庫的訪問,需要通過ADO來完成。ADO是微軟公司提供的面向?qū)ο蟮?,與語言無關(guān)的通用數(shù)據(jù)庫訪問接口。利用ADO可以將任何數(shù)據(jù)庫訪問結(jié)果連接到Web頁面。ADO要想存取數(shù)據(jù)庫的內(nèi)容,首先要求系統(tǒng)必須安裝數(shù)據(jù)庫驅(qū)動(dòng)程序,否則,ADO無法與數(shù)據(jù)庫建立連接。其如圖所示。
ADO總共有10個(gè)對(duì)象以及4個(gè)集合。一組使用ADO訪問數(shù)據(jù)庫的ASP腳本程序應(yīng)用使用Connection對(duì)象建立并管理與遠(yuǎn)程數(shù)據(jù)庫的連接;使用Command對(duì)象提供靈活的查詢;而使用Recordset對(duì)象訪問數(shù)據(jù)庫查詢所返回的結(jié)果。這三者是ADO中最基本也最核心的對(duì)象,三者之間相互聯(lián)系、相互依存。ADO通過與ODBC的鏈接,可以鏈接各類的數(shù)據(jù)庫。
JSP(Java Server Pages)實(shí)現(xiàn)了動(dòng)態(tài)頁面與靜態(tài)頁面的分離、脫離了硬件平臺(tái)的束縛,以編譯后運(yùn)行等方式,大大提高了其執(zhí)行效率而逐漸成為因特網(wǎng)上的主流開發(fā)工具。JSP應(yīng)當(dāng)被看作是一種腳本語言,然而作為一種腳本語言,JSP又顯得過于強(qiáng)大了,在JSP中幾乎可以使用全部的Java類,具有Java技術(shù)的所有好處,包括健壯的存儲(chǔ)管理和安全性。
JSP執(zhí)行速度快。JSP頁面在執(zhí)行時(shí)是編譯式,而不是解釋式的。JSP頁面一般是翻譯為Servlet的Java源文件,再經(jīng)編譯器譯為Servlet的Class文件,其Java代碼一直駐留于服務(wù)器內(nèi)存中,在Java虛擬機(jī)上解釋執(zhí)行。每次客戶機(jī)向服務(wù)器請求這一個(gè)JSP文件的時(shí)候,服務(wù)器檢查是否有改變,若沒有就直接執(zhí)行Servlet,其效率相當(dāng)高。與Servlet相比,JSP能提供所有Servlet功能。
JSP對(duì)數(shù)據(jù)庫的訪問主要通過JDBC(Java Data Base Connectivity)的技術(shù)來實(shí)現(xiàn)。JDBC不使用服務(wù)器端的數(shù)據(jù)源,只要有JDBC驅(qū)動(dòng)程序,Java就可以訪問數(shù)據(jù)庫了。如果一個(gè)特定的數(shù)據(jù)庫沒有JDBC驅(qū)動(dòng)程序,而只支持ODBC的數(shù)據(jù)庫,可以通過JDBC—ODBCBridge將JDBC調(diào)用轉(zhuǎn)化為ODBC調(diào)用來實(shí)現(xiàn)訪問,如圖所示。所有的Java編譯器都帶有一個(gè)免費(fèi)的JDBC—ODBCBridge,理論上可以訪問常見的數(shù)據(jù)庫??梢钥缙脚_(tái),在其上面的應(yīng)用(Pure Java)可以在任何操作系統(tǒng)、應(yīng)用服務(wù)器上運(yùn)行。JSP可以和任何與JDBC兼容的數(shù)據(jù)庫相連,訪問數(shù)據(jù)庫,而且還可以使用JDBC—ODBCBridge訪問基于ODBC的數(shù)據(jù)庫。這也就意味著JSP可以比ASP(只支持ODBC數(shù)據(jù)庫)訪問更多類型的數(shù)據(jù)庫。
JSP是基于平臺(tái)和服務(wù)器的相互獨(dú)立的,并且JSP標(biāo)簽可擴(kuò)展性和JSP跨平臺(tái)組件的重用性將使得JSP為Web數(shù)據(jù)庫應(yīng)用提出更具競爭力的解決方案。JSP技術(shù)依附于一次寫入,之后,可以運(yùn)行在任何具有符合JavaTM語法結(jié)構(gòu)的環(huán)境。取而代之過去依附于單一平臺(tái)或開發(fā)商,JSP技術(shù)能夠運(yùn)行在任何WEB服務(wù)器上并且支持來自多家開發(fā)商提供的各種各樣工具包。
PHP(Personal Home Page Tools)是一種 HTML內(nèi)嵌式跨平臺(tái)的服務(wù)器端腳本語言。PHP可在Unix、Linux的Web服務(wù)器上正常運(yùn)行,還支持IIS、Apache等通用Web服務(wù)器,用戶更換平臺(tái)時(shí)無需變換PHP代碼即可使用,用戶只需要很少的編程知識(shí)就能使用PHP建立一個(gè)真正交互的Web站點(diǎn)。它具有安全、易擴(kuò)展、執(zhí)行速度快、免費(fèi)、簡單易學(xué)和良好的穩(wěn)定性等優(yōu)點(diǎn)。PHP最強(qiáng)大、最有意義的特性是提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫接口,支持大范圍的數(shù)據(jù)庫,可直接與Informix、Oracle、Sybase、PostgreSQL、MySQL、Access等直接連接,與數(shù)據(jù)庫連接方便,兼容性強(qiáng),擴(kuò)展性強(qiáng)。數(shù)據(jù)庫并非由客戶端直接訪問,而是通過服務(wù)器上PHP代碼寫成的業(yè)務(wù)邏輯連接。可以進(jìn)行面向?qū)ο缶幊?,書寫一個(gè)支持?jǐn)?shù)據(jù)庫的Web頁面非常的簡單。PHP還支持ODBC接口的數(shù)據(jù)庫,可順利地對(duì)其操作。PHP可以編譯成具有與許多數(shù)據(jù)庫相連接的函數(shù),還可以自己編寫外圍的函數(shù)間接存取數(shù)據(jù)庫。但PHP提供的數(shù)據(jù)庫接口支持彼此不統(tǒng)一,比如對(duì)Oracle,MySQL,Sybase的接口,彼此都不一樣,這也是PHP的一個(gè)弱點(diǎn)。
PHP提供了類和對(duì)象?;赪eb的編程工作非常需要面向?qū)ο缶幊棠芰ΑHP支持構(gòu)造器、提取類等。
PHP的運(yùn)行,是靠它的語言解釋器來完成的,在NT下也就是PHP1.EXE,它是一個(gè)解釋器,其作用是解釋后綴為1PHP或1PHP3或1PHTML或其它的文件,根據(jù)里邊定義的程序來訪問數(shù)據(jù)庫,讀寫文件,并將執(zhí)行的結(jié)果組織成STRING返回給WEBSERVER然后當(dāng)作HTML格式的文件發(fā)送給瀏覽器讀取文件。
從總的方面來說,ASP、PHP和JSP基本上都是把腳本語言嵌入HTML文檔中,它們最主要的優(yōu)點(diǎn)是:ASP學(xué)習(xí)簡單,使用方便;PHP軟件免費(fèi),運(yùn)行成本低;JSP多平臺(tái)支持,轉(zhuǎn)換方便。JSP的真正對(duì)手是ASP和PHP以及他們的高級(jí)版本ASP.NET和PHP4。但是由于ASP局限于Windows系統(tǒng)和IIS,且在安全上還存在一些問題;PHP對(duì)組件支持不夠完善等缺陷,有理由認(rèn)為,在將來的Web開發(fā)中,中小型站點(diǎn)將出現(xiàn)JSP、ASP和PHP三分天下的局面,但對(duì)于大型的電子商務(wù)站點(diǎn),JSP和J2EE技術(shù)將成為首選。
[1]王萍萍,李曉娜.ASP+Dreamweaver動(dòng)態(tài)網(wǎng)站開發(fā)[M].北京:清華大學(xué)出版社,2008.
[2]魏善沛.Web數(shù)據(jù)庫編程與應(yīng)用[M].北京:清華大學(xué)出版社,2008.
[3]于鵬.VBScript/ASP 網(wǎng)頁設(shè)計(jì)語言教程[M].北京:北京電子工業(yè)出版社,2004.
[4]孫媛,趙明茹.動(dòng)態(tài)網(wǎng)頁與數(shù)據(jù)庫連接的實(shí)現(xiàn)方法[J].計(jì)算機(jī)時(shí)代,2009,(5).
[5]段春梅.動(dòng)態(tài)網(wǎng)頁制作技術(shù)ASP與JSP的比較[J].福建電腦,2008,(6).