基于Struts+Spring+JDBC架構(gòu)的課程設(shè)計(jì)實(shí)訓(xùn)教學(xué)示例項(xiàng)目——《網(wǎng)上銀行賬戶管理系統(tǒng)》——構(gòu)建項(xiàng)目數(shù)據(jù)庫連接組件和測試(第4部分)_第1頁
基于Struts+Spring+JDBC架構(gòu)的課程設(shè)計(jì)實(shí)訓(xùn)教學(xué)示例項(xiàng)目——《網(wǎng)上銀行賬戶管理系統(tǒng)》——構(gòu)建項(xiàng)目數(shù)據(jù)庫連接組件和測試(第4部分)_第2頁
基于Struts+Spring+JDBC架構(gòu)的課程設(shè)計(jì)實(shí)訓(xùn)教學(xué)示例項(xiàng)目——《網(wǎng)上銀行賬戶管理系統(tǒng)》——構(gòu)建項(xiàng)目數(shù)據(jù)庫連接組件和測試(第4部分)_第3頁
基于Struts+Spring+JDBC架構(gòu)的課程設(shè)計(jì)實(shí)訓(xùn)教學(xué)示例項(xiàng)目——《網(wǎng)上銀行賬戶管理系統(tǒng)》——構(gòu)建項(xiàng)目數(shù)據(jù)庫連接組件和測試(第4部分)_第4頁
基于Struts+Spring+JDBC架構(gòu)的課程設(shè)計(jì)實(shí)訓(xùn)教學(xué)示例項(xiàng)目——《網(wǎng)上銀行賬戶管理系統(tǒng)》——構(gòu)建項(xiàng)目數(shù)據(jù)庫連接組件和測試(第4部分)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于Struts+Spring+JDBC架構(gòu)的課程設(shè)計(jì)實(shí)訓(xùn)教學(xué)例如工程?網(wǎng)上銀行賬戶管理系統(tǒng)?構(gòu)建工程數(shù)據(jù)庫連接組件和測試第4/6局部1.1.1 在工程中應(yīng)用“單例模式1、添加一個(gè)創(chuàng)立“單例DBCP對象的工廠類 SingletonDBCPBasicDataSourceFactory1類名稱為SingletonDBCPBasicDataSource,包名稱為com.px1987.webbank.factory請注意該單例工廠類的程序結(jié)構(gòu)及編程要求。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); /最大的連接數(shù)目 oneDataSourceImp

6、le.setDefaultAutoCommit(true); return oneDataSourceImple; /(3) 2、添加一個(gè)使用該單例類的數(shù)據(jù)庫連接類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("不能正確地連接數(shù)據(jù)庫并且出現(xiàn)SQLException");public void closeDBCon() throws WebBankException if(con=null)return;try/注意:要識(shí)別是否為重復(fù)調(diào)用,否那么會(huì)出現(xiàn)數(shù)據(jù)庫連接已經(jīng)關(guān)閉的狀況con.close(); con = null;catch (SQLException e)logger.log(Level.I

10、NFO, e.getMessage();throw new WebBankException("不能正確地關(guān)閉數(shù)據(jù)庫連接");public Connection getConnection() throws WebBankException initDBConnection();return con;public boolean isDBConnectionClose()return (con=null)?true:false;3、修改cl配置文件以應(yīng)用該形式的數(shù)據(jù)庫連接類4、再執(zhí)行測試用例類5、停止MySQL效勞后再執(zhí)行測試用例類,將出現(xiàn)下面的錯(cuò)誤6、比照單例模式創(chuàng)立DB

11、CP對象后的性能效果再次執(zhí)行性能測試類TestConnectionPerformance程序發(fā)現(xiàn)比采用static語句塊的方式要慢點(diǎn)!為什么?1.1.2 應(yīng)用觀察者模式重構(gòu)Refactor系統(tǒng)中的日志處理功能實(shí)現(xiàn)1、請關(guān)注幾個(gè)主要的概念1什么是重構(gòu)?2為什么要重構(gòu)?-改良?3在應(yīng)用情況場合下應(yīng)用要應(yīng)用重構(gòu)?4如何重構(gòu)?-利用IDE工具實(shí)現(xiàn)2、觀察者模式1什么是觀察者模式2應(yīng)用的目的將日志記錄功能從業(yè)務(wù)類或者DAO類中別離出來職責(zé)的別離,減少“重復(fù)!3編程實(shí)現(xiàn)的方法1) 采用觀察者模式實(shí)現(xiàn)-如何編程實(shí)現(xiàn)2) 采用 Spring框架中AOP面向切面方面編程技術(shù) 3、金融行業(yè)中的日志記錄的重要性通過

12、采用交易日志機(jī)制等,加強(qiáng)內(nèi)部制約和監(jiān)督,提高了銀行業(yè)務(wù)數(shù)據(jù)的平安性。4、目前的ConnectDBBean和DBCPConnectDBBean、ConnectDBFactory等類中藕合有日志處理功能實(shí)現(xiàn)下面以DBCPConnectDBBean類為例說明,如何具體地應(yīng)用觀察者模式重構(gòu)系統(tǒng)中的日志處理功能實(shí)現(xiàn)。對于ConnectDBBean類和ConnectDBFactory類的程序工作修改,根本上是相同的。5、應(yīng)用觀察者模式的要點(diǎn)區(qū)分被觀察者和觀察者類。1事件源一般為被觀察者2對事件源作出反映的類為觀察者6、定義被觀察者-也就是數(shù)據(jù)庫連接類ConnectDBBean或者DBCPConnectDB

13、Bean、SingletonDBCPConnectDBBean類等1該類作為被觀察者類,應(yīng)該繼承于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); /最大的連接數(shù)目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("不能正確地連接數(shù)據(jù)庫并且出現(xiàn)SQLException-可能是數(shù)據(jù)庫效勞器沒有啟動(dòng)");public DBCPConnectDBBean() public void closeDBCon() throws WebBankException if(con=null)return;trycon.close(); /注意:要識(shí)別是否為重復(fù)調(diào)用,否那么會(huì)出現(xiàn)數(shù)據(jù)庫連接已經(jīng)關(guān)閉的狀況con = null;catch (SQLException e)this.addObserver(new LogObserver()

20、;this.setChanged();this.notifyObservers(e);throw new WebBankException("不能正確地關(guān)閉數(shù)據(jù)庫連接");public Connection getConnection() throws WebBankException initDBConnection();return con;public boolean isDBConnectionClose()return (con=null)?true:false;7、定義觀察者類所需要實(shí)現(xiàn)的日志業(yè)務(wù)功能接口1添加觀察者類LogObserver的接口Exceptio

21、nLogInterface該接口所在的包名稱為2設(shè)計(jì)該ExceptionLogInterface接口package com.px1987.webbank.util;public interface ExceptionLogInterface public void logInfo(String logInfoText);8、設(shè)計(jì)觀察者類LogObserver觀察者類需要實(shí)現(xiàn)包中的Observer接口和前面的ExceptionLogInterface接口,并且對異常進(jìn)行觀察。該類名稱為LogObserver、包為。目前該類的功能實(shí)現(xiàn)是基于JDK的Logger類實(shí)現(xiàn)日志功能。4編程該類package com.px1987.w

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論