jsp--4.分层实现业务处理--4.1.JNDI

一、JNDI简介

1.什么是JNDI

  • Java Naming and Directory Interface,Java命名和目录接口
  • 通过名称将资源与服务进行关联

2.JNDI的作用与优点

  • 在应用与Java对象或资源之间建立松耦合的逻辑关联,简化应用对于资源的配置及维护工作
  • 可以在更大范围、不同应用之间共享资源

3.JNDI的简单应用

---如何实现在Tomcat中发布一条信息供所有的Web应用程序使用?

1)发布信息:修改Tomcat\conf\context.xml文件

<Context>
    <!--其中name="tjndi" 为JNDI查找的名称-->
   <Environment name="tjndi" value="hello JNDI" type="java.lang.String" />
</Context>

2)获取资源:使用lookup()进行查找

// javax.naming.Context提供了查找JNDI 的接口
Context ctx = new InitialContext();	//初始化Context对象
// java:comp/env/为前缀
String testjndi = (String) ctx.lookup("java:comp/env/tjndi");//调用lookup()方法
out.print("JNDI: " + testjndi);

 


二、为什么使用连接池

 

JDBC连接数据库的方式是一种比较传统的连接方式,这种连接方式在执行过程中,需要经常与数据库建立连接,并且在使用后再关闭连接,释放资源。可想而知,频繁的连接和释放操作必然要耗费很多系统资源,而且容易引发异常,因而需要有一种新的技术来弥补它的不足,这就是连接池(Connection Pool)技术。

三、连接池技术原理

四、DataSource与连接池

1.javax.sql.DataSource接口的实现类

  • 负责管理与数据库的连接
  • 以连接池的形式对数据库连接进行管理

2.获取DataSource实例

  • Tomcat支持将DataSource实现发布为JNDI资源
  • Web应用通过JNDI获得DataSource引用

五、访问数据源

1.配置Tomcat的conf文件夹下的context.xml文件(ppt写的这种)

<Context>
   <Resource name="jdbc/news" auth="Container" type="javax.sql.DataSource"
      maxActive="100" maxIdle="30" maxWait="10000" username="newsu"
      password="123456" driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://127.0.0.1:3306/newsmanagersystem?
              useUnicode=true&amp;characterEncoding=utf-8" />
</Context>

2.配置Tomcat的conf文件夹下的server.xml文件(老师讲的这种)

	<!--配置了mysql数据源-->
	<Resource name="jdbc/mysql" auth="Container"
		type="javax.sql.DataSource"
		username="root"
		passward="123"
		driverClassName="com.mysql.jdbc.Driver"
		url="jdbc:mysql:///newsmanagersystem?useUnicode=true;characterEncoding=utf8;"
		maxActive="100"/>

 

属性名称

说明

name

指定Resource的JNDI名称

auth

指定管理Resource的Manager

type

指定Resource所属的Java类

maxActive

指定连接池中处于活动状态的数据库连接的最大数目

maxIdle

指定连接池中处于空闲状态的数据库连接的最大数目

maxWait

指定连接池中的连接处于空闲的最长时间

auth指定管理Resource的Manager(Container:由容器创建和管理Application:由Web应用创建和管理) maxWait指定连接池中的连接处于空闲的最长时间,超过这个时间会抛出异常,取值为-1,表示可以无限期等待。记住每个属性含义即可,一般都是使用模板,修改属性值即可

2.

添加数据库驱动文件

  • 把数据库驱动jar文件,加入到Tomcat的lib中

配置应用程序的web.xml文件

  • 在web.xml中配置<resource-ref>
​<resource-ref>
    <description>用于说明数据源</description>//可不写
    <!--数据源名称 在Tomcat的server.xml中配置的-->
    <res-ref-name>jdbc/news</res-ref-name>//指定JNDI的名字,与<Resource>元素中的name一致
    <res-type>javax.sql.DataSource</res-type>//指定引用资源的类名,与<Resource>元素中的type一致
    <res-auth>Container</res-auth>//指定管理所引用资源的Manager与<Resource>元素中的auth一致
</resource-ref>

在BaseDao.java文件中编写代码

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class BaseDao {
   public Connection getConnection () {
      Connection conn = null;
      try { //获取与逻辑名相关联的数据源对象
         Context ctx = new InitialContext();
         DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/news");
         conn = ds.getConnection();	             
      } catch (SQLException exception) {
         exception.printStackTrace();
      } catch (NamingException namingException)      
         namingException.printStackTrace();
      }
      return conn;
   }  
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值