Java Web使用数据库连接池
生活随笔
收集整理的這篇文章主要介紹了
Java Web使用数据库连接池
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這里使用的Web服務器是Tomcat服務器
方法一、
1.1? 配置context.xml文件
context.xml文件路徑: D:\Tomcat 7\conf\context.xml?? ??? ?路徑是參考,根據實際情況尋找context.xml
在<Context>節點下添加<Resource>標簽元素
<Context><Resource name="jdbc/news" auth="Container" type="javax.sql.DataSource"maxActive="100" maxIdle="30" maxWait="10000" username="root"password="123" driverClassName="com.mysql.cj.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/newsmanagersystem?useUnicode=true&characterEncoding=utf-8"/> </Context>Resource元素屬性,屬性名不能自定義,不要打錯
| 屬性 | 說明 |
| name | Resource的JNDI名字 |
| auth | 指定管理Resource的Manager,有兩個可選值:Container和Application。 Container:表示有容器創建Resource 。Application:表示有Web應用創建和管理Resource |
| type | 指定Resource的Java類型 |
| maxActive | 連接池最大連接對象數量 |
| maxIdle | 連接池初始的連接對象數量 |
| maxWait | 超出初始連接數量后的連接處于空閑狀態的時間(時間過后如果還處于空閑狀態被對象關閉) |
| username | 數據庫用戶名 |
| password | 數據庫密碼 |
| driverClassName | 指定數據庫的JDBC驅動程序 |
| url | 指定數據庫的連接地址(127.0.0.1:3306是回環地址) |
?
1.1? 配置web.xml文件
web.xml文件的路徑:WebRoot/WEB-INF/web.xml? ? ? ? 路徑是相對路徑,相對Web項目
在<web-app>節點下添加<resource-ref>標簽元素
<web-app> <resource-ref><description>news DataSource</description><res-ref-name>jdbc/news</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref> </web-app>| 屬性 | 說明 |
| description | 對所引用資源的說明 |
| res-ref-name | 指定所引用資源的JNDI名字,與<Resource>標簽中的name屬性對應 |
| res-type | 指定所引用資源的類型,與<Resource>標簽中的type屬性對應 |
| res-auth | 指定所引用資源的Manager,與<Resource>標簽中的auth屬性對應 |
?
方法二、
2.1?創建并配置context.xml文件
聲明:這個方法不需要配置Tomcat服務器中的context.xml文件,也不需要配置Web項目中的web.xml文件
只需要在需要使用數據庫連接池的Web項目中WebRoot目錄下的META-INF目錄中創建一個context.xml文件,添加<Context>節點,然后在節點中添加<Resource>節點以及其內容即可!(內容參照1.1配置context.xml文件)
?
在項目中從數據庫連接池中獲取數據庫連接對象
此處不做過多解釋,有疑問看代碼中的注釋
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; /*** 定義數據庫工具類型* 實現方法:* 1.獲取數據庫連接對象* 2.關閉數據庫對象的方法* @return*/ public class DatabaseUtil {//定義getConnection()方法 即一個獲取數據庫連接對象的方法public static Connection getConnection() {//創建Context,DataSource,Connection的對象,但不實例化,方面后期實例化使用//javax.naming包下的Context,這里聲明其對象主要用其方法讀取配置中的數據庫池Context ctx = null;//javax.sql包下的DataSource,主要用于接收Context方法讀取到的數據庫連接池DataSource ds = null;//數據庫連接對象,主要用于從DataSource中獲取到一個數據庫連接對象Connection conn = null;try {//通過InitialContext()方法獲取Context對象的實例ctx = new InitialContext();//通過Context的lookup()方法讀取到連接池并強轉成DataSource類型//(DataSource)用于強轉類型//lookup方法中的寫法:("java:comp/env/"+name屬性值) java:comp/env/是固定路徑寫法 后面跟配置文件中的name屬性值ds = (DataSource) ctx.lookup("java:comp/env/jdbc/news");//使用.getConnection()方法從數據庫中獲取一個連接對象conn = ds.getConnection();} catch (NamingException e) {// TODO 自動生成的 catch 塊e.printStackTrace();} catch (SQLException e) {// TODO 自動生成的 catch 塊e.printStackTrace();}//返回已經獲得到的數據庫連接對象,實現方法最終目的return conn;}//關閉對象方法,和本文章無關,不多做解釋public static void closeAll(Connection conn,PreparedStatement pdst,ResultSet rest) {try {if(rest!=null) {rest.close();}if(pdst!=null) {pdst.close();}if(conn!=null) {conn.close();}} catch (SQLException e) {// TODO 自動生成的 catch 塊e.printStackTrace();}} }?
文章中如果有錯誤地方請留言或私信提示,文章寫的有些許倉促,恐有錯誤的地方,請及時提示,一面誤人子弟
總結
以上是生活随笔為你收集整理的Java Web使用数据库连接池的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高通芯片是哪个国家的 高通公司简介
- 下一篇: 京东金条逾期1天还 会不会影响征信记录