基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——构建项目数据库连接组件和测试(第4部分)_第1页
基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——构建项目数据库连接组件和测试(第4部分)_第2页
基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——构建项目数据库连接组件和测试(第4部分)_第3页
基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——构建项目数据库连接组件和测试(第4部分)_第4页
基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——构建项目数据库连接组件和测试(第4部分)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、基于Struts+Spring+JDBC架构的课程设计实训教学例如工程?网上银行账户管理系统?构建工程数据库连接组件和测试第4/6局部1.1.1 在工程中应用“单例模式1、添加一个创立“单例DBCP对象的工厂类 SingletonDBCPBasicDataSourceFactory1类名称为SingletonDBCPBasicDataSource,包名称为com.px1987.webbank.factory请注意该单例工厂类的程序结构及编程要求。2程序代码如下package com.px1987.webbank.factory;import org.apache mons.dbcp.Basic

2、DataSource;import com.px1987.webbank.config.ClassNameConfig;import com.px1987.webbank.exception.WebBankException;public class SingletonDBCPBasicDataSourceFactory private static BasicDataSource oneDataSourceImple=null;/(1)public SingletonDBCPBasicDataSourceFactory() / 下面的方法为单例工厂方法 public synchronized

3、 static BasicDataSource newBasicDataSourceInstance() throws WebBankException if(oneDataSourceImple=null) /(2) String JDBC_DBDriver_ClassName = ClassNameConfig.getProperty ("JDBC_DBDriver_ClassName"); String JDBC_DSN_URL = ClassNameConfig.getProperty ("JDBC_DSN_URL"); String JDBC_

4、dbUserName = ClassNameConfig.getProperty ("JDBC_dbUserName"); String JDBC_dbUserPassWord = ClassNameConfig.getProperty ("JDBC_dbUserPassWord"); String JDBC_dbcp_maxActive = ClassNameConfig.getProperty ("JDBC_dbcp_maxActive"); oneDataSourceImple=new BasicDataSource(); on

5、eDataSourceImple.setDriverClassName(JDBC_DBDriver_ClassName); oneDataSourceImple.setUrl(JDBC_DSN_URL); oneDataSourceImple.setUsername(JDBC_dbUserName); oneDataSourceImple.setPassword(JDBC_dbUserPassWord);oneDataSourceImple.setMaxActive(Integer.parseInt(JDBC_dbcp_maxActive); /最大的连接数目 oneDataSourceImp

6、le.setDefaultAutoCommit(true); return oneDataSourceImple; /(3) 2、添加一个使用该单例类的数据库连接类SingletonDBCPConnectDBBean1类名称为SingletonDBCPConnectDBBean,包名称为2程序代码package com.px1987.webbank.dao.imple;import java.sql.Connection;import java.sql.SQLException;ging.Level;import java.util.logging.Logger;import org.apac

7、he mons.dbcp.BasicDataSource;import er.ConnectDBInterface;import com.px1987.webbank.exception.WebBankException;import com.px1987.webbank.factory.SingletonDBCPBasicDataSourceFactory;public class SingletonDBCPConnectDBBean implements ConnectDBInterface Connection con=null;pri

8、vate Logger logger = Logger.getLogger(this.getClass().getName(); public SingletonDBCPConnectDBBean()public void initDBConnection() throws WebBankExceptionBasicDataSource oneDataSourceImple=SingletonDBCPBasicDataSourceFactory.newBasicDataSourceInstance();trycon=oneDataSourceImple.getConnection();catc

9、h (java.sql.SQLException e)logger.log(Level.INFO, e.getMessage();throw new WebBankException("不能正确地连接数据库并且出现SQLException");public void closeDBCon() throws WebBankException if(con=null)return;try/注意:要识别是否为重复调用,否那么会出现数据库连接已经关闭的状况con.close(); con = null;catch (SQLException e)logger.log(Level.I

10、NFO, e.getMessage();throw new WebBankException("不能正确地关闭数据库连接");public Connection getConnection() throws WebBankException initDBConnection();return con;public boolean isDBConnectionClose()return (con=null)?true:false;3、修改cl配置文件以应用该形式的数据库连接类4、再执行测试用例类5、停止MySQL效劳后再执行测试用例类,将出现下面的错误6、比照单例模式创立DB

11、CP对象后的性能效果再次执行性能测试类TestConnectionPerformance程序发现比采用static语句块的方式要慢点!为什么?1.1.2 应用观察者模式重构Refactor系统中的日志处理功能实现1、请关注几个主要的概念1什么是重构?2为什么要重构?-改良?3在应用情况场合下应用要应用重构?4如何重构?-利用IDE工具实现2、观察者模式1什么是观察者模式2应用的目的将日志记录功能从业务类或者DAO类中别离出来职责的别离,减少“重复!3编程实现的方法1) 采用观察者模式实现-如何编程实现2) 采用 Spring框架中AOP面向切面方面编程技术 3、金融行业中的日志记录的重要性通过

12、采用交易日志机制等,加强内部制约和监督,提高了银行业务数据的平安性。4、目前的ConnectDBBean和DBCPConnectDBBean、ConnectDBFactory等类中藕合有日志处理功能实现下面以DBCPConnectDBBean类为例说明,如何具体地应用观察者模式重构系统中的日志处理功能实现。对于ConnectDBBean类和ConnectDBFactory类的程序工作修改,根本上是相同的。5、应用观察者模式的要点区分被观察者和观察者类。1事件源一般为被观察者2对事件源作出反映的类为观察者6、定义被观察者-也就是数据库连接类ConnectDBBean或者DBCPConnectDB

13、Bean、SingletonDBCPConnectDBBean类等1该类作为被观察者类,应该继承于java.util 包中的Observable类2代码例如bank.dao.imple;import java.sql.Connection;import java.sql.SQLException;import java.util.Observable;import org.apache mons.dbcp.BasicDataSource;import com.px1987.webbank.config.ClassNameConfig;import com.px1987.webbank.dao.

14、inter.ConnectDBInterface;import com.px1987.webbank.exception.WebBankException;import com.px1987.webbank.util.LogObserver;public class DBCPConnectDBBean extends Observable implements ConnectDBInterfaceprivate java.sql.Connection con = null;private static BasicDataSource oneDataSourceImple=null;privat

15、e static String JDBC_DBDriver_ClassName =null;private static String JDBC_DSN_URL = null;private static String JDBC_dbUserName=null;private static String JDBC_dbUserPassWord=null;private static String JDBC_dbcp_maxActive = null;static JDBC_DBDriver_ClassName = ClassNameConfig.getProperty("JDBC_D

16、BDriver_ClassName");JDBC_DSN_URL = ClassNameConfig.getProperty("JDBC_DSN_URL");JDBC_dbUserName = ClassNameConfig.getProperty("JDBC_dbUserName");JDBC_dbUserPassWord = ClassNameConfig.getProperty("JDBC_dbUserPassWord");JDBC_dbcp_maxActive = ClassNameConfig.getPropert

17、y("JDBC_dbcp_maxActive");oneDataSourceImple=new BasicDataSource();oneDataSourceImple.setDriverClassName(JDBC_DBDriver_ClassName);oneDataSourceImple.setUrl(JDBC_DSN_URL);oneDataSourceImple.setUsername(JDBC_dbUserName);oneDataSourceImple.setPassword(JDBC_dbUserPassWord);oneDataSourceImple.se

18、tMaxActive(Integer.parseInt(JDBC_dbcp_maxActive); /最大的连接数目oneDataSourceImple.setDefaultAutoCommit(true);public void initDBConnection() throws WebBankExceptiontrycon=oneDataSourceImple.getConnection();catch (java.sql.SQLException e)this.addObserver(new LogObserver();this.setChanged();this.notifyObser

19、vers(e);throw new WebBankException("不能正确地连接数据库并且出现SQLException-可能是数据库效劳器没有启动");public DBCPConnectDBBean() public void closeDBCon() throws WebBankException if(con=null)return;trycon.close(); /注意:要识别是否为重复调用,否那么会出现数据库连接已经关闭的状况con = null;catch (SQLException e)this.addObserver(new LogObserver()

20、;this.setChanged();this.notifyObservers(e);throw new WebBankException("不能正确地关闭数据库连接");public Connection getConnection() throws WebBankException initDBConnection();return con;public boolean isDBConnectionClose()return (con=null)?true:false;7、定义观察者类所需要实现的日志业务功能接口1添加观察者类LogObserver的接口Exceptio

21、nLogInterface该接口所在的包名称为2设计该ExceptionLogInterface接口package com.px1987.webbank.util;public interface ExceptionLogInterface public void logInfo(String logInfoText);8、设计观察者类LogObserver观察者类需要实现包中的Observer接口和前面的ExceptionLogInterface接口,并且对异常进行观察。该类名称为LogObserver、包为。目前该类的功能实现是基于JDK的Logger类实现日志功能。4编程该类package com.px1987.w

温馨提示

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

评论

0/150

提交评论