JavaWeb第六章连接池与数据源.ppt_第1页
JavaWeb第六章连接池与数据源.ppt_第2页
JavaWeb第六章连接池与数据源.ppt_第3页
JavaWeb第六章连接池与数据源.ppt_第4页
JavaWeb第六章连接池与数据源.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1,第六章,连接池与数据源,2,回顾,什么是过滤器,它的作用是什么? 过滤器实质就是一个实现了相应接口(javax.servlet.Filter)的Java类,它处于客户端和web资源(Jsp、Servlet等)之间,用于对请求或者响应进行拦截,添加一些额外的处理。 实现过滤器的步骤是什么? 建立一个实现Filter接口的类,并实现相应方法。 在web.xml中对过滤器进行配置。 Servlet事件监听按照监听对象来分类可分为哪三类? Servlet上下文事件监听 会话事件监听 请求事件监听,3,预习检查,连接池技术的核心思想是什么? 连接复用。 什么是JNDI? JNDI(Java Naming and Directory Interface)是用于向Java程序提供目录和命名功能的API。 配置数据源时,需要修改Tomcat服务器的安装目录的conf下的哪个文件? Context.xml文件,本章任务,在第三章的分页标签的基础上,5,会使用JNDI获取数据源 理解数据库连接池 会读取基于属性文件的数据库配置信息 掌握通用的DAO类,本章目标,MVC的Model层,1、如何理解MVC中的Model?,MVC设计模式 模型 - Model 视图 - View 控制器 - Controller,MVC 对象,控制器,模型,视图,?,JSP,Servlet,Model层主要是进行 业务逻辑处理、访问 数据库和封装数据,企业级开发对Model层的要求,企业级开发需要稳健和高效的数据访问层 完成对数据库的CRUD操作 能够处理数据库发生的各种错误 可以灵活的修改配置 提供方便使用的工具 高性能,数 据 库,请求,响应,操作,结果,要求高效、稳健的数据访问层,打开连接,操作数据库,关闭连接,多次重复操作,传统的JDBC已经无法满足需求,那怎么办呢?,数据库连接池(2-1),普通电话 -建立连接,等待回应 热线电话 -已建立连接,连接,已连接,开始通话,开始通话,已连接,直接通话,连接中,流程框架图标使用规范,连接池中的连接,数 据 库,想要获得连接,返回一个连接,返回一个已连接好的空闲连接,应用程序从连接池中获得连接,连接池是由容器提供的,用来管理池中连接对象,应用程序,连接池,数据源简介,数据源(DataSource) javax.sql.DataSource接口负责建立与数据库的连接 从Tomcat的数据源获得连接 把连接保存在连接池中,应用程序,Connection1,Connection2,Connection3,数 据 库,想要获得连接,返回一个连接,连接池,连接池中的连接对象 是由谁创建的呢?,JNDI介绍,如何获得DataSource对象 数据源由Tomcat提供,不能在程序中创建实例 使用JNDI获得DataSource引用 什么是JNDI JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API javax.namming.Context接口的lookup()方法,应用程序,jdbc/s1,jdbc/s2,数据源,数据源名称,Connection,context.lookup(“ jdbc/s1 “),使用JNDI获取连接对象,import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; public class TitlesBean public List getTitles() try Context ic = new InitialContext(); DataSource source = (DataSource)ic.lookup(“java:comp/env/jdbc/books“); Connection connection = source.getConnection(); titlesQuery = connection.prepareStatement(“SELECT * FROM titles “); ResultSet results = titlesQuery.executeQuery(); /为BookBean对象的属性赋值,并添加到titlesList中 catch (SQLException exception) exception.printStackTrace(); catch (NamingException namingException) namingException.printStackTrace(); finally closeConn(); ,使用JNDI和数 据源要导入的包,通过Context、DataSource 获取Connection对象,分为两部分java:comp/env 为JavaEE默认路径 jdbc/books为DataSource名,定义JNDI异常,演示示例1:JNDI的使用TitlesBean.java,JNDI的配置,Tomcat的conf/context.xml中的配置,JNDI的配置,加入数据库驱动文件 把数据库驱动的.jar文件,加入到Tomcat的commonlib中 应用程序的web.xml文件的配置 在web.xml中配置, jdbc/books javax.sql.DataSource Container ,指定JNDI的名字,与元素中的name一致,指定引用资源的类名,与 元素中的type一致,指定管理所引用资源的Manager与元素中的auth一致,常见错误,1、Cannot load JDBC driver class,这是什么错误?,通过数据源访问数据库,由于数据源由Tomcat创建并维护,所以必须把JDBC驱动程序拷贝到Tomcat的common/lib目录下。,代码框图标使用规范,2、Cannot create JDBC driver of class for connect URL null,DataSource source = (DataSource) ic.lookup(“java:comp/env/jdbc/books“); connection = source.getConnection(); titlesQuery = connection.prepareStatement(“SELECT * FROM titles “);,要一致,这是什么错误?,TitlesBean.java,context.xml,常见错误,3、Name jdbc is not bound in this Context,DataSource source = (DataSource) ic.lookup(“/jdbc/books“); connection = source.getConnection();,这是什么错误?,参数错误,应该是 “ java:comp/env/jdbc/books “,JNDI小结,如何配置JNDI? 如何通过JNDI获得数据库连接对象? JNDI相比JDBC有什么优点?,数据库的配置,关于数据库的配置 把配置信息写在代码中 把配置信息存储在.properties文件中,private static final String DATASOURCE = “jdbc:odbc:NewsDataSource“; private static final String DRIVER_CLASS = “com.microsoft.jdbc.sqlserver.SQLServerDriver“; private static final String DATABASE_URL = “jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=books“; private static final String DATABASE_USRE = “sa“; private static final String DATABASE_PASSWORD = “; public static Connection getConnction() Connection dbConnection = null; try Class.forName(DRIVER_CLASS); dbConnection = DriverManager.getConnection(DATABASE_URL, DATABASE_USRE, DATABASE_PASSWORD); catch (Exception e) e.printStackTrace(); return dbConnection; ,数据库的配置信息,如果数据库信息改变,要重新进行编译,程序才能正确执行。,driver=com.microsoft.jdbc.sqlserver.SQLServerDriver url=jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=books user=sa password=120010,以键值对的形式存储 数据,中间用=分隔,perties,基于属性文件的数据库配置,从属性文件中读取配置信息,public final class Env extends Properties private static Env instance; public static Env getInstance() if (instance != null) return instance; else makeInstance(); return instance; private static synchronized void makeInstance() if (instance = null) instance = new Env(); private Env() InputStream is = getClass().getResourceAsStream(“/perties“); try load(is); catch (Exception e) e.printStackTrace(); ,Java用来操作.properties文件的类,静态方法可以通过类名直接调用,同步方法,在同一时间,只允许一个人调用,保证安全性,把.properties文件内容加裁到对象中,总结,为什么使用JNDI? 到目前为止连接数据库有几种方式? 说明从.properties文件中读取数据的步骤,22,小结 2,使用会话事件监听技术,完成对于会话事件监听的类(MySessionListener.java)。 1、建立会话事件监听类(MySessionListener.java) 并实现ervletRequestListener, ServletRequestAttributeListener 接口。 2、完成测试会话事件监听的JSP页面(listener_session.jsp)。 3、将事件监听配置在Web.xml中。,8分钟时间,23,什么是过滤器,它的作用是什么? 过滤器实质就是一个实现了相应接口(javax.servlet.Filter)的Java类,它处于客户端和web资源(Jsp、Servlet等)之间,用于对请求或者响应进行拦截,添加一些额外的处理。 过滤器的优点是什么? 过滤器以一种模式化的或可重用的方式封装公共的行为。 利用过滤器能够将高级决策与表现代码分离。 过滤器能够对于不同的资源进行批量性的修改。 实现过滤器

温馨提示

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

评论

0/150

提交评论