基於JSP技術的資料庫連接

來源:互聯網
上載者:User
相對於基於傳統的Client/Server模式的資料庫系統,Web資料庫系統採用三層瀏覽器/伺服器結構(即網路瀏覽器/Web伺服器/資料庫伺服器結構),具有極大的優勢。Web資料庫系統充分發揮了DBMS高效的資料存放區與管理能力,以B/S模式為平台,將用戶端統一為Web瀏覽器,為使用者提供使用簡便、內容豐富的資料庫服務,已經成為Internet和Intranet提供的核心服務,為Internet上的電子商務提供支援人員。Web資料庫系統的關鍵技術是Web與資料庫的串連和訪問最佳化。

     Web資料庫連接技術

    常見的Web資料庫連接技術有:CGI技術、WebAPI技術、RAD技術和JDBC技術等。最早出現的CGI技術得到了幾乎所有的Web伺服器的支援,但是存在著嚴重的缺陷,例如運行速度慢、開發困難和可移植性差等。WebAPI的出現克服了速度問題,但是開發更加困難。各種不同的API互不相容,使用範圍極其受限。RAD技術(快速開發技術)從根本上該改變了開發困難的現狀,但是它和特定的Web伺服器的依賴性很強,缺乏通用性。

    JDBC(Java Database Connectivity)技術的最大優勢是它為所有資料庫管理系統提供一種標準介面,可以為多種關聯式資料庫提供統一訪問,大致可以分為以下三個部分:
    ◆ JDBC API的主要特點之一是簡單且容易掌握。它主要由介面組成而不是整合類,被包含在java.sql和javax.sql兩個包中。這些介面由提供JDBC驅動的軟體商來完成。
    ◆ JDBC驅動管理器的作用是在JDBC運行結構上,提供最基礎的指引功能,即當一個JDBC API程式進行資料庫調用時,它會選擇一個正確的JDBC驅動程式進行串連。
    ◆ JDBC驅動的作用是當JDBC API製作的程式進行資料調用時,實際串連資料庫並進行相應的處理。JDBC驅動提供JDBC API的介面類。

     JSP技術

     JSP技術的特點
    Java Server Page(JSP)是使用Java代碼動態產生HTML文檔的Web頁面摸板。JSP運行於伺服器端組件,稱為JSP容器,它將JSP轉化成等價的Java Servlet。正因為如此,Servlet和JSP頁面最終是相關的。JSP頁面具有了Servlet的所有優點,如良好的效能和擴充性,對HTTP會話提供嵌入式支援等。同時JSP頁面還具有自身的優點,如需要時自動重新編譯和與Web開發工具具有更大的相容性。

    JSP容器基於每個檔案的時間戳記自動管理JSP頁面。當對一個JSP頁面的請求發出後,容器首先判斷與.JSP檔案對應的類的名字。

    如果該類不存在或比.JSP檔案的老,然後容器為一個等價的Servlet建立Java源碼並編譯它。如果Servlet執行個體並未運行,容器載入該Servlet類並建立一個執行個體。最後,容器發送一個線程在載入的執行個體中處理當前的HTTP請求。所以,一個JSP頁面有三種存在形式,即JSP源碼、Java源碼和已編譯的Java類。

    JSP元素可以分為三種:偽指令、指令碼元素(包含運算式、Script和聲明)和動作。其中,偽指令是指示JSP容器產生什麼代碼的命令;在運算式和Script中可以使用9個隱含對象;行為是建立、修改或使用對象的高層JSP元素,使用嚴格的XML文法編碼。

     利用JSP實現Web與資料庫的串連

    Java使用JDBC技術處理資料庫是一種綜合、通用方式,實現與資料庫的串連,執行查詢和提取資料等操作。很多關聯式資料庫管理系統都帶有JDBC驅動程式。具體步驟如下:

    1.完成環境設定,匯入java.sql包,命令如下:
    #import java.sql.*

    2.載入磁碟機
    JDBC規範依據磁碟機結構將磁碟機劃分為JDBC-ODBC橋、純Java到資料庫中介軟體和純Java直接到資料庫幾種類型。在此,採用本地API與部分Java類型磁碟機,顯式建立一個如下的磁碟機執行個體並用磁碟機管理器註冊:
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

    3.串連到資料庫
    磁碟機管理器保留登入磁碟機列表,調用其getConnection()方法得到Connection對象。其中getConnection()的參數分別是資料庫伺服器的IP地址、連接埠號碼、庫名和登入資料庫所需的帳號與密碼,樣本如下:

Connection conn= DirverManager.getConnection("jdbc:oracle:thin:@localhost:1521:demo","username","password");


    4.語句介面
    SQL語言由從一個關聯式資料庫中建立、表示和抽取資料的語句組成。JDBC提供的這些SQL語句的物件導向的表示用以封裝其文本、執行狀態和結果。這種表示稱為java.sql.Statement介面。使用先行編譯SQL的PreparedStatement和調用預存程序的CallableStatement這兩個子介面擴充了Statement的功能,樣本如下:
    Statement stmt=conn.createStatement();

    5.獲得結果集
    一個結果集是表格行的排序列表,使用JDBC中的java.sql.ResultSet介面表示。結果集由Statement介面的executeQuery()方法或一些中繼資料方法調用產生,樣本如下:
    ResultSet rs=stmt.executeQuery(sql);

     利用串連池最佳化訪問效率

    在本執行個體中,應用程式層使用WebLogic 6.1,資料庫層採用Oracle8.1.6,用戶端使用Navigate瀏覽器。
     執行個體

    在本執行個體中建立一個命名為ConnectionPool的串連池。ConnectionPool的基本屬性如下:

m_ConnectionPoolSize 串連池中串連數量下限;m_ConnectionPoolMax 串連池中串連數量上限; m_ConnectionUseCount 一個串連的最大使用次數;m_ConnectionTimeout 一個串連的最長空閑時間;m_MaxConnections = -1 同一時間的最大串連數;m_timer 定時器。


    這些屬性定義了串連池與其中的每個串連的有效狀態值。

    串連池的自我管理,實際上就是通過定時地對每個串連的狀態和串連的數量進行判斷而進行相應操作。

    這裡可以定義出ConnectionPool要完成管理所需要的基本介面,具體見下:

public class ConnectionPool implements TimerListener{  public boolean initialize() //串連池初始化   public void destroy() //串連池的銷毀   public synchronized java.sql.Connection getConnection() //取一個串連   public synchronized void close() //關閉一個串連   private synchronized void removeFromPool() //把一個串連從串連池中刪除   private synchronized void fillPool() //維護串連池大小   public synchronized void TimerEvent() //定時器事件處理函數 }


    通過這幾個介面,已經可以完成串連池的基本管理。在TimeEvent()函數中完成串連池的狀態檢驗工作,fillPool()時串連池至少保持最小串連數。因為使用者要儲存每一個串連的狀態,所以還需要一個資料庫連接對象見下:

class ConnectionObject{  public java.sql.Connection con; public boolean inUse; //是否被使用標誌  public long lastAccess; //最近一次開始使用時間  public int useCount; //被使用次數}


    加入了ConnectionObject對象後,在ConnectionPool中操作的應該只是ConnectionObject,而其它進程需要的只是ConnectionObject的con屬性。因此這裡再加入如下一個類,作為其它進程獲得與返回串連的介面:

CLASS Conn{  GetConnection(); //從串連池中取出一個有效串連   CloseConnection(); //返回串連,此時並沒有關閉串連,只是放回了串連池   DestroyPool(); //銷毀串連池 }


    目前採用JSP技術構建B/S結構的Web資料庫系統是比較流行的方式,同時採用資料庫連接池的系統在效率和穩定性上比採用傳統的其它方式的系統要好得多。資料庫連接池是一種對整個系統中比較複雜的問題的一種可行的解決辦法。但在實際應用中,JDBC串連只是大型Web應用系統的一小部分,資料庫連接池管理程式與Web伺服器、JSP引擎和RDBMS引擎的管理原則都有可能發生衝突。使用者應該全面考慮系統中的各個部分,這樣才能充分發揮其高效性
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.