Javaweb14高级数据库.ppt_第1页
Javaweb14高级数据库.ppt_第2页
Javaweb14高级数据库.ppt_第3页
Javaweb14高级数据库.ppt_第4页
Javaweb14高级数据库.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2019年6月5日,1,高级数据库的应用,2019年6月5日,2,本节课的内容:,数据源简介 配置数据源 存取二进制文件,2019年6月5日,3,1、数据源简介,数据库连接的建立和关闭是非常耗费系统资源的操作,通过DriverManager创建的连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完后再关闭,造成系统性能低下. 解决方案是在应用程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由应用程序动态的对池中的连接记性申请、使用和释放,2019年6月5日,4,JDBC2.0提供了javax.sql.DataSource接口,负责建立与数据库的连接,在应用程序中访问数据库不必编写连接数据库的代码,可以直接从数据源获得数据库的连接. 在JDBC的驱动中有实现该接口的实现类: Com.mysql.jdbc.jdbc2.optional.MysqlDataSource,2019年6月5日,5,程序中使用数据源的方式:,在程序中直接创建该类的对象,然后使用该对象获得数据库的连接 参考代码:DirectUseDataSource.java 使用JNDI注册数据源对象为一个命名服务,然后在程序中使用JNDI提供的接口按照名称查找得到对应的数据源,2019年6月5日,6,数据源和连接池,在DataSource中事先建立了多个数据库的连接,这些数据库的连接保存在连接池中.JAVA程序访问数据库时,只需从连接池中取出空闲状态的数据库连接,当程序访问数据库结束,在将数据库连接放回连接池,这样可以提高访问数据库的效率.,2019年6月5日,7,数据源和JNDI资源,DataSource对象由Tomcat提供,因此不用在程序中采用创建一个实例的方式来生成DataSource对象,但需要采用JAVA的一个技术JNDI来获得DataSource对象的引用. JNDI是一种将对象和名字绑定的技术,对象工厂负责生产对象,这些对象都和唯一名字绑定,外部程序可以通过名字来获得某个对象的引用.,2019年6月5日,8,在Java.naming包中提供了Context接口,该接口提供了将对象和名字绑定,以及通过名字检索对象的方法. Context接口的主要方法: bind(String name,Object obj)将对象与一个名字绑定 lookup(String name)返回与指定名字绑定的对象,2019年6月5日,9,外部应用程序访问对象工厂中的对象的过程:,JAVA程序,对象工厂,Obj1,Obj2,Obj3,Obj4,context.lookup(“obj1”),2019年6月5日,10,Tomcat把DataSource作为一种可配置的JNDI资源来处理,生成DataSource对象的工厂为mons.dbcp.BasicDataSourceFactory,在其中可以配置多个数据源,BasicDataSourceFactory,jdbc/mysql/sql_test,2019年6月5日,11,2、配置数据源,Tomcat提供了一个JNDI命名服务的实现,可以在server.xml中配置数据源的JNDI命名服务.步骤如下: 安装DBCP及JDBC驱动 在server.xml中加入定义数据源的元素, 在web.xml中加入数据源引用的元素。,2019年6月5日,12,在server.xml中加入定义数据源的元素,参看文件server.xml,配置了数据源后, Tomcat就会把这个数据源绑定到JNDI名称空间,可以通过查询其中配置的JNDI名字jdbc/mysql/sql_test就可以获得与数据库sql_test的连接,2019年6月5日,13,在其中定义了元素,其属性: Name指定资源的JNDI名字 Auth指定管理Resource的Manager,它有两个可选值:Container和Application, Container表示由容器来创建和管理Resource, Application表示由Web应用来创建和管理Resource Type指定Resource所属的Java类 factory指定生成DataResource的factory类名 maxActive指定数据库连接池中处于活动状态的数据库连接的最大数目,若为0则不限制,2019年6月5日,14,maxIdle指定数据库连接池中处于空闲状态的数据库连接的最大数目,若为0则不限制 maxWaitIdle指定数据库连接池中数据库连接处于空闲状态的最长时间,以毫秒为单位,超过这一时间将会抛出异常。若为-1则可以无限等待 Usename Password driverClassName url,2019年6月5日,15,在web.xml中加入数据源引用的元素, DataSource jdbc/mysql/sql_test javax.sql.DataSource Container ,2019年6月5日,16,Description对所引用资源的说明 res-ref-name指定所引用资源的JNDI名字,与Resource元素中大的name属性对应 res-type指定所引用资源的类的名字,与Resource元素中大的属性type对应 res-auth指定管理引用资源的Manager,与Resource元素中的属性auth对应,2019年6月5日,17,3、程序中访问数据源,按照上述修改两个配置文件,然后将MySql的驱动放到C:Tomcat 5.5commonlib目录下,如果是直接通过JDBC访问数据库,也可以将驱动放在应用的WEB-INFlib下面。 同时在JSP文件中要导入一些必要的包: 参考代码:datasourceTest.jsp,2019年6月5日,18,处理中文编码,在页面中声明中文编码: MySql驱动默认采用ISO-8859-1编码,可以采用下面两种方法之一 (1)URL改写为: jdbc:mysql:/localhost/sql_test?useUnicode=true&characterEncoding=gb2312,2019年6月5日,19,(2)如果在设定连接数据库的URL时,没有设定字符编码,则首先应知道JDBC驱动程序所使用的默认字符编码,然后对从数据库中取出的数据进行字符编码转换: String name=rs.getString(1); name=new String(name.getBytes(“ISO-8859-1”),gb2312”);,2019年6月5日,20,4、存取二进制文件,在数据库编程中,往往需要把二进制数据保存到数据库 将二进制文件存储到数据库的过程:首先打开文件,将文件内容读到缓冲区,然后建立数据库的连接,创建更新数据的JDBC语句对象

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论