《连接池、jndi和javabean》由会员分享,可在线阅读,更多相关《连接池、jndi和javabean(42页珍藏版)》请在金锄头文库上搜索。
1、连连接池、JNDI和JavaBean回顾及作业点评请描述什么是JSP内置对象? 列举你知道的JSP内置对象并说明其作用 请描述一下Cookie与session的区别? 请描述实现页面访问控制的工作流程?预习检查 什么是连接池?为什么要使用连接池? 什么是JNDI?JNDI可以作什么? 什么是JavaBean? 在JSP中如何使用JavaBean? 使用JNDI获取数据源 理解数据库连接池 使用JavaBean封装业务逻辑本章任务 会使用JNDI查找服务 掌握数据库连接池原理 掌握JavaBean的实际应用 掌握集成工具MyEclipse的使用本章目标JNDI介绍什么是JNDI JNDI(Jav
2、a Naming and Directory Interface,Java 命名和目录接口) 是一组在Java应用中访问命名和目录服务的API 通过名称将资源与服务进行关联JNDI的简单应用应用步骤 修改Tomcatconfcontext.xml文件使用lookup()进行查找/javax.naming.Context提供了查找JNDI 的接口 Context ctx = new InitialContext(); /java:comp/env/为前缀 String testjndi = (String)ctx.lookup(“java:comp/env/tjndi“); out.printl
3、n(“JNDI: “+testjndi);初始化Context对象调用lookup()方法教员演示示例:JNDI查找JNDI查找的名称生活中的连接池普通电话 -建立连接,等待回应热线电话 -已建立连接连接已连接开始通话开始通话已连接,直接通话连接中 传统数据库连接方式的不足每一次请求时均需要与数据库进行连接,资源占用 较多当并发访问数量较大时,网站速度收到极大影响在访问结束后必须要关闭连接释放资源系统的安全性和稳定性相对较差为什么使用连接池-1为什么使用连接池-2企业级开发需要稳健和高效的数据访问层 完成对数据库的CRUD操作 能够处理数据库发生的各种错误 可以灵活的修改配置 提供方便使用的工
4、具 高性能数数 据据 库库请求响应操作结果要求高效、稳健的数据访问层打开连接,操作数 据库,关闭连接多次重复操作传统的JDBC已经 无法满足需求,那 怎么办呢?什么是连接池技术连接池 连接池是在内存中预设好一定数量的连接对象,以备 用户在进行数据库操作时直接使用 性能 数据库连接的建立、断开均由管理池统一管理 连接池技术与传统数据库连接的比较 数据库操作性能得到提升 通过连接池管理数据库的连接与释放、提高了系统资 源的使用效率连接池技术工作原理连接池中的连接数数 据据 库库想要获得连接返回一个连接返回一个已连接 好的空闲连接应用程序从连接池中获得连接连接池是由容器提供的, 用来管理池中连接对象
5、应用程序连接池Connection1Connection2Connection3数据源简介数据源(DataSource) javax.sql.DataSource接口负责建立与数据库的连接 从Tomcat的数据源获得连接 把连接保存在连接池中应用程序Connection1Connection2Connection3数数 据据 库库想要获得连接返回一个连接连接池连接池中的连接对象 是由谁创建的呢?访问数据源-1如何获得DataSource对象 数据源由Tomcat提供,不能在程序中创建实例 使用JNDI获得DataSource引用应用程序jdbc/s1jdbc/s2数据源数据源名称Connect
6、ioncontext.lookup(“ jdbc/s1 “)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/
7、env/jdbc/news“);Connection connection = source.getConnection();titlesQuery = connection.prepareStatement(“SELECT * FROM titles “);ResultSet results = titlesQuery.executeQuery();/为为BookBean对象的属性赋值,并添加到titlesList中 catch (SQLException exception) exception.printStackTrace();catch (NamingException naming
8、Exception) namingException.printStackTrace();finally closeConn(); 使用JNDI和数 据源要导入的包通过Context、DataSource 获取Connection对象分为两部分java:comp/env 为JavaEE默认路径 jdbc/news为DataSource名定义JNDI异常访问数据源-2演示案例:如何获取数据源访问数据源-3Tomcat的conf/context.xml中的配置属性名称说明 name指定Resource的JNDI名称auth指定管理Resource的Manager(Container:由容器创 建和
9、管理|Application:由Web应用创建和管理) type指定Resource所属的Java类 maxActive指定连接池中处于活动状态的数据库连接的最大数目 maxIdle指定连接池中处于空闲状态的数据库连接的最大数目maxWait指定连接池中的连接处于空闲的最长时间,超过这个 时间会抛出异常,取值为-1,表示可以无限期等待访问数据源-4加入数据库驱动文件 把数据库驱动的.jar文件,加入到Tomcat的 commonlib中 应用程序的web.xml文件的配置 在web.xml中配置jdbc/news javax.sql.DataSource Container 指定JNDI的名字
10、,与元素中的name一致指定引用资源的类名,与 元素中的type一致指定管理所引用资源的Manager与元素中的auth一致指导-使用连接池实现数据库连接 完成时间:20分钟训练要点: 连接池的配置 通过JNDI查找数据源 需求说明: 通过连接池方式访问数 据库 实现思路及关键代码: 配置context.xml文件 配置web.xml文件 编码实现查找数据源获 取连接集成开发工具MyEclipseMyEclipse简介 Eclispe开发工具的扩展 丰富的JavaEE开发环境 支持编码、调试、测试、发布 创建Web项目步骤-1创建项目 选择“菜单” “新建” “新建项目”创建Web项目步骤-2
11、创建Web工程 在“新建项目” “MyEclipse” “Java Enterprise Project” “Web Project” MyEclipse应用-3创建Web工程确定项目名称及项目根目录项目名称设置目录指定项目环境Web项目的目录结构Web项目目录结构项目名称存放项目源文件项目应用的环境项目访问的根 目录使用MyEclipse开发创建JSP页面 在“WebRoot”下右键“新建” “JSP” 修改JSP页面名称修改页面名称JSP模板自带内容Web项目部署Web项目的部署启动部署 选择部署项目 选择服务器 部署成功启动部署选择项目选择服务器 指定部署项目的服 务器发布成功运行Web
12、项目启动服务器控制台信息启动服务器相关信息显示生活中的组件开发小孩的积木 积木块组装成品JavaEE组组件组件间协作应用程序为什么需要JavaBean-1 public int saveOrder(String username,String zipcode,String phone,String creditcard,double total)try con = ConnectionManager.getConnction();String strSql = “insert into BookOrder(username,zipcode,phone,“+ “creditcard,total)
13、 values(?,?,?,?,?)“;pStatement = con.prepareStatement(strSql);pStatement.setString(1, username);/设设置其它参数值值 result = pStatement.executeUpdate(); catch (SQLException sqlE) sqlE.printStackTrace(); return result; 参数过多,且为对象属性如何按照OO设计参数?使用JavaBean进行参数的传递传统处理处理的业务的弊端为什么需要JavaBean-2JavaBean的优势解决代码重复编写,减少代码冗
14、余 功能区分明确,避免业务逻辑处理与页面显示处 理集中在一起造成混乱 提高了代码的维护性JavaBean及其分类符合规范的Java类都是JavaBean JavaBean的分类封装数据 按照OO原则,属性与数据库表字段相对应 属性私有 具有public的set/get方法 封装业务 具有实现特定功能的方法和方法实现 通常与一个封装数据的JavaBean对应封装数据的JavaBean-1public class Comment private String cid; / 用户户名private String cnid; / 邮编邮编private String ccontent;/ 电话电话pu
15、blic Comment () public void setCid(String cid) this. cid= cid;public String getCid() return cid;/其它属性的setter、getter方法 将属性声明为为私有属性无参的公有构造方法公有的设设置属性值值方法setXxx( )公有的获获取属性值值方法getXxx( )封装数据的JavaBean封装数据的JavaBean-2使用Eclipse工具自动生成getter/setter方法封装业务的JavaBeanpublic class CommentControl public int getMaxId()
16、 int result = 0;try Connection con = ConnectionManager.getConnction();String strSql = “select max(cid) from comment “;PreparedStatement pStatement = con.prepareStatement(strSql);ResultSet rs = pStatement.executeUpdate();if(rs.next()result = rs.getInt(1)+1; catch (SQLException sqlE) sqlE.printStackTrace(); return result; 封装获获取最大ID的