Web数据库编程——Java 教学课件 ppt 作者 舒红平 第1-5章 第5章

上传人:E**** 文档编号:89350291 上传时间:2019-05-23 格式:PPT 页数:84 大小:2.26MB
返回 下载 相关 举报
Web数据库编程——Java 教学课件 ppt 作者 舒红平 第1-5章 第5章_第1页
第1页 / 共84页
Web数据库编程——Java 教学课件 ppt 作者 舒红平 第1-5章 第5章_第2页
第2页 / 共84页
Web数据库编程——Java 教学课件 ppt 作者 舒红平 第1-5章 第5章_第3页
第3页 / 共84页
Web数据库编程——Java 教学课件 ppt 作者 舒红平 第1-5章 第5章_第4页
第4页 / 共84页
Web数据库编程——Java 教学课件 ppt 作者 舒红平 第1-5章 第5章_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《Web数据库编程——Java 教学课件 ppt 作者 舒红平 第1-5章 第5章》由会员分享,可在线阅读,更多相关《Web数据库编程——Java 教学课件 ppt 作者 舒红平 第1-5章 第5章(84页珍藏版)》请在金锄头文库上搜索。

1、第5章 Java连接池,5.1 连接池简介 5.2 连接池的管理流程和常用接口 5.3 连接池的配置 5.4 Java常用特殊数据类型 5.5 通过程序实现连接池管理 思考题,5.1 连 接 池 简 介 在传统的两层结构中,客户端程序在启动时打开数据库连接,在退出程序时关闭数据库连接。这样,在整个程序运行过程中,每个客户端始终占用一个数据库连接,即使在大量没有数据库操作的空闲时间(如用户输入数据时),它也要占用一个数据库连接,从而造成数据库连接的使用效率低下。,5.1.1 连接池概述 在三层结构模式中,数据库连接通过中间层的连接池来进行管理。只有当用户真正需要进行数据库操作时,中间层才从连接池

2、申请一个连接,数据库操作完毕,连接立即释放到连接池中,以供其他用户使用。这样,不仅大大提高了数据库连接的使用效率,使得大量用户可以共享较少的数据库连接,而且省去了建立连接的时间。连接池的工作过程如图5.1所示。,5.1.1 连接池概述 在三层结构模式中,数据库连接通过中间层的连接池来进行管理。只有当用户真正需要进行数据库操作时,中间层才从连接池申请一个连接,数据库操作完毕,连接立即释放到连接池中,以供其他用户使用。这样,不仅大大提高了数据库连接的使用效率,使得大量用户可以共享较少的数据库连接,而且省去了建立连接的时间。连接池的工作过程如图5.1所示。,图5.1 连接池的工作过程,5.1.2 连

3、接池特性 当程序中需要建立数据库连接时,只需从内存中取一个来用而不用新建,使用完毕后,只需放回内存即可。而连接的建立、断开等都由连接池自身来管理。同时,我们还可以通过设置连接池的参数来控制连接池中的连接数、每个连接的最大使用次数等。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。,5.2 连接池的管理流程和常用接口,连接池接口用来实现连接池的管理。接口下定义了许多管理连接池的方法,如initialize()方法、destroy()方法、getConnection()方法等。下面是各连接池接口实现的管理功能:,public class

4、 ConnectionPool implements TimerListener public boolean initialize() /连接池初始化 public void destroy() /连接池的销毁 public synchronized java.sql.Connection getConnection() /取一个连接 public synchronized void close() /关闭一个连接 private synchronized void removeFromPool() /把一个连接从连接池中删除 private synchronized void fillPo

5、ol() /维护连接池大小 public synchronized void TimerEvent() /定时器事件处理函数 ,通过以上几个接口,可以完成连接池的基本管理。在TimerEvent()函数中完成连接池的状态检验工作,在执行fillPool()方法时连接池至少保持最小连接数。因为我们要保存每一个连接的状态,所以还需要一个数据库连接对象: class ConnectionObject public java.sql.Connection con; public boolean inUse; /是否被使用标志 public long lastAccess; /最近一次开始时间 publ

6、ic int useCount; /被使用次数 ,加入了ConnectionObject对象后,在ConnectionPool中操作的应该只是ConnectionObject,而其他进程需要的只是ConnectionObject的con属性,因此我们再加入一个类,作为其他进程获得与返回连接的接口: class Conn GetConnection(); /从连接池中取出一个有效连接 CloseConnection(); /返回连接,此时并没有关闭连接,只是放回了连接池 DestroyPool(); /销毁连接池 ,5.3 连接池的配置,5.3.1 通过Tomcat管理工具配置连接池 在浏览器的

7、地址栏输入http:/localhost:8080/admin,会出现如图5.2所示的页面。如果在安装Tomcat 5.0时没有修改过用户名和密码,那么就在用户名处输入admin,密码为空;如果修改过,就按照自己修改的用户名和密码输入。,图5.2 Tomcat管理工具登录主页,通过用户名和密码登录后,进入下一个配置页面,如图5.3所示,图5.3 Tomcat管理工具页面,进入配置页面后,在左边的树状目录中选择Resources里的Data Sources,然后在右边的Data Source Actions下拉菜单里选择Create New Data Source,如图5.4所示。,图5.4 创

8、建一个新的Data Source,在接下来出现的页面里输入相应的数据库驱动、URL地址、数据库用户名、密码等信息,这里我们以Oracle数据库为例,具体填写如图5.5所示。,图5.5 填写Data Sources配置信息,保存成功后会出现如图5.6所示的页面。,图5.6 保存信息成功,然后点击Commit Changes按钮来提交修改,最后还需要配置web.xml。打开webapps/ROOT/WEB-INF下的web.xml,加入如下内容:, Oracle Datasource example jdbc/OracleDB javax.sql.DataSource Container ,最后在

9、Oracle下面找到class12.zip,然后将其拷贝到tomcat/common/lib下。,5.3.2 通过修改server.xml配置连接池 在tomcat/conf/server.xml里的之间加入描述,如例程5.1所示。 例程5.1 server.xml . . . . , url jdbc:oracle:thin:localhost:1521:eBook driverClassName oracle.jdbc.driver.OracleDriver username system ,password manager maxActive 4 maxIdle 2 maxWait,50

10、00 factory mons.dbcp.BasicDataSourceFactory . . . .,5.3.3 运用连接池的一个实例,下面我们来看一个运用了连接池的例子。首先在Oracle数据库里新建一个表tb_testPool。可通过Sql Plus Worksheet创建表:在Oracle企业管理控制台的工具里打开Sql Plus Worksheet,然后直接在里面输入如例程5.2所示的sql语句。,例程5.2 通过Sql Plus Worksheet创建一个数据表 CREATE TABLE “SYSTEM“.“TB_TESTPOOL“ ( “ID“ VARCHAR2(10) NOT

11、NULL, “NAME“ VARCHAR2(10) NOT NULL, “AGE“ VARCHAR2(10) NOT NULL, PRIMARY KEY(“ID“), UNIQUE(“ID“) TABLESPACE “SYSTEM“ 创建好数据表后,在其中输入初始值,如表5-1所示。,表5-1 表的数据值,例程5.3 在Jsp中使用连接池(ConPool.jsp) %,String id = “; String name = “; String age = “; DataSource ds = null; try Context initCtx = new InitialContext();

12、Context envCtx = (Context)initCtx.lookup(“java:comp/env“); /从Context中查找数据源 ds = (DataSource)envCtx.lookup(“DBConPool“); if(ds!=null) out.println(“连接池连接成功!“);,out.println(“); out.println(“); Connection con = ds.getConnection(); Statement stmt = con.createStatement(); String sql = “select * from syste

13、m.tb_testPool“; ResultSet rs = stmt.executeQuery(sql); out.println(“数据表中数据如下:“); out.println(“); % 学号,姓名 年龄 , % rs.close(); stmt.close(); con.close(); else out.println(“连接失败“); catch(Exception e), % ,注意:按照上面的步骤运行后可能得不到正确的结果,这时还必须进入 tomcatconfCatalinalocalhost 打开里面的root.xml文件,并在其中的之间添加 添加以后,再重新启动Tomc

14、at服务器,就可以得到如图5.7所示的结果了。,图5.7 通过连接池导出数据库里的数据,如果很多应用都需要进行连接池的操作,就需要重复上述例程里的部分代码,则显得比较麻烦。为此,我们可以把查找数据源和访问连接的操作封装起来,作为一个Bean组件以方便以后的调用。如例程5.4所示。,例程5.4 DBConnPool.java import javax.naming.Context; import javax.sql.DataSource; import javax.naming.InitialContext“; import=“java.sql.*; public class DBConnPoo

15、l public static synchronized Connection getConnection() throws Exception try Context initCtx = new InitialContext(); Context envCtx = (Context)initCtx.lookup(“java:comp/env“);,DataSource ds = (DataSource)envCtx.lookup(“DBConnPool“); return ds.getConnection(); catch(SQLException e) throw e; catch(Nam

16、ingException e) throw e; ,有了这个Bean组件,以后可直接在程序中使用: Connection con = DBConnPool.getConnection(); 这样,就可以方便地与连接池建立连接了。,5.4 Java常用特殊数据类型,5.4.1 哈希表类 哈希表(Hashtable)是一种重要的存储方式,也是一种常见的检索方法。其基本思想是将关系码的值作为自变量,通过一定的函数关系计算出对应的函数值,把这个数值解释为结点的存储地址,将结点存入计算结果得到的存储地址所对应的存储单元。 检索时采用检索关键码的方法。现在的哈希表有一套完整的算法来进行插入、删除和解决冲突。在Java中,哈希表用于存储对象,实现快速检索。,Java.util.Hashtable提供了三种方法让用户使用哈希表,而不需要考虑其哈希表是如何工作的。哈希表类中提供了三种构造方法,如表5-2所示。,表5-2 哈希表类的构造

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号