基于Struts+Spring+JDBC架構(gòu)的課程設(shè)計(jì)實(shí)訓(xùn)教學(xué)示例項(xiàng)目——《網(wǎng)上銀行賬戶管理系統(tǒng)》——構(gòu)建項(xiàng)目數(shù)據(jù)庫連接組件和測試(第6部分)_第1頁
基于Struts+Spring+JDBC架構(gòu)的課程設(shè)計(jì)實(shí)訓(xùn)教學(xué)示例項(xiàng)目——《網(wǎng)上銀行賬戶管理系統(tǒng)》——構(gòu)建項(xiàng)目數(shù)據(jù)庫連接組件和測試(第6部分)_第2頁
基于Struts+Spring+JDBC架構(gòu)的課程設(shè)計(jì)實(shí)訓(xùn)教學(xué)示例項(xiàng)目——《網(wǎng)上銀行賬戶管理系統(tǒng)》——構(gòu)建項(xiàng)目數(shù)據(jù)庫連接組件和測試(第6部分)_第3頁
基于Struts+Spring+JDBC架構(gòu)的課程設(shè)計(jì)實(shí)訓(xùn)教學(xué)示例項(xiàng)目——《網(wǎng)上銀行賬戶管理系統(tǒng)》——構(gòu)建項(xiàng)目數(shù)據(jù)庫連接組件和測試(第6部分)_第4頁
基于Struts+Spring+JDBC架構(gòu)的課程設(shè)計(jì)實(shí)訓(xùn)教學(xué)示例項(xiàng)目——《網(wǎng)上銀行賬戶管理系統(tǒng)》——構(gòu)建項(xiàng)目數(shù)據(jù)庫連接組件和測試(第6部分)_第5頁
已閱讀5頁,還剩6頁未讀 繼續(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ù)庫連接組件和測試第6/6局部1.1.1 采用XML格式的配置文件代替屬性配置文件 1、Java屬性配置文件的方式所存在的問題 1缺少標(biāo)準(zhǔn)2缺少“層次性不能表達(dá)“復(fù)雜關(guān)系2、在工程中采用XML格式的配置文件代替屬性配置文件1應(yīng)用JDom實(shí)現(xiàn)對XML配置文件進(jìn)行解析請大家回憶與JDom有關(guān)的內(nèi)容!2在工程中添加JDom的系統(tǒng)包文件3、設(shè)計(jì)classNameCo文檔類型定義文件1在工程中添加一個(gè)DTD文件2設(shè)計(jì)該DTD文件的內(nèi)容<?xml version="1.0" e

2、ncoding="UTF-8"?><!ELEMENT classNames (className*)> <!ELEMENT className (classNameID|classNamePath)+> <!ELEMENT classNameID (#PCDATA)><!ELEMENT classNamePath (#PCDATA)>4、編寫配置文件1添加l文件2設(shè)計(jì)該文件的內(nèi)容目前為止的內(nèi)容如下<?xml version="1.0" encoding="UTF-8"?>

3、;<!DOCTYPE classNames SYSTEM "classNameConfig.dtd"> <classNames><className><classNameID>JDBC_DBDriver_ClassName</classNameID><classNamePath>com.mysql.jdbc.Driver</classNamePath></className><className><classNameID>JDBC_DSN_URL</

4、classNameID><classNamePath>jdbc:mysql:/localhost:3306/webbank</classNamePath></className><className><classNameID>JDBC_dbUserName</classNameID><classNamePath>root</classNamePath></className><className><classNameID>JDBC_dbUserPassWor

5、d</classNameID><classNamePath>root</classNamePath></className><className><classNameID>JDBC_dbcp_maxActive</classNameID><classNamePath>10</classNamePath></className><className><classNameID>logImpleKind</classNameID><clas

6、sNamePath>1</classNamePath></className><className><classNameID>connectDBBean.className</classNameID><classNamePath></classNamePath></className></classNames>5、編寫訪問XML文件結(jié)點(diǎn)數(shù)據(jù)信息的接口ReadXMLClassNameJDOMInterface1請大家思考對XML文件進(jìn)行解析的根本過程或者階段2接口名稱為ReadXML

7、ClassNameJDOMInterface,包名稱為3設(shè)計(jì)該接口的內(nèi)容package com.px1987.webbank.config;import java.util.HashMap;import org.jdom.Document;import com.px1987.webbank.exception.WebBankException;/* * 訪問XML文件結(jié)點(diǎn)數(shù)據(jù)信息的接口*/public interface ReadXMLClassNameJDOMInterface /* * param xmlFileName XML文件名稱 */public Document getXMLDo

8、cumentFromFile(String xmlFileName)throws WebBankException;/* * 返回XML文件的數(shù)據(jù),用一個(gè)HashMap進(jìn)行的封裝 * return HaspMap<String,String> */public HashMap<String, String> getXMLTagData(Document oneDocument);6、添加ReadXMLClassNameJDOMInterface接口的實(shí)現(xiàn)類ReadXMLClassNameJDOMImple1添加實(shí)現(xiàn)類ReadXMLClassNameJDOMImple、并

9、且繼承Observable類2設(shè)計(jì)該實(shí)現(xiàn)類package com.px1987.webbank.config;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;tion;import java.util.HashMap;import java.util.Iterator;import java.util.Observable;import org.jdom.Document;import org.jdom.Element;import org.jdom.JDOMExce

10、ption;import org.jdom.input.SAXBuilder;import com.px1987.webbank.exception.WebBankException;import com.px1987.webbank.factory.LogInfoFactory;public class ReadXMLClassNameJDOMImple extends Observable implements ReadXMLClassNameJDOMInterface public ReadXMLClassNameJDOMImple() public Document getXMLDoc

11、umentFromFile(String xmlFileName)throws WebBankException Document xmlDocument = null;try /獲得org.jdom.input.SAXBuilder的一個(gè)實(shí)例,用來獲得XML文檔。參數(shù)中沒有指定使用什么解析器,因此使用默認(rèn)的解析器。SAXBuilder oneSAXBuilder= new SAXBuilder();/ 從文件構(gòu)造一個(gè)Document,因?yàn)閄ML文件中已經(jīng)指定了編碼,所以這里不必了xmlDocument = oneSAXBuilder.build(new FileInputStream(new

12、 File(xmlFileName);/xmlDocument =/ oneSAXBuilder.build(ReadXMLClassNameJDOMImple.class.getResourceAsStream(xmlFileName);xmlDocument = oneSAXBuilder.build(this.getClass().getResource(xmlFileName); catch (FileNotFoundException e) int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logI

13、mpleKind");this.addObserver(LogInfoFactory.newLogInstance(logImpleKind);this.setChanged(); /注意要設(shè)置變化點(diǎn)notifyObservers(e);/當(dāng)出現(xiàn)異常時(shí)將通知各個(gè)觀察者throw new WebBankException("在ReadXMLClassNameJDOMImple類中出現(xiàn)了FileNotFoundException異常");catch (JDOMException e) int logImpleKind=Integer.parseInt(ClassNam

14、eConfig.getProperty("logImpleKind");this.addObserver(LogInfoFactory.newLogInstance(logImpleKind);this.setChanged(); /注意要設(shè)置變化點(diǎn)notifyObservers(e);/當(dāng)出現(xiàn)異常時(shí)將通知各個(gè)觀察者throw new WebBankException("在ReadXMLClassNameJDOMImple類中出現(xiàn)了JDOMException異常");catch (IOException e) int logImpleKind=Integ

15、er.parseInt(ClassNameConfig.getProperty("logImpleKind");this.addObserver(LogInfoFactory.newLogInstance(logImpleKind);this.setChanged(); /注意要設(shè)置變化點(diǎn)notifyObservers(e);/當(dāng)出現(xiàn)異常時(shí)將通知各個(gè)觀察者throw new WebBankException("在ReadXMLClassNameJDOMImple類中出現(xiàn)了IOException異常");return xmlDocument;public

16、HashMap<String,String> getXMLTagData(Document oneDocument) HashMap<String,String> classNameList = new HashMap<String,String>();Element root = oneDocument.getRootElement(); / 得到根元素/ 得到根元素所有子元素的集合java.util.List classNames = root.getChildren();Iterator classNamesItem = classNames.iter

17、ator();while (classNamesItem.hasNext() Element classNameElement = (Element) classNamesItem.next();/ 得到指定的classNameID子元素里的值Element classNameIDElement = classNameElement.getChild("classNameID"); String classNameID = classNameIDElement.getText();/ 得到指定的classNamePath子元素里的值Element classNamePath

18、Element = classNameElement.getChild("classNamePath"); String classNamePath = classNamePathElement.getText();/把獲取的key、value放到HashMap中classNameList.put(classNameID, classNamePath);return classNameList;7、修改原來對Java屬性文件進(jìn)行解析的功能實(shí)現(xiàn)類ClassNameConfig類的代碼1繼續(xù)采用原來的ClassNameConfig類名稱作為本類名稱為了保持與原來的文件的一致性,

19、不再產(chǎn)生新的文件,而是在原來的文件根底上進(jìn)行修改。2最終的功能實(shí)現(xiàn)代碼package com.px1987.webbank.config;import java.io.IOException;import java.util.HashMap;import org.jdom.Document;import com.px1987.webbank.exception.WebBankException;public class ClassNameConfig private static HashMap<String, String> classNameList = null ;stati

20、c /該類一加載就讀取指定的文件ReadXMLClassNameJDOMInterface readXMLClassNameJDOMImpl = null ;Document classNamesDocument = null ; readXMLClassNameJDOMImpl = new ReadXMLClassNameJDOMImple();try /將指定文件解析為JDOM文件的形式classNamesDocument= readXMLClassNameJDOMImpl.getXMLDocumentFromFile("/classNameConfig.xml");

21、catch (WebBankException e) e.printStackTrace();/獲取XML文件中的數(shù)據(jù),放到HashMap中classNameList=readXMLClassNameJDOMImpl.getXMLTagData(classNamesDocument);/* * 通過className的ID讀取在XML文件中對應(yīng)的類名 * param classNameID * return 類的全名 * throws IOException */public static String getProperty(String classNameID)String classNamePath = classNameList.get(classNameID);return

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論