1.JNDI(Java Naming and Directory Interface,Java命名和目錄接口)
是一組在Java應用中訪問命名和目錄服務的API。命名服務將名稱和對象聯系起來,使得我們可以用名稱訪問對象。目錄服務是一種命名服務,在這種服務里,對象不但有名稱,還有屬性。可以理解為一個容器,可以在其中存放任意內容,在容器中為內容提供一個字符串名稱,名稱命名方式采用是目錄結構方式,在其他地方引用該名稱就可以得到該內容.
2.實現
注意:還是需要導入JDBC的驅動jar包!!!
思想:將數據庫連接池作為服務器端的資源存放在JNDI容器中,使用時從容器中取出資源,即數據庫連接池.
a)將對象存在在JNDI容器
在Web工程的WebRoot\META-INF\目錄下創建Context.xml文件,將對象作為資源存放入容器中,也可以被其他Web項目所訪問.
<? xml version="1.0" encoding="UTF-8" ?> < Context > <!-- #1 給tomcat 配置對象,將內容添加jndi容器 --> < Resource name ="jdbc/pool" auth ="Container" type ="javax.sql.DataSource" maxActive ="100" maxIdle ="30" maxWait ="10000" username ="root" password ="fujianyi" driverClassName ="com.mysql.jdbc.Driver" url ="jdbc:mysql://localhost:3306/day17" /> </ Context >
?
b)當前web項目從tomcat jndi容器將需要對象進行引用。
在當前項目\WebRoot\WEB-INF路徑下的web.xml文件中添加如下代碼
<!-- #2 從jndi容器引用已經存在對象 --> < resource-ref > < res-ref-name > jdbc/pool </ res-ref-name > < res-type > javax.sql.DataSource </ res-type > < res-auth > Container </ res-auth > </ resource-ref >
?
c)jsp 或 java代碼 使用
<% @page import = " java.sql.Connection " %> <% @page import = " javax.sql.DataSource " %> <% @page import = " javax.naming.InitialContext " %> <% @page import = " javax.naming.Context " %> <% @ page language = " java " contentType = " text/html; charset=UTF-8 " pageEncoding = " UTF-8 " %> <% @ taglib uri = " http://java.sun.com/jsp/jstl/sql " prefix = " sql " %> <% @ taglib uri = " http://java.sun.com/jsp/jstl/core " prefix = " c " %> <! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" > < html > < head > < meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8" > < title > Insert title here </ title >
<%--JSP代碼實現?查詢實現--%> <% -- 查詢數據 -- %> < sql:query var ="rs" dataSource ="jdbc/pool" > select * from t_user </ sql:query > </ head > < body > < c:forEach items ="${rs.rows}" var ="row" > ${row.id} ${row.username} ${row.password} </ c:forEach >
<%--Java代碼實現?獲取連接--%> <% // 1初始化jndi容器,包:javax.naming Context initContext = new InitialContext(); // 2初始java環境 Context envContext = (Context)initContext.lookup( " java:/comp/env " ); // 3獲得自定義內容 DataSource ds = (DataSource)envContext.lookup( " jdbc/pool " ); Connection conn = ds.getConnection(); out.print(conn); %> </ body > </ html >
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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