摘要: JSP技術是基于Java Servlet和整個Java體系的Web開發技術,利用這一技術可以建立先進、安全、快速和跨平臺的動態網站。通過網站動態頁面訪問后臺數據庫,則需要JDBC(JavaBean),而要快速地訪問后臺數據庫,就要用到數據庫連接池。
關鍵詞: JSP技術數據庫訪問機制連接池B/S模式
1.JSP技術
JSP技術是基于Java Servlet和整個Java體系的Web開發技術,利用這一技術可以建立先進、安全、快速和跨平臺的動態網站。在傳統的網頁HTML文件中加入Java程序段和JSP標記,就構成了JSP網頁。Web服務器在遇到訪問JSP網頁的請求時,首先執行其中的程序片段,然后將執行結果以HTML格式返回給客戶。程序片段可以操作數據庫、重新定向網頁、發送E-mail等,這就是建立動態網站所需要的功能[3]。
1.1JSP的工作原理與技術特點。
類似于Microsoft的ASP技術,JSP也對HTML標記集合進行了擴展。這些擴展的標記只能由支持它的服務器上的JSP的引擎來識別并負責解釋執行。JSP頁面以擴展名為.JSP件的形式存于服務器上,當服務器接收到客戶端對某個JSP頁面的請求時,如果這是對該頁面創建或修改后的第一次請求,那么JSP引擎就把該JSP頁面內容轉換成一個純Java語言的Server源碼,然后將其編譯成Servlet字節代碼,最后將Servlet的執行結果返回至瀏覽器。JSP頁面被編譯成Servlet之后,其執行代碼一獨立線程的方式一直存在服務器的內存中,以后對該JSP頁面提出請求時,不需要重新編譯,知道該頁面被修改或Web應用程序重新啟動。Java Servlet由于在服務器端運行,并且不包括會占用大量系統資源的GUI,因此運行的速度要比Java Applet和Java獨立應用程序快,同時還可以通過預編譯JSP頁面以加快響應客戶端請求的速度。
JSP技術是對Servlet技術的一種擴展,它為基于Java環境開發多層結構的動態Web應用程序提供一種方便、快捷的方法。JSP具有如下一些特點[4]。
1.1.1簡化的頁面生成技術。
1.1.2與Java平臺有機集成。
1.1.3硬件平臺和服務器無關性。
1.1.4功能可擴展性。
1.1.5JSP可以通過JDBC與諸如Oracle,DB2、SQL Server這樣的大型關系數據庫進行連接。
1.1.6JSP提供了一些隱含對象。
1.2JSP的實現方式。
利用JSP開發動態Web頁面的方式一般有兩種:一種是HTML頁面中直接嵌入Java程序,相當于把Servlet的源代碼直接寫到HTML頁面中;另一種是在JSP頁面中調用Java Bean,以充分發揮Java Bean的強大功能。
Java Bean技術是一種可重復使用且跨平臺的軟件組件,它為軟件開發者提供了一種極佳的解決方案,使他們可以利用Java Bean技術封裝事務邏輯,很好的實現業務邏輯和客戶端操作的分離,使系統具有更好的靈活性和適用性。其工作原理是將數據庫的基本操作邏輯封裝在Java Bean包中,通過JSP調用Java Bean來實現數據庫的連接。首先將用Java編寫的數據庫連接和對數據庫的基本操作的程序編譯,生成*.class文件,就可以通過JSP調用Java Bean 來實現數據庫的操作。使用Java Bean提高了代碼的重用程度,簡化了程序設計的復雜度。但Java Bean與數據庫連接時耗時較多,當有過多的并發訪問時,加之數據庫所支持的并發連接數量有限,反而會使數據庫的運行效率下降。
2.Browser/Server模式
Browser/Server是由傳統的二層Client/Server結構發展而來的三層結構在Web上的應用特例。Browser/Server結構極大地簡化了客戶機的工作,客戶機只需安裝,配置少量的客戶軟件即可,對數據庫的訪問和應用程序的執行將在服務器上進行??蛻魴C無法直接對數據庫操縱,能有效地防止用戶的非法入侵。三層結構如下。
2.1表示層:Web瀏覽器。
表示層的任務是由Web瀏覽器向網絡上的某一Web服務器提出服務請求,Web服務器對用戶身份進行驗證后用HTTP協議把所需的主頁傳送給客戶端,客戶機接受傳來的主頁文件,并把它顯示在Web瀏覽器上。
2.2功能層:具有應用程序擴展功能的Web服務器。
功能層的任務是接受用戶的請求,首先需要執行相應的擴展應用程序與數據庫進行連接,通過SQL等方式向數據庫提出數據處理申請,而后等數據可服務器將數據處理結果提交給Web服務器,再有Web服務器傳送給客戶端。
2.3數據層:數據庫服務器。
數據層的任務是接受Web服務器對數據庫操縱的請求,實現對數據庫查詢、修改、更新等功能,把運行結果提交給Web服務器。
這種三層結構層與層之間相互獨立,任何一層的改變不影響其他層的功能。由于這種模式提供一個跨平臺的簡單一致的應用環境,實現了開發環境與應用環境的分離,故避免了為不同操作系統開發同一應用系統的重復操作,便于用戶群的擴展、變化,以及應用系統的管理。鑒于B/S模式的突出優點,本系統采用了這種模式。
3.JDBC數據庫訪問機制
JDBC(Java DataBase Connectivity)是一種“開放”的方案,它為數據庫應用開發人員、數據庫前臺工具開發人員提供一種標準的應用程序設計接口,使開發人員可以用純Java語言編寫完整的數據庫應用程序。
JDBC是Java應用程序和數據庫溝通的橋梁,通過JSP程序完成與數據庫的連接,執行相應的數據庫操作。JDBC 2.0標準擴展API可以實現具有以下特性的應用技術:
3.1允許請求客戶機透明地共享資源池的多個連接對象。
3.2應用服務器供應商在其內存空間實現池管理器,并根據需要動態改變池的大小,從而優化資源的使用。
JDBC技術用于訪問各種數據源的數據庫,它提供了不同數據庫的DBMS連接。JDBC與數據庫相連有兩種方法,其一是通過JDBC 2ODBC來連接各種支持ODBC驅動程序的數據庫;另一種方法是通過專用的JDBC驅動程序來與數據庫連接。前者已被廣泛使用并得到了大多數數據庫的支持,后者是通過Java提供的用于各種數據庫的專用驅動程序來實現數據庫的連接,先把專用的驅動程序放在環境變量的ClassPath路徑里,然后JSP程序中創建數據庫連接就可以引用了。
程序訪問數據庫時,通過JDBC Driver Manager調度取得與要訪問的數據庫對應JDBC Driver,建立與數據庫的連接,然后傳送SQL語句,數據庫處理SQL語句以及返回處理結果。最后,關閉數據庫的連接。
通過JDBC提供的API,應用程序能夠完成與數據庫的連接和交互,JDBC作為一種數據庫訪問技術,具有使用簡單、可移植性強、易于編寫和維護等優點,可高效地實現數據庫的連接。但也有其局限性,如訪問速度慢,JDBC ODBC驅動橋的局限性等。因此使JDBC訪問數據庫受到了限制。
4.連接池技術
為了解決JDBC(Java Bean)數據庫連接時的效率下降、耗時多的缺陷,我們可以采用連接池技術。在JSP中,把連接池技術和JDBC(JavaBean)結合起來使用,就能極大地提高數據庫的訪問效率。
連接池(Connection Pool)就是眾多連接對象的“緩沖存儲池”,也就是連接對象的集合體。連接池內部提供了一種連接機制,能控制連接池內部連接對象的個數,對應用程序提供獲取和釋放連接的接口,完善的連接池還能控制連接對象的生存期。
連接池的工作原理包括3個方面:連接池的建立、管理和關閉。
建立一個連接池,池中的連接是在系統初始化時候就分配好的,并且不能夠隨意關閉的,以后所使用的連接都是從該連接池中獲取的。連接池應從數據庫一次性的獲取預設數目的連接對象,這樣就可以避免連接隨意建立、關閉造成的開銷。
連接池對連接的管理是連接池的核心部分,可以使用靜態管理和動態管理兩種策略。靜態就是使用的時候發現空閑連接不夠再去檢查。動態就是使用了一個線程定時檢查,外部應用程序訪問數據庫時,不是直接向數據庫新建一個連接,而是向連接池申請一個連接,若連接池有空閑的連接,則分配一個連接;若沒有空閑的連接,則有兩種方法獲得連接。其一是等待一個連接被釋放其二就是在已經分配的連接中找一個合適的連接給用戶,此時該連接在多個用戶間復用。復用連接非常重要,我們可以采用這樣的設計模式:Reference Counting(引用記數)。該模式在復用資源方面用的非常廣泛,每一個數據庫連接,保留一個引用記數,用來記錄該連接的使用者的個數。具體的實現上,我們可采用空閑池和使用池技術??臻e池中存放目前還沒有分配出去被使用的連接,一旦一個連接被分配出去,那么就會放入到使用池中,并且增加引用記數。這樣就可以高效地使用連接,因為一旦空閑池中的連接被全部分配出去,我們就可以采用復用引用記數最小的連接的方法從池中挑選出一個已經正在使用的連接用來復用。關閉連接池也就是連接池向數據庫歸還所有的連接對象。連接池規定了相應的方法來關閉連接。
基于JSP和SQL Server的網上數據庫系統開發技術已經相當成熟,本文介紹了網絡數據庫系統開發過程中的幾個技術問題,如連接池技術、JDBC(Java Bean)數據庫訪問機制等。
參考文獻:
[1]趙松濤.SQL Server 2000系統管理與應用開發.人民郵電出版社,2006.2,(1).
[2]耿祥義,張躍平.Java程序設計(第三版)[M].北京:清華大學出版,2009.
[3]楊志姝,李光海.SQL應用與開發,北京:清華大學出版,2006.7,(1).
[4]石志國.JSP網絡開發詳解[M].電子工業出版社,2007.8,(1).