第2天:初步接触JNDI

JNDI(Java Naming and Directory Interface)

JNDI是Java命名和目录接口的简称,

  1. 最开始的时候,是通过 DAO 层的 JDBC 进行连接MySQL数据库;
  2. 后来通过 JDBCUtil 包将连接封装到Dao类外面,进而获取 Connection 对象;
  3. 通过 jdbc.propreties 数据库连接池连接数据库;
  4. 在 MyBatis 框架中,在 mybatis.xml 文件中配置数据库的连接;

但是,一旦将源码打包成 war 包,若后期修改或更换数据库,就需要重新打 war 包,重新发布;而 JNDI 是通过在服务器上将数据库进行连接,只需要更改服务器上的配置连接即可。

jndi诞生的理由:随着分布式应用的发展,远程访问对象访问成为常用的方法。
jndi的架构
JNDI提供了一组标准的命名规范的API;这个基础API构建在SPI之上。

这个API提供了5个包:

javax.naming
javax.naming.directory
javax.naming.event
javax.naming.ldap
javax.naming.spi

在 tongWeb 服务器上使用JNDI获取数据源对象可分为四个步骤:

(1)在tongWeb服务器上配置数据库连接池
(2)配置web.xml文件
(3)添加驱动
(4)编写代码,使用 loopup() 方法获得数据源对象。

(什么是数据源?
答:数据源中存储了所有建立数据库连接的信息,它就是连接到实际数据库的一条路径; 换句话说就是,口令或令牌就是数据库的账号,密码等信息,也就是所谓的数据源。
数据源:负责建立与数据库的连接,应用程序可以直接从数据源中得到数据库连接。
)

(1)在tongWeb服务器上配置数据库连接池
在这里插入图片描述
(2)配置web.xml文件
如果没有web.xml的话,新建一个文件
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<resource-ref>
  		<description>DB Connection</description>
		<res-ref-name>testdb</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
    </resource-ref>

  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
</web-app>

(3)添加驱动
在这里插入图片描述
(4)编写代码,使用 loopup() 方法获得数据源对象。
Dao层中获取数据库连接的部分代码

//javax.naming.Context提供了查找 JNDI 的接口
Context ctx = new InitialContext();

//java:comp/env/为前缀,使用 loopup() 方法获得数据源对象。
DataSource ds = (DataSource)ctx.lookup("java:comp/env/testdb");
conn = ds.getConnection(); //通过数据源获得数据源中的连接

String sql="insert into t_user values(default,?,?,?,?,?)";
ps=conn.prepareStatement(sql);
发布了92 篇原创文章 · 获赞 49 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Xxacker/article/details/88419722
今日推荐