李 恒 王洪肖
【摘 要】地理信息系統(tǒng)的發(fā)展需要走開放式的道路,Web GIS的發(fā)展更應根據(jù)實際情況采用當前的主流技術(shù)。比較了Web GIS的各種實現(xiàn)技術(shù),研究如何用JSP技術(shù)來實現(xiàn)Web GIS。
【關(guān)鍵詞】JSP Web GIS Java JavaBean 數(shù)據(jù)庫 服務器端 客戶端
1 Web GIS概述
Web GIS是利用互聯(lián)網(wǎng)技術(shù),完善和擴展傳統(tǒng)的地理信息系統(tǒng)功能的一門新技術(shù)。通過網(wǎng)絡(luò),GIS的功能得以擴展,真正成為一種大眾使用的工具。用戶可以瀏覽Web GIS站點中的空間數(shù)據(jù)、制作專題地圖,進行各種空間檢索和分析。與傳統(tǒng)的GIS相比,Web GIS體系結(jié)構(gòu)發(fā)生了根本性的轉(zhuǎn)變,它基于瀏覽器/服務器體系(瀏覽器、中間件服務器、數(shù)據(jù)庫服務器),三層客戶機/服務器模型(用戶界面層、中間件服務器、GIS數(shù)據(jù)層),以及Web環(huán)境,采用TCP/IP通信協(xié)議來擴大空間數(shù)據(jù)共享范圍。采用客戶端/服務器多層體系結(jié)構(gòu)提高系統(tǒng)的安全性,可重用性。在應用層采用HTTP議增強GIS的開放性。
Web GIS的發(fā)展為GIS數(shù)據(jù)與信息的獲取、發(fā)布、共享與操作開辟了廣闊的前景,和傳統(tǒng)的GIS相比,具有以下優(yōu)點:
(1)更廣泛的訪問范圍。
(2)平臺獨立。
(3)系統(tǒng)成本降低。
(4)操作簡單。
2 Web GIS的實現(xiàn)技術(shù)
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,出現(xiàn)了多種實現(xiàn)Web GIS方法,如CGI,ISAPI,Java,ASP等。
2.1基于CGI和Web API的被動式Web GIS
CGI(Common Gateway Interface)是最早用來建立動態(tài)Web資源的技術(shù),它是外部應用程序和Web服務器之間的接口標準,可讓瀏覽器與服務器之間產(chǎn)生互動的關(guān)系。基于CGI技術(shù)的Web GIS系統(tǒng)在用戶發(fā)出一個請求時,服務器把請求通過CGI轉(zhuǎn)發(fā)給后端GIS應用程序,應用程序生成的結(jié)果又通過服務器傳回客戶端。基于CGI技術(shù)實現(xiàn)Web GIS的優(yōu)勢在于服務器軟件之間的可移植性,缺陷是其瀏覽器的請求與生成的進程一一對應,它的進程通常都不在常駐系統(tǒng)內(nèi),只要有客戶需求送置,服務器就要建立一個新的進程,致使多個用戶同時訪問時,系統(tǒng)資源占用過多,執(zhí)行效率低。
Web API是建立在CGI技術(shù)之上的另一類應用程序接口,實際應用中主要有Microsoft的ISAPI。它用動態(tài)鏈接庫取代CGI程序,不會在系統(tǒng)中產(chǎn)生新的進程,資源共用,因而響應速度比CGI要高。但基于Web API的Web GIS與服務器聯(lián)系較緊,用戶發(fā)出的所有請求都在服務器端完成,客戶端僅起了一個圖形終端的作用,對服務器性能要求較高,程序移植難度大,也容易使服務器癱瘓,并且其沒有統(tǒng)一標準,通用性差。
2.2基于ASP和Java的主動式WebGIS
ASP是微軟公司推出的動態(tài)網(wǎng)頁技術(shù),可以在HTML程序碼中內(nèi)嵌VBScript或JavaScript,服務器端還需安裝適當?shù)木幾g程序引擎??蛻舳苏埱驛SP網(wǎng)頁時,ASP文件由服務器端的ASP Engine解釋執(zhí)行,源程序不會傳到瀏覽器,但它的安全性仍不是很好,必需隨時注意微軟公司的新補丁,以便更新系統(tǒng)?;贏SP的Web GIS還必須和IIS(Internet Information Server),ActiveX緊密相連,ADO(ActiveX Data Object)作為數(shù)據(jù)庫訪問控件,用它使客戶端的程序通過BC和OLE DB來操縱GIS數(shù)據(jù)。并且ASP執(zhí)行環(huán)境僅限于Microsoft Internet Information Server,Microsoft Site Server和Personal Web Server,缺乏跨平臺的特性。另一方面,每當客戶端請求ASP網(wǎng)頁時,服務器端都必須重新編譯一次,在執(zhí)行效率上略顯不足。
Java語言正是針對Internet應用而開發(fā)的編程語言,也是一種面向?qū)ο?、支持多線程、體系結(jié)構(gòu)獨立的解釋型動態(tài)語言,具有高度的安全性、可移植性和代碼重用性,它具有“一次編譯,處處運行”的效果,支持Web計算模式,能實現(xiàn)Web的數(shù)據(jù)分布和操作分布。Java的特殊性質(zhì)使它成為開發(fā)Web GIS的主流技術(shù)。它利用URL對象可以分布式訪問具有URL的數(shù)據(jù)對象,通過在客戶端下載Java Applet小程序完成GIS功能,實現(xiàn)對分布式數(shù)據(jù)的操作,但在實現(xiàn)大型GIS任務時能力受限制。
3 基于JSP技術(shù)實現(xiàn)Web GIS
3.1JSP簡介
JSP(Java Server Pages)是由Sun微系統(tǒng)公司于1999年6月推出的一種建構(gòu)在Servlet技術(shù)之上的Web技術(shù),JSP將Servlet中的HTML代碼脫離了出來,從而可以加速Web應用開發(fā)和頁面維護。在這種技術(shù)中你可以將Java代碼嵌入到HTML文件,服務器將自動為頁面創(chuàng)建一個Servlet。利用JSP可以建立跨平臺的、更加先進和安全的動態(tài)網(wǎng)站。
JSP的最大特點是將內(nèi)容的生成與顯示分離。使用JSP技術(shù),Web頁面開發(fā)人員可以使用JSP標記或小腳本來生成Web頁面上的動態(tài)內(nèi)容。生成內(nèi)容的邏輯被封裝在JSP標記和JavaBean組件中并運行于服務器端,由JSP引擎解釋執(zhí)行。
在JSP中大量的Java程序代碼可以封裝于與平臺無關(guān)的JavaBean中,而只留下極少的標記用于調(diào)用Bean,這樣就避免了代碼的混亂性。除了JavaBean外,Enterprise Java Bean (EJB)和Remote MethodInvocation (RMI)等對象都可以很容易在JSP中訪問到。
JSP使用JDBC(Java DataBase Connectivity)/JDO技術(shù)訪問數(shù)據(jù)庫,對于只有ODBC的數(shù)據(jù)庫,使用SUN公司的JDBC-ODBC橋程序來連接訪問。服務器端生成的結(jié)果以HTML或XML頁面的形式返回,保護了代碼的安全性。
JSP屬于服務器端程序設(shè)計語言,基于Web層(三層)客戶機/服務器應用模型,將用戶界面層、事物邏輯層和數(shù)據(jù)層分開來,利用Java的跨平臺性,具有一次編寫,處處運行的優(yōu)點。以服務器端調(diào)用JSP的方式來分,它的基本模型一般情況下可分兩種:一是服務器請求JSP,由JSP調(diào)用可重用的JavaBean組件來執(zhí)行任務,譬如訪問數(shù)據(jù)庫、設(shè)置屬性等。另一種是不用JavaBean,服務器只請求一個Servlet,它生成響應所要包含的動態(tài)內(nèi)容,再激活一個JSP用來表示生成的內(nèi)容。
3.2基于JSP的Web GIS
基于JSP的Web GIS由于與數(shù)據(jù)庫聯(lián)系較緊,一般采用JavaBean組件技術(shù)。JSP用Java組件JavaBean執(zhí)行確定任務和封裝對象數(shù)據(jù),JSP與JavaBean的關(guān)系就像ASP與COM的關(guān)系,COM對象常用于幫助從ASP網(wǎng)頁中分離出邏輯或計算的代碼,可以在任何允許標準對象模型的語言中引用,而JavaBean僅限于Java程序設(shè)計語言,比COM更易于開發(fā),只要通曉Java,就很容易掌握JavaBean的結(jié)構(gòu)。在ASP中使用COM對象必須在服務器上注冊,對象改變時,服務器需重新啟動,而JavaBean不需在服務器上注冊,對象改變時,只需重新啟動對象即可。
用JSP技術(shù)實現(xiàn)的Web GIS, JSP應用程序置于Web服務器端,當用戶請求JSP網(wǎng)頁時,JSP程序?qū)⒆詣铀徒oJSP引擎(JSP Engine)處理,它將程序中的Java代碼分離出來,生成Servlet,若無語法錯誤,則編譯成class文件后,載入Java VM(Java Virtual Machine)執(zhí)行(這是JSP程序的惟一一次執(zhí)行)。當客戶端有請求時,JSPEngine會同時為每一個請求產(chǎn)生一個請求對象(Request)和回應對象(Response)傳入Servlet的_JSPService ( )方法,JSP調(diào)用封裝了訪問GIS數(shù)據(jù)庫、擷取和提供內(nèi)部屬性功能的JavaBean,將請求參數(shù)傳給Bean組件,由Bean動態(tài)計算處理結(jié)果,JSP獲取相關(guān)信息后傳回HTML形式表現(xiàn)結(jié)果。這樣客戶端看到的只是轉(zhuǎn)換過的HTML文件,有效地隱藏了JSP源代碼,保證了安全性,由于JSP不需要每次請求都編譯,速度有所提高。
4 實際應用
Web GIS用JSP從Oracle數(shù)據(jù)庫中讀取數(shù)據(jù)與用戶進行交互,在客戶端下載Java Applet,實現(xiàn)地圖的發(fā)布、比例放縮、信息查詢功能。系統(tǒng)采用瀏覽器/服務器結(jié)構(gòu)模式,由瀏覽器發(fā)出請求給Web服務器(Apache/Tomcat等等),Web服務器將請求送給相應的由JSP中的Java代碼生成的Servlet,Servlet負責激活設(shè)定了相關(guān)屬性的JavaBean,由JavaBean與數(shù)據(jù)庫相連接,在服務器端進行數(shù)據(jù)的各種查詢、分析、檢索等操作,這樣每次JSP詢問JavaBean組件屬性時,JavaBean動態(tài)處理并將結(jié)果傳給瀏覽器,由瀏覽器顯示結(jié)果給用戶。
5 結(jié)束語
本文對JSP技術(shù)與Web GIS其他實現(xiàn)技術(shù)進行了介紹,由于JSP使用Java作為腳本語言,具有跨平臺性,JSP與JavaBean技術(shù)相結(jié)合,為Web GIS的開發(fā)帶來了極大的便利。實踐證明,使用JSP技術(shù)開發(fā)Web GIS優(yōu)越于以前的CGI,ASP等等技術(shù)。相信在不久的將來,JSP技術(shù)會日益成熟,并將有力推動Web GIS的發(fā)展。
參考文獻:
[1]陳俊杰,陳燦章.Web GIS技術(shù)及其實現(xiàn)方法[J].太原理工大學學報,2000,31(4):394-396.
[2]周炎坤,李滿春.Web GIS開發(fā)方法比較研究[J].計算機應用研究.
[3]戚銘堯,池天河,霍亮.Web GIS的企業(yè)級解決方案探討[C].華南師范大學學報(自然科學版),2001,7:50-55.
(作者單位:吉林農(nóng)業(yè)大學;吉林大學)