




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、基于Struts+Spring+JDBC架構的課程設計實訓教學例如工程?網(wǎng)上銀行賬戶管理系統(tǒng)?構建工程數(shù)據(jù)庫連接組件和測試第4/6局部1.1.1 在工程中應用“單例模式1、添加一個創(chuàng)立“單例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); /最大的連接數(shù)目 oneDataSourceImp
6、le.setDefaultAutoCommit(true); return oneDataSourceImple; /(3) 2、添加一個使用該單例類的數(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/注意:要識別是否為重復調(diào)用,否那么會出現(xiàn)數(shù)據(jù)庫連接已經(jīng)關閉的狀況con.close(); con = null;catch (SQLException e)logger.log(Level.I
10、NFO, e.getMessage();throw new WebBankException("不能正確地關閉數(shù)據(jù)庫連接");public Connection getConnection() throws WebBankException initDBConnection();return con;public boolean isDBConnectionClose()return (con=null)?true:false;3、修改cl配置文件以應用該形式的數(shù)據(jù)庫連接類4、再執(zhí)行測試用例類5、停止MySQL效勞后再執(zhí)行測試用例類,將出現(xiàn)下面的錯誤6、比照單例模式創(chuàng)立DB
11、CP對象后的性能效果再次執(zhí)行性能測試類TestConnectionPerformance程序發(fā)現(xiàn)比采用static語句塊的方式要慢點!為什么?1.1.2 應用觀察者模式重構Refactor系統(tǒng)中的日志處理功能實現(xiàn)1、請關注幾個主要的概念1什么是重構?2為什么要重構?-改良?3在應用情況場合下應用要應用重構?4如何重構?-利用IDE工具實現(xiàn)2、觀察者模式1什么是觀察者模式2應用的目的將日志記錄功能從業(yè)務類或者DAO類中別離出來職責的別離,減少“重復!3編程實現(xiàn)的方法1) 采用觀察者模式實現(xiàn)-如何編程實現(xiàn)2) 采用 Spring框架中AOP面向切面方面編程技術 3、金融行業(yè)中的日志記錄的重要性通過
12、采用交易日志機制等,加強內(nèi)部制約和監(jiān)督,提高了銀行業(yè)務數(shù)據(jù)的平安性。4、目前的ConnectDBBean和DBCPConnectDBBean、ConnectDBFactory等類中藕合有日志處理功能實現(xiàn)下面以DBCPConnectDBBean類為例說明,如何具體地應用觀察者模式重構系統(tǒng)中的日志處理功能實現(xiàn)。對于ConnectDBBean類和ConnectDBFactory類的程序工作修改,根本上是相同的。5、應用觀察者模式的要點區(qū)分被觀察者和觀察者類。1事件源一般為被觀察者2對事件源作出反映的類為觀察者6、定義被觀察者-也就是數(shù)據(jù)庫連接類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); /最大的連接數(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ù)庫效勞器沒有啟動");public DBCPConnectDBBean() public void closeDBCon() throws WebBankException if(con=null)return;trycon.close(); /注意:要識別是否為重復調(diào)用,否那么會出現(xiàn)數(shù)據(jù)庫連接已經(jīng)關閉的狀況con = null;catch (SQLException e)this.addObserver(new LogObserver()
20、;this.setChanged();this.notifyObservers(e);throw new WebBankException("不能正確地關閉數(shù)據(jù)庫連接");public Connection getConnection() throws WebBankException initDBConnection();return con;public boolean isDBConnectionClose()return (con=null)?true:false;7、定義觀察者類所需要實現(xiàn)的日志業(yè)務功能接口1添加觀察者類LogObserver的接口Exceptio
21、nLogInterface該接口所在的包名稱為2設計該ExceptionLogInterface接口package com.px1987.webbank.util;public interface ExceptionLogInterface public void logInfo(String logInfoText);8、設計觀察者類LogObserver觀察者類需要實現(xiàn)包中的Observer接口和前面的ExceptionLogInterface接口,并且對異常進行觀察。該類名稱為LogObserver、包為。目前該類的功能實現(xiàn)是基于JDK的Logger類實現(xiàn)日志功能。4編程該類package com.px1987.w
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司清明節(jié)踏青活動方案
- 公司茶室聚會活動方案
- 公司文化集市活動方案
- 公司社團迎新活動方案
- 公司老板過生日策劃方案
- 公司歌唱祖國活動方案
- 公司改進策劃方案
- 公司職業(yè)健康年活動方案
- 公司烤全羊聚餐活動方案
- 公司教職工秋游活動方案
- 泥漿消納協(xié)議書
- 機場口語面試題及答案
- 職業(yè)技術學院2024級智能交通技術專業(yè)人才培養(yǎng)方案
- 第15課 明朝的統(tǒng)治 課件 統(tǒng)編版七年級歷史下冊
- 2025年統(tǒng)計學期末考試題庫:數(shù)據(jù)分析基礎計算與應用試題
- 【北京市人社局】2025年北京市人力資源市場薪酬數(shù)據(jù)報告(一季度)
- 工藝管道氣壓實驗方案
- 20噸雙梁行車標準尺寸
- 過敏性皮炎個案護理
- 人教版(2024)七年級下冊英語UNIT 5 Here and Now 綜合素質評價測試卷(含答案)
- 第7課《誰是最可愛的人》課件-2024-2025學年統(tǒng)編版語文七年級下冊
評論
0/150
提交評論