jndi数据库连接方法 - seawavecau的专栏 - CSDNBlog
来源:百度文库 编辑:神马文学网 时间:2024/03/29 17:07:25
准备工作:
1 首先安装软件并配置jdk和tomcat的环境变量,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的文件
代码内容如下
此段代码为设置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"%>
<%
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.jar,mssqlserver.jar,msutil.jar放入tomcat的C:\Tomcat5\common\lib目录下。
更改C:\Tomcat5\conf\Catalina\localhost目录下jspdev.xml文件中
这些部分的内容,并修改数据库连接的用户名和密码。
二,连接到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());
}