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