




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于Struts+Spring+JDBC架構(gòu)的課程設(shè)計(jì)實(shí)訓(xùn)教學(xué)例如工程?網(wǎng)上銀行賬戶管理系統(tǒng)?構(gòu)建工程數(shù)據(jù)庫(kù)連接組件和測(cè)試第6/6局部1.1.1 采用XML格式的配置文件代替屬性配置文件 1、Java屬性配置文件的方式所存在的問(wèn)題 1缺少標(biāo)準(zhǔn)2缺少“層次性不能表達(dá)“復(fù)雜關(guān)系2、在工程中采用XML格式的配置文件代替屬性配置文件1應(yīng)用JDom實(shí)現(xiàn)對(duì)XML配置文件進(jìn)行解析請(qǐng)大家回憶與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、編寫(xiě)配置文件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、編寫(xiě)訪問(wèn)XML文件結(jié)點(diǎn)數(shù)據(jù)信息的接口ReadXMLClassNameJDOMInterface1請(qǐng)大家思考對(duì)XML文件進(jìn)行解析的根本過(guò)程或者階段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;/* * 訪問(wèn)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í)例,用來(lái)獲得XML文檔。參數(shù)中沒(méi)有指定使用什么解析器,因此使用默認(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、修改原來(lái)對(duì)Java屬性文件進(jìn)行解析的功能實(shí)現(xiàn)類ClassNameConfig類的代碼1繼續(xù)采用原來(lái)的ClassNameConfig類名稱作為本類名稱為了保持與原來(lái)的文件的一致性,
19、不再產(chǎn)生新的文件,而是在原來(lái)的文件根底上進(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);/* * 通過(guò)className的ID讀取在XML文件中對(duì)應(yīng)的類名 * param classNameID * return 類的全名 * throws IOException */public static String getProperty(String classNameID)String classNamePath = classNameList.get(classNameID);return
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 保藏中心基本管理制度
- 保險(xiǎn)公司保全管理制度
- 保險(xiǎn)公司總監(jiān)管理制度
- 保險(xiǎn)公司融資管理制度
- 信息發(fā)布臺(tái)賬管理制度
- 信息技術(shù)培訓(xùn)管理制度
- 信貸分級(jí)授權(quán)管理制度
- 公司人才保留管理制度
- 公司企業(yè)用車(chē)安全材料管理制度
- 公司前臺(tái)獎(jiǎng)懲管理制度
- 養(yǎng)老機(jī)構(gòu)消防安全課件
- 主、被動(dòng)防護(hù)網(wǎng)施工方案-圖文
- GB/T 45565-2025鋰離子電池編碼規(guī)則
- 1、人教部編版二年級(jí)下冊(cè)語(yǔ)文看拼音寫(xiě)詞語(yǔ)(一類生字和書(shū)后詞語(yǔ))
- 2025年濟(jì)南高新區(qū)九年級(jí)中考數(shù)學(xué)二??荚囋囶}(含答案)
- 花椒庫(kù)存收購(gòu)協(xié)議書(shū)
- DB22-T2979-2019-基質(zhì)瀝青相似度檢測(cè)紅外光譜法-吉林省
- 《小王子繪本教學(xué)課件》
- 金華市皓升再生資源有限公司年回收拆解20萬(wàn)輛電動(dòng)自行車(chē)生產(chǎn)線技改項(xiàng)目
- 2025年金融衍生工具試題
- 2025-2030中國(guó)陶瓷瓦行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
評(píng)論
0/150
提交評(píng)論