国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

基于JSP技術的數據庫連接

2024-09-05 00:20:13
字體:
來源:轉載
供稿:網友
    相對于基于傳統(tǒng)的client/server模式的數據庫系統(tǒng),web數據庫系統(tǒng)采用三層瀏覽器/服務器結構(即網絡瀏覽器/web服務器/數據庫服務器結構),具有極大的優(yōu)勢。web數據庫系統(tǒng)充分發(fā)揮了dbms高效的數據存儲與管理能力,以b/s模式為平臺,將客戶端統(tǒng)一為web瀏覽器,為用戶提供使用簡便、內容豐富的數據庫服務,已經成為internet和intranet提供的核心服務,為internet上的電子商務提供技術支持。web數據庫系統(tǒng)的關鍵技術是web與數據庫的連接和訪問優(yōu)化。

    web數據庫連接技術

    常見的web數據庫連接技術有:cgi技術、webapi技術、rad技術和jdbc技術等。最早出現的cgi技術得到了幾乎所有的web服務器的支持,但是存在著嚴重的缺陷,例如運行速度慢、開發(fā)困難和可移植性差等。webapi的出現克服了速度問題,但是開發(fā)更加困難。各種不同的api互不兼容,使用范圍極其受限。rad技術(快速開發(fā)技術)從根本上該改變了開發(fā)困難的現狀,但是它和特定的web服務器的依賴性很強,缺乏通用性。

    jdbc(java database connectivity)技術的最大優(yōu)勢是它為所有數據庫管理系統(tǒng)提供一種標準接口,可以為多種關系數據庫提供統(tǒng)一訪問,大致可以分為以下三個部分:
    ◆ 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代碼動態(tài)生成html文檔的web頁面摸板。jsp運行于服務器端組件,稱為jsp容器,它將jsp轉化成等價的java servlet。正因為如此,servlet和jsp頁面最終是相關的。jsp頁面具有了servlet的所有優(yōu)點,如良好的性能和擴展性,對http會話提供嵌入式支持等。同時jsp頁面還具有自身的優(yōu)點,如需要時自動重新編譯和與工具具有更大的兼容性。

    jsp容器基于每個文件的時間戳自動管理jsp頁面。當對一個jsp頁面的請求發(fā)出后,容器首先判斷與.jsp文件對應的類的名字。

    如果該類不存在或比.jsp文件的老,然后容器為一個等價的servlet創(chuàng)建java源碼并編譯它。如果servlet實例并未運行,容器載入該servlet類并創(chuàng)建一個實例。最后,容器發(fā)送一個線程在載入的實例中處理當前的http請求。所以,一個jsp頁面有三種存在形式,即jsp源碼、java源碼和已編譯的java類。

    jsp元素可以分為三種:偽指令、腳本元素(包含表達式、script和聲明)和動作。其中,偽指令是指示jsp容器生成什么代碼的命令;在表達式和script中可以使用9個隱含對象;行為是創(chuàng)建、修改或使用對象的高層jsp元素,使用嚴格的xml語法編碼。

    利用jsp實現web與數據庫的連接

    java使用jdbc技術處理數據庫是一種綜合、通用方式,實現與數據庫的連接,執(zhí)行查詢和提取數據等操作。很多關系數據庫管理系統(tǒng)都帶有jdbc驅動程序。具體步驟如下:

    1.完成環(huán)境設置,導入java.sql包,命令如下:


    #import java.sql.*

    2.載入驅動器

    jdbc規(guī)范依據驅動器結構將驅動器劃分為jdbc-odbc橋、純java到數據庫中間件和純java直接到數據庫幾種類型。在此,采用本地api與部分java類型驅動器,顯式創(chuàng)建一個如下的驅動器實例并用驅動器管理器注冊:

    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語言由從一個關系數據庫中創(chuàng)建、表示和抽取數據的語句組成。jdbc提供的這些sql語句的面向對象的表示用以封裝其文本、執(zhí)行狀態(tài)和結果。這種表示稱為java.sql.statement接口。使用預編譯sql的preparedstatement和調用存儲過程的callablestatement這兩個子接口擴展了statement的功能,示例如下:
    statement stmt=conn.createstatement();

    5.獲得結果集

    一個結果集是表格行的排序列表,使用jdbc中的java.sql.resultset接口表示。結果集由statement接口的executequery()方法或一些元數據方法調用產生,示例如下:
    resultset rs=stmt.executequery(sql);

    利用連接池優(yōu)化訪問效率

    在本實例中,應用層使用weblogic 6.1,數據庫層采用oracle8.1.6,客戶端使用navigate瀏覽器。

    實例

    在本實例中建立一個命名為connectionpool的連接池。connectionpool的基本屬性如下:

m_connectionpoolsize 連接池中連接數量下限;
m_connectionpoolmax 連接池中連接數量上限;
m_connectionusecount 一個連接的最大使用次數;
m_connectiontimeout 一個連接的最長空閑時間;
m_maxconnections = -1 同一時間的最大連接數;
m_timer 定時器。

    這些屬性定義了連接池與其中的每個連接的有效狀態(tài)值。

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

    這里可以定義出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()函數中完成連接池的狀態(tài)檢驗工作,fillpool()時連接池至少保持最小連接數。因為用戶要保存每一個連接的狀態(tài),所以還需要一個數據庫連接對象見下:

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數據庫系統(tǒng)是比較流行的方式,同時采用數據庫連接池的系統(tǒng)在效率和穩(wěn)定性上比采用傳統(tǒng)的其它方式的系統(tǒng)要好得多。數據庫連接池是一種對整個系統(tǒng)中比較復雜的問題的一種可行的解決辦法。但在實際應用中,jdbc連接只是大型web應用系統(tǒng)的一小部分,數據庫連接池管理程序與web服務器、jsp引擎和rdbms引擎的管理策略都有可能發(fā)生沖突。用戶應該全面考慮系統(tǒng)中的各個部分,這樣才能充分發(fā)揮其高效性。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 呼玛县| 汨罗市| 天柱县| 吉木萨尔县| 汪清县| 诸城市| 科尔| 广东省| 姜堰市| 临洮县| 吉木乃县| 巴青县| 苏尼特右旗| 万全县| 改则县| 鸡泽县| 绥芬河市| 陕西省| 盐津县| 怀远县| 寻乌县| 永和县| 香河县| 德格县| 霍山县| 奎屯市| 桑植县| 甘孜| 陆良县| 泰兴市| 贡嘎县| 和田县| 家居| 栾城县| 祁门县| 合肥市| 宝兴县| 辽宁省| 南平市| 溆浦县| 黔江区|