亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

JSP +Tomcat數據庫訪問

系統 2193 0

JSP +Tomcat 數據庫訪問

?

作者:劉志遠

?

?

在一般的 Web 項目開發中,對數據庫的訪問是必不可少的,本文主要介紹兩種在使用 Tomcat 作為 Web 服務的 JSP 開發中訪問數據庫的方法,希望能對剛接觸 JSP 開發的朋友有所幫助。 用過 .NET 平臺的朋友應該知道,項目中需要訪問數據庫時,直接導入相應的數據庫命名空間,寫個數據庫連接字符串(如數據庫名、用戶名、密碼等)后,則可以很容易的獲得數據庫連接對象。其實 Java 中訪問數據庫也差不多是那樣,但這對于剛接觸 Java 開發環境的朋友來說可能還是比較棘手的:不知道數據庫連接信息如何配置,到底要調用哪些對象,以及 JDBC 數據庫驅動、 JDBC 數據源、連接池等 是些什么。本文盡量對這些基本問題做個明了的介紹。

?

?????? 微軟 Windows 平臺提供的統一數據庫訪問方式是 ODBC Open DataSource Connectivity ),也就是一些 ODBC API(應用程序編程接口) 。訪問數據庫時,開發者在程序中只需調用 ODBC API , ODBC 驅動程序就會將請求轉換為特定的數據庫調用請求(這個過程比較復雜,但對開發者來說是隱藏的,不必了解這個轉換過程是怎樣的),就可方便的完成數據庫訪問操作。 類似 MS ODBC , Sun 公司推出了 JDBC Java Database Connectivity ), JDBC 只是一些描述訪問關系數據庫的標準 Java 類庫的 API 而已,并沒有提供訪問具體數據庫的功能,但它的這些接口卻為各數據庫廠商提供訪問自己數據庫的驅動的一個標準,方便他們實現自己的 JDBC 驅動程序類。 JDBC 驅動程序類實現了 JDBC 中定義的各個接口,也就真正提供了訪問數據庫的功能。 而一般情況下,我們的開發環境 ( MyEclips) 并不像 .NET 開發環境那樣自帶了這些數據庫驅動程序類庫,所以在開發過程中,我們往往得自己到所使用的關系數據庫廠商網站去下載對應的 JDBC 驅動類庫 .jar 格式, Oracle 的可直接在 oracle 安裝目錄的 jdbc 文件夾中的 lib 下找到),再添加到項目中,如放在 WEB-INF 下的 lib 文件夾中。 有在程序中包含了數據庫的 JDBC 驅動類庫才能實現數據庫的訪問,這一步是非常關鍵的。

?

下面筆者就對幾種常見的數據庫的訪問設置及相關內容做個介紹。

?

???????? 首先,由于各數據庫廠商提供的 JDBC 驅動類庫是不一樣的,你可能很自然就想到訪問數據時必須寫明數據庫程序的 JDBC 驅動類名。再者,你的程序要訪問的是哪個機器上的數據庫,以及具體數據庫的名稱是什么(一般一個關系數據庫軟件中可以創建很多數據庫),在 Java 中,我們把這幾個信息稱為數據庫的 JDBC URL 。此外,用哪個用戶(當然也要提供密碼)訪問該數據庫我們也必須描述。通常,包含了 JDBC 驅動類庫,再提供上面的信息就可以很容易的訪問數據庫了。

?

常見數據庫的 JDBC 驅動類名如下:

數據庫

數據庫 JDBC 驅動類名

Oracle

oracle.jdbc.driver.OracleDriver

SQL Server 2000

com.microsoft.jdbc.sqlserver.SQLServerDriver

SQL Server 2005

com.microsoft.sqlserver.jdbc.SQLServerDriver

MySQL

com.mysql.jdbc.Driver

?

常見數據庫 JDBC URL 的形式如下:

數據庫

JDBC URL

Oracle

jdbc:oracle:thin:@localhost:1521:oracle9i

localhost :機器名,也可以是 IP ; ? oracle9i :要訪問的數據庫名

SQL Server 2000/2005

jdbc:microsoft:sqlserver://localhost:1433;databasename=dbname

MySQL

jdbc:mysql://localhost:3306/databasename

?

???????? 做好上面的準備后,用幾行代碼就可以訪問數據庫了。訪問數據庫的方式又分兩種:直接訪問和通過數據源連接池訪問。下面以訪問 Oracle 數據庫為例進行介紹,其他數據庫都類似。

?

?

方法一 直接訪問

?

???????? 訪問代碼如下:

???????? String driverClass = "oracle.jdbc.driver.OracleDriver" ; ??????

???????? String url = "jdbc:oracle:thin:@localhost:1521:oracle9i" ;

???????? String username = "cotte" ;

???????? String password = "tiger" ;

???????? Class. forName (driverClass);

???????? Connection conn = DriverManager. getConnection (url, username, password);

???????? Statement stmt = conn.createStatement();

???????? ResultSet rs = stmt.executeQuery( "select * from jobs" );

?

???????? 從代碼中可以看出, JDBC 訪問數據庫是比較簡單的,且步驟統一:先調用 Class 類的 forName() 方法指定數據庫驅動類型,再調用 DriverManager 類的 getConnection() 方法獲得數據庫連接對象,接著調用 Connection 對象的 createStatement() 方法獲得 Statement 類,通過調用 Statement 類的各種訪問數據的方法就可以訪問、操作數據庫了。這里的 ResultSet 對象包含了從數據庫中查詢到數據。

JSP +Tomcat數據庫訪問
?

?

?

?

方法二 使用 JDBC 數據源和連接池訪問數據庫

?

???????? 方法一使用的方法還是比較方便的,但用戶每次訪問數據庫時都必須創建一個數據庫連接對象,這個過程是要耗費服務器資源和消耗一定的時間的,且一個數據庫服務器同時建立的連接數目也是有限的。用戶少時不會有多大影響,但如果訪問數據庫的用戶數量較大時這就會成為影響系統性能的一個瓶頸,為解決這個問題,聰明的程序員們想出了 “JDBC 數據源和連接池 方法,從而較好的處理了這個問題,在大型網站開發中往往采用這種方法。

?

???????? 普通數據庫訪問中,客戶程序得到的是物理連接對象,使用完后調用連接對象的 close() 方法關閉連接。而連接池技術則是在一個連接池中先創建多個數據庫物理連接,通過數據源來調用連接池中的數據庫連接。用戶用完數據庫連接完后并不會直接關閉連接對象的物理連接,而只是將其釋放回連接池,供下個用戶使用,這樣就就節省了創建連接的時間。

JSP +Tomcat數據庫訪問
?

?

???????? Tomcat 提供了數據源和連接池的實現,我們直接使用就行了。在使用的時候還要明白這個原理: 由于是使用 Tomcat 提供的數據源實現來訪問數據庫(注意:數據源本身并不提供具體的數據庫訪問功能,只是作為連接對象的工廠,實際的數據訪問操作仍然是由對應數據庫的 JDBC 驅動來完成), 這里是 Tomcat 需要 JDBC 驅動,而不再是應用程序需要 JDBC 驅動,所以得先將對應數據庫的 JDBC 驅動類庫( .jar 格式)拷貝到 Tomcat 目錄中的 lib 文件夾下,供 Tomcat 調用。

?

???????? 由于是 Tomcat 來訪問數據庫,所以在程序中不用寫訪問數據庫的信息,但得先配置(或告知) Tomcat 這些信息。

?

一般可以在 Tomcat 目錄下 \conf\context.xml 文件的 <Context> 元素內添加 <Resource> 元素來配置 JDBC 數據源信息,以 Orcale 為例,其他類似(注意一點的是, Tomcat 下的配置信息對所有 Web 項目程序都有效 )。

< Resource name = "jdbc/oracleds" auth = "Container" type = "javax.sql.DataSource" maxIdle = "30" maxWait = "10000" maxActive = "10" username = "cotte" password = "tiger" driverClassName = "oracle.jdbc.OracleDriver" url = "jdbc:oracle:thin:@127.0.0.1:1521:oracle9i" />

?

這些屬性的含義如下:

鍵名

含義

name

指定資源相對于 java:comp/env 上下文的 JNDI 名。(可按需修改)

auth

指定資源的管理者。(默認 Container 即可)

type

指定資源所屬的 Java 類的完整限定名。(默認即可)

maxIdle

指定連接池中保留的空閑數據庫連接的最大數目。(可按需修改)

maxWait

指定等待一個數據庫連接成為可用狀態的最大時間,單位毫秒。(可按需修改)

username

指定連接數據庫的用戶名。(按讀者的具體情況修改)

password

指定連接數據庫的密碼。(也是按讀者的具體情況修改)

driverClassName

指定 JDBC 驅動程序類名。(按讀者使用的數據庫程序修改,具體值可參加前面列的 常見數據庫的 JDBC 驅動類名

url

指定連接數據庫的 URL 。(也是按讀者使用的情況修改,具體值可參加前面列的 常見數據庫 JDBC URL 的形式

?

除了配置 Tomcat context.xml 文件外,也可 web 項目的 META-INF 文件夾下新增文件 context.xml 其內容和上面的基本一樣 如下。(因為 Web 程序部署發布時 Tomcat 會自動加載 WEB-INF 下的內容 ,也就可以獲得這些信息了, 所以和上面的是一樣的效果。但要明白一點的是: 這樣的配置就只對當前 Web 項目有效,其他項目不能使用這些信息

<? xml version = '1.0' encoding = 'utf-8' ?>

< Context reloadable = "true" >

< Resource name = "jdbc/oracleds" auth = "Container" type = "javax.sql.DataSource" maxIdle = "30" maxWait = "10000" maxActive = "10" username = "lzy" password = "lzy" driverClassName = "oracle.jdbc.OracleDriver" url = "jdbc:oracle:thin:@127.0.0.1:1521:oracle9i" />

</ Context >

?

做好前面的準備后,下面就只需簡單的幾行訪問代碼就可以訪問數據庫了,代碼如下:

???????? ??? javax.naming.Context ctx = new javax.naming.InitialContext();

???????? ??? javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup( "java:comp/env/jdbc/oracleds" );

???????? ??? java.sql.Connection conn = ds.getConnection(); ? ???? ???? ????

???????? ??? java.sql.Statement stmt=conn.createStatement();

???????? ??? java.sql.ResultSet rs = stmt.executeQuery( "select * from jobs" );

?

???????? 其過程與前面的差不多,只是用了 Context 對象的 lookup() 方法找到 DataSource 對象,再用 DataSource 對象的 getConnection() 方法就獲得了數據庫連接對象。 ?

?

JSP +Tomcat數據庫訪問


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲欧美自拍另类图片色 | 欧美αv在线 | 1级黄色毛片 | 色综合亚洲综合网站综合色 | 天天射天天射 | 久久99精品国产99久久6男男 | 一级特黄aaa大片免色 | 婷婷玖玖 | 一级理论片免费观看在线 | 免看一级a毛片一片成人不卡 | 一级肉体毛片视频免费看看 | 国产高h | 国产精品久久久久久久久齐齐 | 草草精品视频 | 青娱乐91视频 | 一级做a爱片特黄在线观看 一级做a爱片特黄在线观看免费看 | 国产福利视频深夜福利 | 久久99精品久久久久子伦 | 丁香狠狠色婷婷久久综合 | 国产人成精品免费视频 | 欧美网站黄 | 成人黄色在线免费观看 | 欧美性猛片xxxxⅹ免费 | 国产另类视频 | 精品综合久久久久久98 | 深夜福利视频在线一区 | 久久久久在线视频 | 国产美女色视频 | 香蕉18xxoo欧美夜视频 | 久久都是精品 | 成人毛片全部免费观看 | 成人免费淫片在线费观看 | 免费观看美女光子让男人玩 | 国产精品国产三级国快看 | 另类综合网 | 国产中文在线观看 | 五月婷婷久久综合 | 日日久| 911视频免费 | 精品久久久久中文字幕日本 | 奇米影视播放器 |