




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、基于Struts+Spring+JDBC架構(gòu)的課程設(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實現(xiàn)對XML配置文件進(jìn)行解析請大家回憶與JDom有關(guān)的內(nèi)容!2在工程中添加JDom的系統(tǒng)包文件3、設(shè)計classNameCo文檔類型定義文件1在工程中添加一個DTD文件2設(shè)計該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è)計該文件的內(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é)點數(shù)據(jù)信息的接口ReadXMLClassNameJDOMInterface1請大家思考對XML文件進(jìn)行解析的根本過程或者階段2接口名稱為ReadXML
7、ClassNameJDOMInterface,包名稱為3設(shè)計該接口的內(nèi)容package com.px1987.webbank.config;import java.util.HashMap;import org.jdom.Document;import com.px1987.webbank.exception.WebBankException;/* * 訪問XML文件結(jié)點數(shù)據(jù)信息的接口*/public interface ReadXMLClassNameJDOMInterface /* * param xmlFileName XML文件名稱 */public Document getXMLDo
8、cumentFromFile(String xmlFileName)throws WebBankException;/* * 返回XML文件的數(shù)據(jù),用一個HashMap進(jìn)行的封裝 * return HaspMap<String,String> */public HashMap<String, String> getXMLTagData(Document oneDocument);6、添加ReadXMLClassNameJDOMInterface接口的實現(xiàn)類ReadXMLClassNameJDOMImple1添加實現(xiàn)類ReadXMLClassNameJDOMImple、并
9、且繼承Observable類2設(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的一個實例,用來獲得XML文檔。參數(shù)中沒有指定使用什么解析器,因此使用默認(rèn)的解析器。SAXBuilder oneSAXBuilder= new SAXBuilder();/ 從文件構(gòu)造一個Document,因為XML文件中已經(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è)置變化點notifyObservers(e);/當(dāng)出現(xiàn)異常時將通知各個觀察者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è)置變化點notifyObservers(e);/當(dāng)出現(xiàn)異常時將通知各個觀察者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è)置變化點notifyObservers(e);/當(dāng)出現(xiàn)異常時將通知各個觀察者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)行解析的功能實現(xiàn)類ClassNameConfig類的代碼1繼續(xù)采用原來的ClassNameConfig類名稱作為本類名稱為了保持與原來的文件的一致性,
19、不再產(chǎn)生新的文件,而是在原來的文件根底上進(jìn)行修改。2最終的功能實現(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 留學(xué)顧問面試題及答案
- 中層管理人員能力培訓(xùn)
- 2025下半年心理健康調(diào)查報告
- 內(nèi)科雜病調(diào)理方案
- 污染因子試題及答案
- java面試題及答案大數(shù)據(jù)解決方案
- 電子閱讀面試題及答案
- 英語二級試題及答案
- 2025年金融行業(yè)人工智能倫理風(fēng)險分析與監(jiān)管政策研究
- 交通流量預(yù)測在智慧景區(qū)管理中的應(yīng)用報告
- 生產(chǎn)車間5S培訓(xùn)教材
- 課題申報書:AI賦能高校輔導(dǎo)員能力提升的路徑研究
- 【MOOC期末】《中國哲學(xué)》(北京師范大學(xué)) 期末中國大學(xué)慕課答案
- GB/T 18916.65-2024工業(yè)用水定額第65部分:飲料
- 整本書閱讀:《鄉(xiāng)土中國》(考教銜接講義)-2025年高考語文一輪復(fù)習(xí)(新教材新高考)
- 護(hù)理新技術(shù)項目匯報
- DL T596《電力設(shè)備預(yù)防性實驗規(guī)程》知識培訓(xùn)
- DB11T 594.1-2017 地下管線非開挖鋪設(shè)工程施工及驗收技術(shù)規(guī)程 第1部分:水平定向鉆施工
- 2024低空航行系統(tǒng)白皮書:擁抱低空經(jīng)濟(jì)安全智慧飛行
- 高中生禁毒教育主題班會教學(xué)課件
- 財政投資項目評審服務(wù)投標(biāo)方案(技術(shù)方案)
評論
0/150
提交評論