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
      
      
        >
      
    
  


 
					 
					