首页 基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——构建项目数据库连

基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——构建项目数据库连

举报
开通vip

基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——构建项目数据库连基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——构建项目数据库连接组件和测试(第6/6部分)采用XML格式的配置文件代替属性配置文件1、Java属性配置文件的方式所存在的问题(1)缺少规范(2)缺少“层次性”——不能表达“复杂关系”2、在项目中采用XML格式的配置文件代替属性配置文件(1)应用JDom实现对XML配置文件进行解析请大家回顾与JDom有关的内容!(2)在项目中添加JDom的系统包文件3、设计classNameCo文档类型定义文件(1)在项目中添加一...

基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——构建项目数据库连
基于Struts+Spring+JDBC架构的课程 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 实训教学示例项目——《网上银行账户管理系统》——构建项目数据库连接组件和测试(第6/6部分)采用XML格式的配置文件代替属性配置文件1、Java属性配置文件的方式所存在的问题(1)缺少 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 (2)缺少“层次性”——不能 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达“复杂关系”2、在项目中采用XML格式的配置文件代替属性配置文件(1)应用JDom实现对XML配置文件进行解析请大家回顾与JDom有关的内容!(2)在项目中添加JDom的系统包文件3、设计classNameCo文档类型定义文件(1)在项目中添加一个DTD文件(2)设计该DTD文件的内容4、编写配置文件(1)添加l文件(2)设计该文件的内容(目前为止的内容如下)JDBC_DBDriver_ClassNamecom.mysql.jdbc.DriverJDBC_DSN_URLjdbc:mysql://localhost:3306/webbankJDBC_dbUserNamerootJDBC_dbUserPassWordrootJDBC_dbcp_maxActive10logImpleKind1connectDBBean.className5、编写访问XML文件结点数据信息的接口ReadXMLClassNameJDOMInterface(1)请大家思考对XML文件进行解析的基本过程(或者阶段)(2)接口名称为ReadXMLClassNameJDOMInterface,包名称为(3)设计该接口的内容packagecom.px1987.webbank.config;importjava.util.HashMap;importorg.jdom.Document;importcom.px1987.webbank.exception.WebBankException;/***访问XML文件结点数据信息的接口*/publicinterfaceReadXMLClassNameJDOMInterface{/***@paramxmlFileNameXML文件名称*/publicDocumentgetXMLDocumentFromFile(StringxmlFileName)throwsWebBankException;/***返回XML文件的数据,用一个HashMap进行的封装*@returnHaspMap*/publicHashMapgetXMLTagData(DocumentoneDocument);}6、添加ReadXMLClassNameJDOMInterface接口的实现类ReadXMLClassNameJDOMImple(1)添加实现类ReadXMLClassNameJDOMImple、并且继承Observable类(2)设计该实现类packagecom.px1987.webbank.config;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;tion;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Observable;importorg.jdom.Document;importorg.jdom.Element;importorg.jdom.JDOMException;importorg.jdom.input.SAXBuilder;importcom.px1987.webbank.exception.WebBankException;importcom.px1987.webbank.factory.LogInfoFactory;publicclassReadXMLClassNameJDOMImpleextendsObservableimplementsReadXMLClassNameJDOMInterface{publicReadXMLClassNameJDOMImple(){}publicDocumentgetXMLDocumentFromFile(StringxmlFileName)throwsWebBankException{DocumentxmlDocument=null;try{//获得org.jdom.input.SAXBuilder的一个实例,用来获得XML文档。参数中没有指定使用什么解析器,因此使用默认的解析器。SAXBuilderoneSAXBuilder=newSAXBuilder();//从文件构造一个Document,因为XML文件中已经指定了编码,所以这里不必了xmlDocument=oneSAXBuilder.build(newFileInputStream(newFile(xmlFileName)));//xmlDocument=//oneSAXBuilder.build(ReadXMLClassNameJDOMImple.class.getResourceAsStream(xmlFileName));xmlDocument=oneSAXBuilder.build(this.getClass().getResource(xmlFileName));}catch(FileNotFoundExceptione){intlogImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged();//注意要设置变化点notifyObservers(e);//当出现异常时将通知各个观察者thrownewWebBankException("在ReadXMLClassNameJDOMImple类中出现了FileNotFoundException异常");}catch(JDOMExceptione){intlogImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged();//注意要设置变化点notifyObservers(e);//当出现异常时将通知各个观察者thrownewWebBankException("在ReadXMLClassNameJDOMImple类中出现了JDOMException异常");}catch(IOExceptione){intlogImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged();//注意要设置变化点notifyObservers(e);//当出现异常时将通知各个观察者thrownewWebBankException("在ReadXMLClassNameJDOMImple类中出现了IOException异常");}returnxmlDocument;}publicHashMapgetXMLTagData(DocumentoneDocument){HashMapclassNameList=newHashMap();Elementroot=oneDocument.getRootElement();//得到根元素//得到根元素所有子元素的集合java.util.ListclassNames=root.getChildren();IteratorclassNamesItem=classNames.iterator();while(classNamesItem.hasNext()){ElementclassNameElement=(Element)classNamesItem.next();//得到指定的classNameID子元素里的值ElementclassNameIDElement=classNameElement.getChild("classNameID");StringclassNameID=classNameIDElement.getText();//得到指定的classNamePath子元素里的值ElementclassNamePathElement=classNameElement.getChild("classNamePath");StringclassNamePath=classNamePathElement.getText();//把获取的key、value放到HashMap中classNameList.put(classNameID,classNamePath);}returnclassNameList;}}7、修改原来对Java属性文件进行解析的功能实现类ClassNameConfig类的代码(1)继续采用原来的ClassNameConfig类名称作为本类名称为了保持与原来的文件的一致性,不再产生新的文件,而是在原来的文件基础上进行修改。(2)最终的功能实现代码packagecom.px1987.webbank.config;importjava.io.IOException;importjava.util.HashMap;importorg.jdom.Document;importcom.px1987.webbank.exception.WebBankException;publicclassClassNameConfig{privatestaticHashMapclassNameList=null;static{//该类一加载就读取指定的文件ReadXMLClassNameJDOMInterfacereadXMLClassNameJDOMImpl=null;DocumentclassNamesDocument=null;readXMLClassNameJDOMImpl=newReadXMLClassNameJDOMImple();try{//将指定文件解析为JDOM文件的形式classNamesDocument=readXMLClassNameJDOMImpl.getXMLDocumentFromFile("/classNameConfig.xml");}catch(WebBankExceptione){e.printStackTrace();}//获取XML文件中的数据,放到HashMap中classNameList=readXMLClassNameJDOMImpl.getXMLTagData(classNamesDocument);}/***通过className的ID读取在XML文件中对应的类名*@paramclassNameID*@return类的全名*@throwsIOException*/publicstaticStringgetProperty(StringclassNameID){StringclassNamePath=classNameList.get(classNameID);returnclassNamePath;}publicClassNameConfig(){}}8、再执行测试用例类TestConnectDBBean后将出现下面的结果应用策略模式重构系统的持久层中的数据库连接组件1、策略模式(模式属于GOF中的行为型类型的模式)(1)什么是策略模式策略模式把“算法(业务规则)”和“环境(封装应用的场景)”分离开----其中的环境类主要是负责维持和查询算法类,而各种算法(也就是我们的功能实现)则由具体的策略类来实现(并且可以通过继承来产生出层次性的类)。(2)为什么要应用策略模式达到把“算法”与使用算法的“客户”之间的关系独立开。我们不希望出现下面的状况---将实现各种不同数据库的“连接”的功能代码(也就是策略模式中的“算法”)直接出现在使用该“连接”的程序中(也就是策略模式中的“客户”----本示例为DAO组件)。这样设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 将使的“客户”和“算法”完全绑定----其后果?!“算法”一旦改变,将会影响到相关的各个客户程序也需要被动地修改。2、应用模板方法模式提升系统的可扩展性(1)模板方法模式与策略模式的作用十分类似有时可以用策略模式替代模板方法模式——模板方法模式通过继承来实现代码复用,而策略模式使用委托。因为委托比继承具有更大的灵活性,继承却经常会被错误的滥用——当子类比较多时,将会出现“类爆炸”。(2)策略模式把不确定的行为集中到一个接口中,并在主类委托这个接口(3)当需要变化的操作非常多时,采用策略模式把这些操作抽取到一个接口当某些基本操作的实现可能需要在运行时改变时,可以通过在运行时改变委托对象来实现,而继承则不能。此时,也应该要采用策略模式。3、与策略模式有关的UML类图(4)编程实现的方法根据策略模式的类图,掌握所需要的各个角色的类和接口。
本文档为【基于Struts+Spring+JDBC架构的课程设计实训教学示例项目——《网上银行账户管理系统》——构建项目数据库连】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_072127
暂无简介~
格式:doc
大小:218KB
软件:Word
页数:0
分类:企业经营
上传时间:2019-11-18
浏览量:2