




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 可降解產(chǎn)品市場前景研究報(bào)告:環(huán)保消費(fèi)趨勢下的機(jī)遇與挑戰(zhàn)
- 基于2025年工業(yè)互聯(lián)網(wǎng)平臺(tái)的自然語言處理技術(shù)在工業(yè)大數(shù)據(jù)分析中的應(yīng)用報(bào)告
- 大學(xué)生宿舍食堂管理制度
- 家具經(jīng)銷商培訓(xùn)管理制度
- 山西進(jìn)口收納架管理制度
- 地產(chǎn)公司試用期管理制度
- 幼兒園學(xué)校經(jīng)費(fèi)管理制度
- 旅館衛(wèi)生檢測管理制度
- 抗菌藥納入分級(jí)管理制度
- 暑期員工宿舍管理制度
- 海洋石油安全管理細(xì)則-25號(hào)令(新修改)
- 糖尿病外周血管病變和糖尿病足培訓(xùn)課件
- 2022年N2觀光車和觀光列車司機(jī)考試技巧及N2觀光車和觀光列車司機(jī)考試試題
- 使市場在資源配置中起決定性作用 課件【新教材備課精講精研】高中政治統(tǒng)編版必修二經(jīng)濟(jì)與社會(huì)
- SB/T 10279-2017熏煮香腸
- GB/T 6185.2-20162型全金屬六角鎖緊螺母細(xì)牙
- GA/T 1394-2017信息安全技術(shù)運(yùn)維安全管理產(chǎn)品安全技術(shù)要求
- IB教育中的PYP介紹專題培訓(xùn)課件
- 2022年桂林市衛(wèi)生學(xué)校教師招聘筆試題庫及答案解析
- 欄桿安裝單元工程施工質(zhì)量驗(yàn)收評定表完整
- 外墻清洗服務(wù)工程項(xiàng)目進(jìn)度保障計(jì)劃
評論
0/150
提交評論