jndi数据库连接方法 - seawavecau的专栏 - CSDNBlog

来源:百度文库 编辑:神马文学网 时间:2024/03/29 17:07:25

  准备工作:

1 首先安装软件并配置jdktomcat的环境变量,tomcat的安装路径为C:\Tomcat5

2 mysql中建立名称为mytest数据库

3 C:\Tomcat5\common\lib目录下添加mysql数据驱动

mysql-connector-java-3.1.8-bin.jar  如果要连接别的数据库在这里添加其他的

数据库驱动

 开始配置:

1 C:\Tomcat5\conf\Catalina\localhost目录下建立名称为jspdev.xml的文件

  代码内容如下

  

          

     

     

                         

                       factory          

                       org.apache.commons.dbcp.BasicDataSourceFactory        

                

                                      

                           

                  driverClassName            

                  com.mysql.jdbc.Driver           

                

                                      

                    

                       url        

                  jdbc:mysql://localhost/mytest?useUnicode=true&characterEncoding=GB2312

                  

                             

                

                       username             

                      root

              

                             

                                  

                       password                        

                                

               

                             

               

                          maxActive

                           20

              

                  

                         

                       maxIdle

                           10

                  

                  

                    

                 maxWait

                          -1

                       

          

     

 此段代码为设置web应用程序的jndi数据源属性以及其虚拟目录。我的程序所放目录为D:\work_space\mytest\jspdev,虚拟目录的名称为jspdev

  2  
D:\work_space\mytest\basetag目录下建立测试数据源连接的文件名称为test.jsp,代码如下

<%@ page import="java.io.*,java.util.*,java.sql.*,javax.sql.*,javax.naming.*"%>
<%@ page contentType="text/html;charset=GB2312"%>

DataSourse Connection Test

<%
 try{
  java.sql.Connection con;
  Statement stmt;
  ResultSet rs;
  
  Context ctx = new InitialContext();
  DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/jspdev");
  con=ds.getConnection();
  
  stmt=con.createStatement();
  rs=stmt.executeQuery("select * from  table1");
while(rs.next()){
  out.print(rs.getInt(1);

 

out.print(rs.getString(2));
}
  rs.close();
  stmt.close();
  con.close();
  
 }catch(Exception e){
  out.print(e.getMessage());
 }
  
%>

最后运行tomcat,在地址栏中输入http://localhost:8080/jspdev/test.jsp就可以看到运行结果了

注意:以下为连接其他数据库的连接改动字符串。

一,连接到sqlserver数据库

首先添加数据库连接驱动msbase.jarmssqlserver.jarmsutil.jar放入tomcatC:\Tomcat5\common\lib目录下。

更改C:\Tomcat5\conf\Catalina\localhost目录下jspdev.xml文件中                 

          

                  driverClassName            

                  com.microsoft.jdbc.sqlserver.SQLServerDriver             

      

                                      

                    

                       url                                jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=mytest

            

这些部分的内容,并修改数据库连接的用户名和密码。

二,连接到orcale数据库

与连接sqlserver数据库相同,更改jspdev.xml文件中的数据库驱动和连接字符串为

oracle.jdbc.driver.OracleDriver

dbc:oracle:thin:@127.0.0.1:1521:databasename

并在C:\Tomcat5\common\lib目录下添加数据库驱动文件ojdbc14.jar

三,在jsp页面中我们也可以通过javabean来调用数据库连接,代码如下

       

DataBaseConnection.java

     

        package com;

import java.sql.*;

import javax.naming.InitialContext;

import javax.naming.Context;

import javax.sql.DataSource;

//连接数据库的工具类。

public class DataBaseConnection

{

   /**

    *一个静态方法,返回一个数据库的连接。

    *这样达到了对数据库连接统一控制的目的。

    */

   public static Connection getConnection()

   {

      Connection con=null;

       try

       {

          Context ctx = new InitialContext();

          DataSourceds=(DataSource)ctx.lookup("java:comp/env/jdbc/jspdev");

            con=ds.getConnection();

          if (ds!=null)

          {

             con=ds.getConnection();

          }

      }

      catch(Exception e)

      {

                     e.printStackTrace();

        }

        return con;

    }

}

 

 

 
JNDI全称 Java Naming and Directory Interface
JNDI是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括LDAP、CORBA Common Object Service(COS)名字服务、RMI、NDS、DNS、Windows注册表等等。很多J2EE技术,包括EJB都依靠JNDI来组织和定位实体。
JDNI通过绑定的概念将对象和名称联系起来。在一个文件系统中,文件名被绑定给文件。在DNS中,一个IP地址绑定一个URL。在目录服务中,一个对象名被绑定给一个对象实体。
JNDI中的一组绑定作为上下文来引用。每个上下文暴露的一组操作是一致的。例如,每个上下文提供了一个查找操作,返回指定名字的相应对象。每个上下文都提供了绑定和撤除绑定名字到某个对象的操作。JNDI使用通用的方式来暴露命名空间,即使用分层上下文以及使用相同命名语法的子上下文。
jndi的用途:
1。你可以用jndi来得到object类的属性
如:Attribute attr =directory.getAttributes(personName).get("email");
String email = (String)attr.get();
2。你可以用jndi来搜索对象
如:foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);
查找谁的名字叫Fox在wiz部门的员工?
3。你可以用jndi通过naming/directory服务查询像printers和databases的对象
如:查询 Printer
Printer printer = (Printer)namespace.lookup(printerName);
printer.print(document);
4。你可以用jndi列表出命名空间的特殊级别的内容
如:
NamingEnumeration list = namespace.list("o=Widget, c=US");
while (list.hasMore()) {
NameClassPair entry = (NameClassPair)list.next();
display(entry.getName(), entry.getClassName());
}