web应用系统的通用开发架构研究与应用

web应用系统的通用开发架构研究与应用

ID:35174685

大小:3.73 MB

页数:70页

时间:2019-03-20

上传者:U-24835
web应用系统的通用开发架构研究与应用_第1页
web应用系统的通用开发架构研究与应用_第2页
web应用系统的通用开发架构研究与应用_第3页
web应用系统的通用开发架构研究与应用_第4页
web应用系统的通用开发架构研究与应用_第5页
资源描述:

《web应用系统的通用开发架构研究与应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

’-"打’";,.‘中;;、,'^^之^:弁巧'義"?如分类号:TP311/授予0434.学位单位代码:1■■:20学号:141203%山柬义業犬等全日制硕±专处学位论文W洗应用系统的通用开发架构研究与应用TheResearchand_ApplicationonGeneralDevelopmentArchitec化reofTheW化乂pplicationSstemy-巧*二心\—姓'\名:田洋站学位类别:农业推广专业:农业信息化-‘S->一.-..硏究方向:软件体系结构学院:信息科学与工程学院y?。敬?指导教师:张继军教授记—―.'一''’'、’'■"■./;.,节渡猶■201605月28日年,'-'’-''-‘-.?.-一-‘、巧-Isa乂一.!片V心皆迫'-’支杳.:皆岩气林;斜截鑛、;心>诚掘.,.妍知^;1調.'.'■某/'^棘..r;.P?打:V 关于学位论文原创性和使用授权的声明本人所呈交的学位论文,是在导师指导下,独立进行科学研究所取得体的成果。对在论文研究期间给予指导、帮助和做出重要贡献的个人或集,均在文中明确说明。本声明的法律责任由本人承担。校保本人完全了解山东农业大学有关保留和使用学位论文的规定,同意学留和按要求向国家有关部口或机构送交论文纸质本和电子版,允许论文被查阅和借阅。本人授权山东农业大学可将本学位论文的全部或部分论内容编入有关数据库进行检索,可W采用影印、缩印或其他复制手段保存文和汇编本学位论文,同时授权中国科学技术信息研究所将本学位论文收录保到密《论中文国学位论文全文数据库》,并向社会公众提供信息服务。在解密后应论遵守此规定。文作者签名;巧获詳鍵导师签名;寒日期;啤聋is进 论文提交日期:2016年4月15日论文答辩日期:2016年5月28日学位授予日期:2016年6月学位类别:农业推广答辩委员会主席:郑勇 目录中文摘要.....................................................................................................................................I英文摘要..................................................................................................................................III1绪论.........................................................................................................................................11.1研究目的及意义..................................................................................................................11.1.1目的...................................................................................................................................11.1.2意义...................................................................................................................................11.2国内外研究现状..................................................................................................................21.2.1框架技术研究进展...........................................................................................................21.2.2集成架构研究进展...........................................................................................................31.2.3研究现状分析...................................................................................................................41.3研究内容、研究方法及技术路线......................................................................................51.3.1研究内容...........................................................................................................................51.3.2研究方法...........................................................................................................................71.3.3技术路线...........................................................................................................................81.4本章小结..............................................................................................................................92框架技术在架构中的应用...................................................................................................102.1JavaEE框架......................................................................................................................102.2SSH与ExtJS框架.............................................................................................................122.2.1Struts2..............................................................................................................................122.2.2Hibernate.........................................................................................................................122.2.3Spring..............................................................................................................................122.2.4ExtJS................................................................................................................................132.3本章小结............................................................................................................................143架构设计原则、模式与构建技术.......................................................................................153.1架构开发的设计原则与模式............................................................................................153.1.1设计原则.........................................................................................................................153.1.2设计模式.........................................................................................................................163.1.3MVC................................................................................................................................173.2架构构建使用的技术........................................................................................................18 3.2.1IoC和AOP编程............................................................................................................183.2.2拦截器、过滤器和监听器.............................................................................................193.3本章小结............................................................................................................................204架构体系结构的设计...........................................................................................................214.1架构整体体系结构............................................................................................................214.2架构的资源配置与管理....................................................................................................234.2.1架构资源.........................................................................................................................234.2.2资源配置与管理.............................................................................................................234.3数据库、后台与前台三者间的数据通信协议................................................................254.4本章小结............................................................................................................................265架构后台的详细设计与实现...............................................................................................275.1后台体系结构....................................................................................................................275.2领域对象层的设计与实现................................................................................................285.3数据访问对象层的设计与实现........................................................................................295.4业务逻辑层的设计与实现................................................................................................305.4.1Service层........................................................................................................................305.4.2服务工具类.....................................................................................................................315.5控制层................................................................................................................................325.6本章小结............................................................................................................................346架构前台的详细设计与实现...............................................................................................356.1前台体系结构....................................................................................................................356.2模型工厂的设计与实现....................................................................................................376.3展示层与通用事件的设计与实现....................................................................................386.4前台工具类的设计与实现................................................................................................396.5前台扩展组件的设计与实现............................................................................................406.6本章小结............................................................................................................................417架构中通用应用模块的设计与实现...................................................................................427.1菜单管理模块的设计与实现............................................................................................427.2角色权限管理模块的设计与实现....................................................................................437.3安全登录模块的设计与实现............................................................................................46 7.4数据字典管理模块的设计与实现....................................................................................477.5本章小结............................................................................................................................498应用示例系统《羊场管理系统》.......................................................................................508.1应用示例系统模块开发流程............................................................................................508.2应用示例系统效果展示....................................................................................................538.3架构优越性........................................................................................................................548.4本章小结............................................................................................................................549总结与展望...........................................................................................................................569.1总结....................................................................................................................................569.2展望....................................................................................................................................56参考文献..................................................................................................................................57致谢..........................................................................................................................................60 山东农业大学硕士专业学位论文中文摘要随着现代社会信息化的迅速发展,企业级应用系统的需求在日益增多,程序的设计也越来越复杂。为了满足日益复杂的应用系统的开发需求,简化和规范应用系统的开发与部署,降低对开发人员的编程要求,JavaEE由此诞生,这也标志着大规模的企业级应用系统的开发有了统一的规范。随着JavaEE在全球范围内的广泛使用,众多基于JavaEE应用的优秀开源框架技术不断涌现出来,其中典型代表为Struts2、Spring和Hibernate等。另外,随着JavaWeb技术的迅猛发展,特别是在JavaScript脚本语言得到广泛应用后,涌现出了众多基于JavaWeb应用的前端开发框架,其中得到广泛应用的代表有ExtJS框架技术等,这些框架推动了以浏览器作为客户端的B/S网络结构的发展,从而节约了系统开发成本,提高了系统的可扩展性,极大地减轻了服务器的负担。随着这些优秀开源框架的不断扩展和健全,利用框架技术建立一个骨架完整,通用型强,且能够满足Web应用系统快速开发的基础架构,已经成为当今社会企业级Web应用系统开发的迫切需要。本文详细描述了研发Web通用开发架构的整个过程,研究了目前国内外较为流行的框架技术的工作机制及框架特点,选取了Struts2、Spring和Hibernate框架技术作为架构后台的支撑,ExtJS框架技术作为架构前台的基础来构建通用开发架构;研究了构建通用Web开发架构的设计原则和模式,以及如AOP、IoC、拦截器、过滤器和监听器等架构构建相关的技术。通过以上研究为作为基础,按照软件工程的思想方法和原理,利用架构构建相关的技术,对选取的前后台框架技术进行集成,来研发Web通用开发架构。在研发过程中,首先以JavaEE多层结构为体系,利用MVC的软件设计模式进行了通用架构的整体体系结构的设计,设计了架构多层结构中每层的组成部分,以及各层之间数据通信协议;然后按照前后台划分进行设计与实现,设计实现了后台领域对象层、DAO层、业务逻辑层和控制层中的类和接口,以及它们相互间的关系;设计实现了前台程序入口以及MVC模式的通用基础组件,从而构建出整个Web通用开发架构的基础骨架;进而在基础骨架上又设计实现了架构中通用应用模块,包括:菜单管理模块、角色权限管理模块、安全登录模块和数据字典管理模块,使架构功能更加丰富和完整,为基于JavaWeb应用系统的开发,构建了一个高质量、高性能,且具有较好的通用性和扩展性的基础架构,为程序员开发Web应用系统提供一个高效便捷的基础平台。I Web应用系统的通用开发架构研究与应用利用研发出的Web通用开发架构作为开发平台,开发了应用系统《羊场管理系统》,以应用系统中一个具体业务模块的开发流程为示例,介绍了利用该通用架构开发应用系统的详细过程,真正体现出研究成果是如何被有效地利用。关键词:架构构建;快速开发;JavaWeb;SSH;ExtJS;MVCII 山东农业大学硕士专业学位论文TheResearchandApplicationonGeneralDevelopmentArchitectureofTheWebApplicationSystemAbstractWiththerapiddevelopmentofinformationizationinmodernsociety,thedemandoftheenterpriseapplicationsysteminincreasing,thedesignoftheprogramisbecomingmoreandmorecomplicated.Inordertomeetthedemandofincreasinglycomplexapplicationsystemdevelopment,simplifyandstandardizethedevelopmentanddeploymentoftheapplicationsystem,reduceprogrammingrequirementsfordevelopers,JavaEEwasborn,italsomarksthelarge-scaleenterpriseapplicationsystemdevelopmentisaunifiedspecification.WiththewideuseofJavaEEglobally,manyexcellentopensourceframeworkbasedonJavaEEapplicationtechnologyconstantlyemerging,thetypicalrepresentativeofSSH(struts2,Spring,Hibernate).Inaddition,withtherapiddevelopmentofJavaEEWebtechnology,especiallyaftertheJavaScriptscriptinglanguageiswidelyused,emergedmanyfront-endbasedonJavaWebapplicationdevelopmentframework,whichiswidelyusedonbehalfofExtJSframeworktechnologyandsoon,theseframeworkspromotedthebrowserasthedevelopmentofclientB/Snetworkstructure,thussavingthecostofsystemdevelopment,improvethescalabilityofthesystem,greatlyreducetheburdenoftheserver.Astheseexpandingtheexcellentopensourceframeworkandsound,skeletonframetechnologyisusedtoestablishacomplete,universal,andcansatisfytherapiddevelopmentofWebapplicationsysteminfrastructure,intoday'ssocietyhasbecometheenterprisetheurgentneedsoftheWebapplicationsystemdevelopment.Thispaperdescribesindetailthewholeprocessofr&dWebgeneraldevelopmentarchitecture,firststudiedthecurrentrelativelypopularframeworktechnologyathomeandabroadoftheworkingmechanismandcharacteristicsoftheframework,theselectionofthestruts2,SpringandHibernateframeworktechnologyassupportstructurebackground,ExtJSframeworktechnologyasthefoundationofthestructureatthefrontdesktobuildgeneraldevelopmentarchitecture;ThenthedesignprincipleoftheconstructionofgeneralWebdevelopmentframeworkandmode,andsuchasAOP,IoC,interceptors,filtersandlistenersarchitecturebuildingrelatedtechnologies.Throughtheaboveresearchasthefoundation,accordingtothethoughtofsoftwareengineeringmethodandtheprincipleofusingthearchitecturalbuildingrelatedtechnology,theselectionofTaiwanbeforeandafterintegrationframeworktechnology,developingaWebofgeneraldevelopmentofarchitecture.Intheprocessofresearchanddevelopment,firstofall,basedonJavaEEmultilayerstructureIII Web应用系统的通用开发架构研究与应用system,thegeneralarchitectureisstudiedbyusingMVCmodeinsoftwaredesign,theoverallsystemstructuredesign,designthearchitecturepartofeachlayerinthemulti-layerstructure,aswellasbetweenthelayersofdatacommunicationprotocol;ThenaccordingtotheTaiwanbeforeandafterdividedtocarryonthedesignandimplementation,designhasrealizedthebackgroundfieldobjectlayer,DAOlayer,businesslogiclayerandcontrollayerofclassesandinterfaces,andtheirmutualrelations;ForegroundprogramentranceandtheMVCpatternisdevelopedcommonbasecomponents,soastoconstructthebasisoftheentireWebofgeneraldevelopmentarchitectureframework;Andthenagainonthefoundationframearchitecturewasimplementedingeneralapplicationmodules,including:menumanagementmodule,roleauthorizationmanagementmodule,securityloginmoduleanddatadictionarymanagementmodule,makethearchitecturefunctionmorerichandcomplete,basedonJavaWebapplicationsystemdevelopment,buildahighquality,highperformance,andhasgoodversatilityandexpansibilityoftheinfrastructure,forprogrammerstodevelopWebapplicationsystemtoprovideanefficientandconvenientplatform.UsingthedevelopedWebgeneraldevelopmentarchitectureasadevelopmentplatform,developedthesheepfieldinformationmanagementsystem,applicationsystemtoapplyaspecificbusinessmoduleinthesystemdevelopmentprocessastheexample,thispaperintroducestheuseofthedetailedprocessofgeneralarchitecturedevelopmentapplicationsystem,trulyreflectstheresearchishowtobeeffectivelyused.Keywords:ArchitectureforTheconstruct;RapidDevelopment;JavaWeb;SSH;ExtJS;MVCIV 山东农业大学硕士专业学位论文1绪论随着Java程序设计语言的广泛使用和现代社会信息化的迅速发展,企业级应用系统的需求日益增多,程序的设计也越来越复杂化。为了满足日益复杂的应用系统的开发需求,简化和规范应用系统的开发与部署,降低对开发人员的编程要求,Sun公司(2010年1月被Oracle收购)于1998年推出了J2EE(Java2平台企业版),这也标志着大规模的企业级应用系统的开发有了统一的规范。为了让大家清楚J2EE只是Java的企业应用,于2005年J2EE改名为JavaEE。随着JavaEE在全球范围内的广泛使用,众多的Java程序开发框架也爆发式的涌现出来。这些框架在当今Web应用的开发中起到了极其重要的作用,其中被广发使用的代表有Struts2、Spring、Hibernate等等。另外,随着JavaWeb技术的迅猛发展,特别是在JavaScript脚本语言得到广泛应用后,也涌现出了众多的JavaWeb应用程序的前端开发框架。其中得到广泛应用的代表有ExtJS等,这些框架推动了以浏览器作为客户端的B/S网络结构的发展,从而节约了系统开发成本,提高了系统的可扩展性,大大地减轻了服务器的负担。随着这些优秀开源框架的不断扩展和健全,利用框架技术建立一个骨架完整,通用性强,易于学习,方便使用,且能够满足Web应用系统快速开发的基础架构,已经成为当今社会企业级Web应用系统开发的迫切需要。1.1研究目的及意义1.1.1目的本文的目的是通过研究JavaWeb应用系统中各类相关框架技术及其工作机制,以及构建轻量级Web开发架构的设计原则、模式和方法,从而构造出一个通用的JavaWeb应用开发的架构,来提高软件开发的效率和质量。该架构是以Struts2、Spring、Hibernate框架技术作为程序开发后台设计的支撑,以ExtJS框架技术作为程序开发前台设计的基础,按照软件工程的思想理论,依循整合架构的设计原则,利用MVC的软件设计模式构建而成,是基于JavaWeb应用系统开发的一个高质量、高性能,且具有较好的通用性和扩展性的基础架构,为程序员开发Web应用系统提供了一个高效便捷的基础平台。1.1.2意义研发的架构集成了当今广为流行的基于JavaEEWeb应用的优秀开源框架,保证了开发出的应用程序具有易扩展性和通用性的特点。该架构能够规范程序开发中的技1 Web应用系统的通用开发架构研究与应用术和流程,使程序开发人员可以直接利用该架构作为基础平台,高效地进行实际应用程序的开发,只需要集中精力实现应用的业务逻辑和需求设计,而不用在比较复杂和繁琐的基础框架上浪费过多的精力和时间。而且该架构封装了农业领域常用的数据字典,为程序员开发农业领域的应用系统提供了便捷的数据支持。同时,利用该架构开发的应用系统将提供优美便捷的可视化页面操作,使用人员能够极其容易地学会对系统数据的维护。1.2国内外研究现状随着近些年来信息化的迅猛发展,各领域企业对Web应用系统的需求日益增多,鉴于业界需求的迫切性,以及优秀框架技术的整合对Web应用程序开发的重要性,基于JavaEEWeb框架的整合开发架构的设计和研发,已经成为了当今社会近些年来国内外研究的热点。1.2.1框架技术研究进展随着JavaWeb技术应用的广泛性,各种支持JavaWeb应用开发的技术、以及相关的框架技术不断被推出,例如:Struts、WebWork、Struts2、Spring、Hibernate、ExtJS等。这些基于JavaEEWeb应用的优秀开源框架具有不同的应用特点,在开发Web应用时,可以根据实际需求来选用其中几种框架进行整合。Struts是世界上第一个发布的采用了MVC设计模式的开源框架,它是Apache软件基金会(ASF)下的一个开源项目,它的1.0版本是由CraigR.McClanahan先生在2001年发布,该框架一经推出就广受世界JavaWeb开发人员群体所重视,经过6年时间的不断改动和完善,Struts成为了成熟、稳定的框架技术,并且在世界范围内得到了较好的应用(李天鸣,2011)。WebWork是由OpenSymphony组织开发的开源框架,是致力于组件化和代码重用的MVC模式的框架,它的创始人是Java领域的名人RickardOberg先生。发展到如今的WebWork已经被拆分成了Xwork1和WebWork2这两个项目。WebWork虽然没有Struts那样赫赫有名,但它采用了更加松耦合的设计,甚至比Struts更加优秀(王盈盈,2012)。随着JavaEEWeb技术的进步,Struts的局限性问题不断暴露出来,制约了Struts的持续发展。于2007年初,ApacheStruts团队在Struts和WebWork的技术基础上进行了合并,推出了Struts的下一代产品Struts2(郝玉龙,2010)。Struts2是一个基于JavaEEWeb应用的采用了MVC模式的全新开源框架,它是WebWork和Struts社区合2 山东农业大学硕士专业学位论文并后的产物,以WebWork为核心,并且结合了Struts和WebWork两者的优势,具有较好的可扩展性,成为了目前国内外JavaEEWeb应用系统开发的首选框架之一(韩义波,2009)。Spring是由RodJohnson在其2002年编著的《ExpertoneononeJ2EEdesignanddevelopment》一书中阐述的一些理念和原型衍生出来的(CraigWalls,2013),最初RodJohnson编写了interface21框架,并以此为基础重新设计和丰富其内容,使用基本的JavaBean来代替结构笨重的EJB来完成事情,冲破了JavaEE传统框架的臃肿和开发效率低的困境,并于2004年3月,发布了易于开发、部署和测试的轻量级框架Spring1.0正式版本。随着Spring的不断更新和完善,最新已经更新到了Spring4.2版本,成为了国内外JavaEEWeb应用开发使用框架中的必备之选(计文柯,2011)。Hibernate是一个开放源代码的对象关系映射框架(孙卫琴,2010),它的创始人是澳大利亚的GavinKing,他在2001年发布了Hibernate的第一个版本,从2006年Hibernate3.2版本开始,已经完全兼容JPA(JavaPersistenceAPI)标准(Keith,2011),流行于全世界,发展到如今功能更加健全的第五个版本Hibernate5已经发布了。随着JavaScript脚本语言得到广泛应用(MacCaw,2012),涌现出很多优秀的JavaEEWeb应用程序的前端开发框架,其中得到广泛应用的代表有ExtJS。ExtJS来源于YUI,YUI是一个在Yahoo内部使用JavaScript脚本语言编写的工具和控件库。后来Jack对YUI进行了出色的扩展,于2006年发行了版本为0.33的YUI-Ext。2007年Jack成立了运作Ext的商业公司,更名Ext为ExtJS(卫军,2011),于2007年4月发布了ExtJS1.0正式版本。随着ExtJS的不断修正、扩充和完善,在2011年4月,ExtJs4.0正式版本发布,这是一次重要的更新,对大量的组件进行了重构,内容更加丰富(韩国敬,2013)。目前最新版本是2015年发布的ExtJS6的测试版本,ExtJS和SenchaTouch合并成一个功能更加壮大的框架,已经完全兼容HTML5和CSS3规范,成为了Web前端开发框架的首选框架之一。1.2.2集成架构研究进展随着这些优秀的开源框架技术的不断成熟和完善,如何把这些优秀的框架的优点有效的整合利用起来成为了研究热点。目前国外的整合框架解决方案研究的典型代表为AppFuse(Apostolis,2012),Appfuse是由MattRaible开发的一个基于JavaEE的指导性框架,最初的目的是为了在开发人员开发新的Web应用程序时,能够有效的减3 Web应用系统的通用开发架构研究与应用少不必要的时间,后来通过不断的版本更新,成为了一个稳定且健全的JavaEEWeb应用开发框架。AppFuse在国外得到了非常广泛的应用,是基于JavaEEWeb应用框架的整合开发架构的典型代表,目前最新的版本为2015年2月发布的3.5版本(薛召,2012)。目前国内基于JavaEEWeb应用框架的整合开发架构的研究成果微乎其微,与国外相比存在着不小的差距,其中典型的代表是EasyJWeb。它是一个完全由来自中国的开源爱好者们开发出的,其文档与注释全部以中文谱写的开源框架。EasyJWeb框架是从国内众多的项目实践中设计构思而来的,它是用于JavaEEWeb应用程序高效开发的MVC框架(苏晓波,2009)。EasyJWeb借鉴了当前广为流行的基于JavaEEWeb应用的框架,如Struts、Spring、Hibernate等优秀的开源框架技术,吸取其优点与精华,并且提供了丰富的Ajax框架技术支持,从而完成了框架的设计,于2006年EasyJWeb1.0版本正式对外发布,经过了五年的研发和改进,EasyJWeb2.0版本于2011年正式对外发布(张杰,2011)。1.2.3研究现状分析通过国内外对JavaEEWeb框架技术整合开发架构的研发成果与现状,可以看出目前应用最为广泛的一些基于JavaEEWeb框架技术都是由国外研发出来的,发展到如今已经相对成熟,并且在世界各地得到了较好的应用。而对于JavaEEWeb框架的整合开发架构的研究,国外的研究和应用一直处于领先水平,国内的研究成果是微乎其微的,与国外相比存在着不小差距。国外基于JavaEEWeb应用框架的整合开发架构的典型代表为AppFuse,它为我们提供了一个Web开发的一个崭新的方式和思路。通过AppFuse我们可以看到目前国外的主流Web开发使用了哪些技术,以及开发的方式和所能达到什么样的结果。AppFuse将Hibernate、Struts、Spring、Ant、Log4J、JUnit、JSTL、WebWork等众多成熟的Java框架技术集成到一个架构中,为我们提供了一个非常好的借鉴和学习的机会。尽管这些技术在国外都已进很流行了,但是在国内能够将这些Java框架技术集成到一个架构中的研究还是不多见的。目前国内基于JavaEEWeb框架的整合应用架构最为常见的就是SSH框架,即是Struts2、Spring和Hibernate集成起来的架构。目前在国内外对框架整合的研究中,都主要整合了程序后台设计的一些框架技术,很少对程序前台设计的一些优秀框架技术进行整合利用。另外,集成架构的研究4 山东农业大学硕士专业学位论文中对特定领域的系统开发做出针对性整合的案例是微乎其微的,集成架构的针对性可以为特定领域的系统开发提供更加便捷的支持。本文借鉴了国外成熟的集成框架的思想和方法,采用了当前国内广为流行的SSH框架技术作为程序后台设计的支撑,并且集成了功能强大的ExtJS框架技术作为前台设计的基础,结合这些开源框架技术的特点和优势,丰富和完善其功能,搭建出一个具有较好扩展性和通用性的基础架构,并且将农业领域常用的数据字典封装在该架构上,使该架构能更好地应用于农业领域。1.3研究内容、研究方法及技术路线本文结合了国内外研究的现状和当今信息化社会的需求,充分利用已有开源框架技术的特点和优势,通过对基于JavaEEWeb应用框架技术进行集成和创新,丰富和完善其功能,构建出一个结构完整且具有较好的扩展性和通用性的基础架构,并且把农业领域常用的数据字典封装在该架构上,从而为程序员开发农业领域的Web应用系统提供了一个高效便捷的基础平台。1.3.1研究内容为了构建一个高质量、高效率开发Web应用系统的架构,研究内容主要包含七个方面:框架技术在架构中的应用;架构设计原则、模式与构建技术;架构体系结构的设计;后台的详细设计与实现;前台的详细设计与实现;架构中通用应用模块的设计与实现;应用示例系统。具体研究内容如下:(1)框架技术在架构中的应用本章内容研究了JavaEE框架技术,以及基于JavaEE应用的一些开源框架技术,例如:Struts2、Spring、Hibernate等优秀的后端开源框架技术了,同时研究了功能强大的前端框架技术ExtJS,介绍了四种框架技术在架构中的应用。(2)架构设计原则、模式与构建技术本章内容研究了通用集成架构的设计原则和设计模式,以及MVC模式的研究和在该架构中的应用,随后又研究了架构构建相关技术和方法,进而依照通用集成架构的设计原则,遵循其设计模式的思想,利用集成架构的构建技术和集成方法搭建架构。(3)架构体系结构的设计本章内容以JavaEE多层结构模式为基础详细给出了通用架构的整体体系结构的设计,包括各层之间的各个组成部分的设计,在整体体系结构的基础上又详细介绍了架构中资源文件的配置与管理,以及多层结构之间的数据通信过程。5 Web应用系统的通用开发架构研究与应用(4)后台体系结构的详细设计与实现本章内容研究了基于JavaEE框架多层结构的后台体系结构详细设计与实现,包括DomainObject层、DAO层以及业务逻辑层的Service层、服务工具类和BaseAction抽象类的详细设计与实现,搭建出架构后台的基础骨架。(5)前台体系结构的详细设计与实现本章内容研究了基于ExtJS框架技术的前台体系结构的详细设计与实现,研究了ExtJS通用表格、表单(View)、通用事件(Control)和通用模型工厂类(Model)的设计与实现,以及一些工具类的设计实现。本章内容还研究了前台通用扩展组件设计与实现,从而完成架构前台基础骨架的搭建。(6)架构中通用应用模块的设计与实现本章内容研究了整个集成架构中的通用应用模块的设计与实现,其中包括:通用角色权限(RBAC)管理的设计与实现;基于SpringSecurity框架通用安全登录模块的设计与实现;应用系统通用数据字典模块的设计与实现,以及农业领域常用数据字典的封装;(7)应用示例系统本章内容研究了如何利用研发好的通用开发架构作为开发平台,按照具体项目的需求分析,在通用架构的基础上设计和实现具体的应用系统。通过示例系统的研发,真正体现出快速开发的理念,明确具体应用的开发过程和方法,充分展示基础开发架构的结构完善,功能强大,且具有较好的扩展性和通用性的特点。本研究将通过以上七个主要内容进行具体的研究,从而实现本研究的目的与意义,研究内容结构图如图1所示。6 山东农业大学硕士专业学位论文JavaEE研究模块化原则可替换原则Struts2内容设计原则工厂模式SSHSpring设计模式MVC模式架构设计原则、Hibernate框架技术在架构中模式与构建技术构建技术拦截器技术ExtJS的应用AOP技术多层结构集成架构中通用应用模块的设计与实现配置资源基础环境搭建架构体系结构菜单管理安全登录的设计交互过程角色权限数据字典DomainObject前台体系结构的层的封装详细设计与实现DAO层的封装后台体系结构的详细设计与实现通用表单(view)模型工厂(model)业务逻辑层的封装程序入口通用事件(control)通用扩展组件Service层的封装控制层服务工具类的封装BaseAction的封装应用示例系统图1研究内容Fig.1Theresearchcontent1.3.2研究方法在该研究的过程中,将采用不同的研究方法来实现具体的研究内容,主要采用的研究方法包括:文献研究法,理论与实践结合法和应用示例系统的开发。(1)文献研究法在研究过程中,首先是阅读了大量的国内外与JavaEEWeb应用开发整合框架相关的文献,并对其进行整理和总结,分析其发展历程和现状,了解其优势和特点,从而明确将要研究的内容,进而深入研究了构建集成架构的相关框架技术、设计原则和模式,以及架构构建的方法,为本研究中研发的通用开发架构做出充分准备。(2)理论与实践结合法在研究过程中,深入研究了与研发出的通用开发架构相关的框架技术、设计原则和模式、构建方法的理论知识,并且在理论研究的基础上不断进行实践应用,通过实践应用相关的框架技术,结合设计原则、模式和方法,从而不断的设计、实现、测试、完善研究内容,逐步研发出了通用的开发架构,真正做到理论和实践相结合。(3)应用示例系统的开发本文的最后章节给出应用示例系统的设计和开发过程,展示出如何利用研发出的通用开发架构作为开发平台,按照具体项目的需求分析,在通用架构的基础上设计和7 Web应用系统的通用开发架构研究与应用实现具体的应用系统。通过应用示例系统的研发,充分展示研究成果是如何被有效地利用,真正体现出本文研究的目的与意义。1.3.3技术路线在本文中,按照软件工程的思想方法、技术和原理,实现对该架构的研究与开发,具体技术路线如图2所示。文献阅读,资料收集确定研究内容具体研究路线研究设计模式构建技术框架技术设计原则集成方法整合集成架构体系结构类型选择Desktop入口的研究与设计静态变量入口Oracle扩展组件入口通信架构后台通信架构SQLServer数据库体系结构的详细前台体系结构的程序主入口设计与实现详细设计与实现MySQL通用表单(view)BaseAction通用扩展通用模型工厂类设DAOService使用组件继承计与实现(model)业务Action通用事件(control)Utils、constants菜单管理角色权限集成架构中通用应用模块的设计与实现数据字典安全登录应用示例系统图2技术路线Fig.2Thetechnicalroute(1)首先是通用阅读大量的国内外与基于JavaEEWeb应用整合架构相关的文献和资料,明确将要研究的内容,进而确立具体的研究路线。(2)研究与具体内容相关的框架技术及其工作原理,在研究相关技术的基础上,再从理论方面研究集成架构构建的设计模式和原则,以及架构的构建技术与集成方法。8 山东农业大学硕士专业学位论文(3)在以上两个方面研究的基础上,进行通用开发架构软件体系结构的研究与设计,研究并设计出该通用开发架构的基础骨架。(4)在给出架构总体的体系结构的基础上再进行详细的研究与设计,研究后台框架的集成及其体系结构的设计与实现,研究前台框架的集成及其体系结构的设计与实现,然后再给出集成框架中通用应用子系统的封装,逐步完善研究内容,研发出通用的开发架构。(5)最后利用研发的通用架构作为基础开发平台,给出应用示例系统的设计与实现,充分展示研究成果如何被有效地利用。1.4本章小结本章内容给出了与本文相关的一些国内外研究的现状介绍,以及本文的整体内容概括,先是表明了研究的目的与意义,然后围绕着目的意义的实现,给出主要研究内容的概括和研究的技术路线,从而表明研究实现的可行性。9 Web应用系统的通用开发架构研究与应用2框架技术在架构中的应用在Web应用开发中,软件工程基于软件层次化、模块化及软件重用的思想,提出了模板、面向对象、设计模式、组件、框架等软件重用技术。其中框架技术是面向对象系统的最大代码复用方式,框架技术致力于代码重用,能将整个系统架构分解成更小的组件,保证了架构的通用性和易扩展性的特点。2.1JavaEE框架JavaEE(JavaEnterpriseEdition)被称为Java企业版开发平台,它不仅是一套企业级应用系统开发的统一规范,同时它更是一个功能强大的框架技术,JavaEE平台为企业级应用系统的程序开发人员提供了一组功能强大的API,从而缩短了开发周期、降低应用程序开发的复杂性,并改善了应用的性能,使Java企业应用系统的开发变得快捷而简单。JavaEE7提供了一个全面、完整、集成的组件构建企业和Web应用程序,如图3所示,给出了这些组件之间的协作关系,其中橙色的部分(JSON、WebSocket、Concurrency、Batch)为JavaEE7版本中新添加的组件。图3JavaEE7框架组件Fig.3JavaEE7FrameworkcomponentsJavaEE利用这些组件构建出了“应用程序的模型框架”,该框架把服务的实现转变为多层应用,从而提供了企业级应用系统开发的可扩展性、可访问性和管理性。多层结构一般分为:领域对象(DomainObject)层、DAO(DataAccessObject,数据访问对象)层、业务逻辑层、控制层以及表现层。10 山东农业大学硕士专业学位论文领域对象层:领域对象组件抽象的系统的对象模型。该层由“领域对象组件”构成,即是由系列的POJO(PlainOldJavaObject,普通的,传统的Java对象)组成,往往包含了各自所需要的逻辑方法。数据访问对象层:此层由系列的DAO组件构成,这些DAO组件实现了对数据库的创建、查询、更新、删除(CRUD)等原子操作。业务逻辑层:此层由系列的业务逻辑对象组成,这些业务逻辑对象实现了构建系统所需要的业务逻辑方法。控制层:此层由系列控制器组成,这些控制器用于拦截用户请求,并调用业务逻辑组件的业务逻辑方法,处理用户请求,并根据处理结果转发到不同的表现层组件,从而来控制系统前后端的通信。表现层:该层主要负责收集用户请求,并将显示处理结果。最常用的技术是JSP技术、JSF技术等。以上各层之间的关系如图4所示。其中各层的JavaEE组件以松耦合的方式耦合在一起,这种方式也保证了开发的应用系统能具有良好的扩展性,逆着箭头的方向,前面的组件依赖于后面的组件的功能;顺着箭头的方向,前面的组件支持后面的组件实现。表示层控制层业务逻辑层显示提供业务逻辑实现提供数据库访问服务DoMainObject层DAO层提供持久化服务封装数据库图4JavaEE应用模型结构框架Fig.4JavaEETheapplicationmodelstructure研发的架构按照JavaEE规范,采用JavaEE的多层结构进行设计与实现,是基于JavaEEWeb的通用开发架构。11 Web应用系统的通用开发架构研究与应用2.2SSH与ExtJS框架随着JavaEE在全球范围内的广泛使用,众多基于JavaEEWeb的框架技术涌现出来,这些框架在当今Web应用的开发中起到了极其重要的作用,其中被广发使用的优秀开源框架的代表有Struts2、Hibernate、Spring和ExtJS。2.2.1Struts2Struts2框架技术整合了JSP、Srvlet和XML等当前动态网站技术中的主流Web开发技术,它是基于MVC模式的开源框架,包括模型层(业务逻辑组件和数据库访问组件)、控制器层(核心控制器类StrutsPrepareAndExecuteFilter等)和视图组件。(1)模型组件:模型组件是由JavaBean或EJB构成业务逻辑模块的实现。(2)控制器组件:控制器组件主要由核心控制器和业务控制器Action组成。(3)视图组件:包括Struts2标签、HTML、JSP和和、FreeMarker、等模板视图技术。Struts2框架技术在本文研究的架构中是控制层的核心部分,负责前台请求信息的拦截,配置管理Action请求相关的信息交互,是连接前台和后台服务器之间的纽带。2.2.2HibernateHibernate是一个开放源代码的ORM(对象关系映射)框架,从2006年Hibernate3.2版本开始,已经完全兼容JPA(JavaPersistenceAPI)标准,它对JDBC进行了轻量级的对象封装,实现了程序对象到关系数据库数据的映射,使程序员可以采用面向对象的思想来操作数据库,发展到如今功能更加健全的第五个版本Hibernate5已经发布了。虽然基于ORM框架的产品非常多,例如MyBatis,OJB等,但是Hibernate仍然是目前最为流行的ORM框架。Hibernate框架技术在本文研究的架构中充当领域对象层的容器,负责进行对象关系映射,利用Hibernate框架技术能够轻松地实现数据库表和实体对象之间的数据格式转换,使数据库和后台服务器之间进行数据交互。2.2.3SpringSpring框架以容器的形式为后台提供服务,其核心技术是Ioc和AOP技术,并且提供对持久、层事务的支持;提供MVCWeb框架的实现,并对于一些常用的企业服务API提供一致的模型封装,是一个全方位的应用程序框架,除此之外,对于现存的各种框架(例如Struts2、Hibernate),Spring也提供了与它们相整合的方案。随着12 山东农业大学硕士专业学位论文Spring的不断更新和完善,最新已经更新到了Spring4.2版本,是国内外JavaEEWeb应用开发使用框架中的必备之选。Spring框架技术在本文研发的架构中充当后台服务器的管理者,Spring以容器的形式进行管理,它自身的IoC依赖注入容器不仅对Hibernate进行管理,管理后台与数据库直接数据的交互,而且管理控制Struts2创建Action操作,是后台服务器MVC设计模式的控制者(controller)。2.2.4ExtJSExtJS框架是一个用JavaScript脚本语言编写的组件库,它以组件的形式来提供服务,不同的组件提供不同的功能,组件以模块化得形式组合使用,用于创建优美的前端可视化用户界面。ExtJS框架是一个和后台技术无关的前端AJAX框架,功能十分丰富且强大,没有其它框架能和其媲美,主要可以用来开发RIA即是富客户端的AJAX应用。因此,ExtJS框架技术可以用在.Net、Java、Php等各种程序开发语言开发的应用系统中。ExtJS框架无论是在界面设计之美,还是在组件功能之强大上,它的各种控件功能都高居榜首。ExtJS不仅具有JavaScript脚本语言的轻便性,而且采用面向对象的思想来编写前端代码,它的模块化、组件化的服务方式更是使Web前端设计灵活而容易扩展和改造。ExtJS4版本推出以来,使得利用ExtJS框架技术开发的前端应用可以采用MVC的设计模式来编写前端体系结构,代码结构清晰且易于管理,保证了应用系统前端的通用性和易扩展性的特点。2015年推出ExtJS6的最新版本在功能和界面上又有所提高和改进,更是推出来MVVM和MVC相结合的设计模式,使得前端事件功能地编写更加简洁和方便了。ExtJS框架技术在本文研发的架构中负责前台页面、功能和事件的编写,ExtJS不仅有JavaScript脚本语言的灵活性,又不失面向对象的设计思想,ExtJS4版本更是引入了前台MVC模式的标准化,使前台和后台服务器一样,采用MVC模式管理体系结构,有效地控制各个组件之间的逻辑关系,保证了前台架构的易扩展和已维护的特点。13 Web应用系统的通用开发架构研究与应用2.3本章小结本章内容研究了JavaEE框架技术,以及基于JavaEE应用的一些开源框架技术:Struts2、Spring、Hibernate等后端开源框架技术了,同时介绍了功能强大的前端框架技术ExtJS,并且分别给出了四种框架技术在本文研发的架构中的应用,如图5所示。ORMHibernateStruts2actionExtJSDB(M)(V)(JavaScript脚本库)对象关系映射Spring容器4.0版本标准化管(C)管资源配置文件理理前台IoC(MVC)管理图5SSH和ExtJS在架构中的作用Fig.5TheroleofSSHandExtJSinarchitecture14 山东农业大学硕士专业学位论文3架构设计原则、模式与构建技术架构开发是一个极为复杂的过程,开发一个通用性强的架构更是需要全面性地考虑问题:如何能够设计出满足用户功能需求的快速开架构,如何能够保证利用通用架构开发出的系统尽量避免错误,如何使开发架构容易适应用户需求的变化和系统的扩展,这是研发通用架构面临的一些问题。为了更好地解决上述问题,在架构设计时需要深入研究并利用架构设计原则、设计模式及架构构建技术,把理论和技术相结合,从而实现本研究的目的和意义。3.1架构开发的设计原则与模式面象对象的思想是一个比较抽象的过程,在这个抽象过程中需要把问题抽象成一个个对象,利用面向对象的思想来解决问题,这就需要把对象和日常生活中的事物相结合起来理解,从而就提出属性、事件、方法这样的概念来增加面向对象的直观性。设计原则和设计模式都是针对于面向对象的设计思想而提出来的,在通用架构的开发过程中,遵循一些必要的设计原则,巧妙地应用一些设计模式,可以保证开发架构的通用性、易维护性和易扩展性的特点。3.1.1设计原则为了更好地实现本研究的通用开发架构,需要依循架构开发的设计原则,例如:简约性原则,易维护性原则,可扩展性原则,稳定抽象原则,单一职责原则,开放封闭原则等。(1)简约性原则:强调问题的简化性,而并不是使问题更加复杂化的原则。有些设计者在设计架构时,往往倾向于体现其程序设计的“高深”功力,从而导致了设计的功能具有较强的复杂性,而不易于系统功能的维护。真正好的设计应该是从系统架构的整体需求出发,找到能够直接解决问题的有效方法,而并不是追求“高深”方法的复杂性。(2)易维护性原则:易维护性是集成架构设计初期时就需要考虑的问题,首先是架构设计要有层次分明的体系架构,其次还要保证架构有一套错误定位的有效机制,一旦在应用系统出现问题时,依照层次结构分明的体系和有效的错误定位机制,能够很快地找出问题所在,从而更好地维护系统架构和功能。15 Web应用系统的通用开发架构研究与应用(3)可扩展性原则:在进行架构设计时要充分考虑应用系统的发展目标的可能性,以及可能发生的需求上的变化,根据发展目标和可能的需要变化来构建通用的框架,保证架构易扩展的特点。(4)稳定抽象原则:包的抽象程度要保持和其稳定程度的一致性,应该抽象出一个稳定的包,也就是说应该包含一些抽象类,这样可以保证架构稳定地可以进行扩。这样架构既灵活又没有过分的设计限制。(5)单一职责原则(SRP):针对一个类而言,应该保证引起它变化的原因仅有一个,也就是说一个类只实现一个功能。在软件工程中有高内聚这样的一个架构设计原则,而一个类只实现一个功能的原则无凝内聚是最高的。(6)开放封闭原则(OCP):开放就是指一个类可以扩展其功能,封闭就是指这个类对于其功能修改是封闭性的,也就是说不能修改已有的代码功能。想要实现这一原则的关键是抽象,在架构中使用抽象的基类,在具体应用系统中子类继承基类,并按照实际业务需求扩展基类的功能。按照通俗易懂的说法就是:保持接口不变,使其功能可以被扩展。3.1.2设计模式架构开发的设计模式可以提供架构设计的思想和方法,有利于更好地实现本研究的通用开发架构,所以研究一些架构开发的设计模式更是极为重要的,比如:工厂模式,策略模式,观察者模式,代理模式,适配器模式等等。(1)工厂模式(FACTORY):工厂模式就是把不同的参数传入一个工厂类中,从而可以生成不同的实现类(同一接口,不同实现),使用工厂模式可以保证架构易于扩展具体功能,本文中利用工厂模式设计基础Action抽象类用于实际业务Action的继承。(2)策略模式(STRATEGY):策略模式就是把某些调用的方法委托给一个拥有通用算法的具体类中,通过不同的具体接口实现扩展的具体功能。使用策略模式既能够重用具体类,又易于扩展具体的功能,本文中利用策略模式封装服务层的一些实现类和工具类等,保证架构后台易维护的特点。(3)观察者模式(OBSERVER):如果把一个系统分割成多个相互协作的类存在一个不好的问题,就是很难去维护相关对象间的一致性。但是我们不希望使各类紧密耦合给维护、扩展和重用带来极大的不便。而观察者模式就是为了解决这些类的高耦合度。观察者模式有时也被称为发布/订阅模式,它定义了一种让多个观察者对象同时16 山东农业大学硕士专业学位论文监听一个主对象的这种一对多的依赖关系,当被观察者在状态发生了变化时,就会通知所有的观察者对象,使它们可以自动更新,本文中利用观察者模式设计实现后台服务层及业务逻辑层的封装,保证了架构后台的松耦合、易维护的特点。(4)代理模式(PROXY):如果你写的代码并不是每个逻辑路径都需要某个对象,而且这个对象还消耗了很多资源,你肯定有过延迟对该对象的创建(例如if和else就是两条不同的逻辑路径)。如果要限制对某个对象的访问,就需要提供不同的方法给普通用户和管理员用户,这都需要解决一个问题,就是给这个对象提供一致的接口来改变其内部功能?想要操作真实对象或者将新对象作为真实对象的替身,可以通过引入一个新的对象来实现,那就是代理对象,它可以作为中介在客户端和目标对象之间起作用,通过代理对象去掉用户看不到的内容和服务,这就是代理模式,在本文中主要用于对数据库操作的代理,从而实现数据库操作和业务操作的代码分离。(5)适配器模式(ADAPTER):想要在一个稳定的架构中去添加一个外部组件,但是这个外部组件的接口不符合架构的规范,这时就创建一个可以对外部组件进行封装的适配器类,将适配器类的接口转换成可以适配客户需求的另外一个接口,相应的接口也委托给外部组件去实现,这样就可把外部组件添加到已存在的架构中,使用这样的适配器模式,可以使得原本由于接口不兼容而不能一起工作的一些类可以协作在一起工作,本文中BaseAction的设计思想同样也用到了适配器模式,保障了架构的通用性,使架构易于扩展。3.1.3MVCMVC(Model-View-Controller)不仅仅是软件开发的一种设计模式,它其实是由三个经典的设计模式演变而来的,包括观察者模式(Observer)(Pub/Sub),策略模式(Strategy)以及组合模式(Composite),并且根据MVC模式在具体框架中的实现不同还可能会用到工厂模式(Factory)和装饰器(Decorator)模式等经典设计模式,所以它是一种复合的设计模式。MVC模式把软件系统分为三个基本的组成部分,分别是模型(Model)层,视图(View)层和控制层(Controller)。MVC是一种成熟的动态式程式设计模式,在设计策略中将系统从构架上分为数据持久层、表示层和业务逻辑层的三层模式,就分别对应了MVC模式中的三个组成部分。模型层(Model):模型的作用是用来存放具体应用程序的所有数据对象,它是应用程序中用于处理应用程序数据逻辑的部分。通常的模型对象负责在数据库中存取相应的数据。17 Web应用系统的通用开发架构研究与应用视图层(View):视图的作用是提供呈现给用户的界面,用户与视图层进行交互,具体的视图层是由HTML、CSS和JavaScript代码编写的界面,也是具体应用程序中处理数据用于显示的部分,在通常情况下的视图层是依据模型层的数据创建的。控制层(Controller):控制层是具体应用程序中用于处理用户交互的部分,是模型层和视图层之间交互的纽带,通常情况下控制层负责从视图层读取具体数据,控制用户的输入,获得相应的事件和输入进行处理,向模型层发送数据,并相应地更新视图层。用户与应用程序之间的一个事件的发生是这样的一个过程:当用户和应用程序产生交互后,就会触发控制层的事件处理,控制层就会从模型层中请求相应的数据经行处理,然后将其交给视图层,然后由视图层将具体数据呈现给用户。MVC在核心通讯上是基于推送/订阅模型的,其核心就是观察者模式。就像上节对观察者模式的研究一样,这种模式的目标之一就是对一个主题对象和它的观察者之间建立一对多的依赖关系,监听这个主题对象当发生状态改变的时候,通知它的观察者做出相应的更新。而视图层Views和控制层Controllers之间的关系与观察者模式稍微有点不同,这也结合了策略模式的特点,Controllers帮助Views对不同用户的具体输入做相应的响应。本文中研发的通用开发架构的前后台设计都利用了MVC设计模式,后台应用SSH框架技术,Hibernate框架作为模型层(Model)来控制具体数据的对象关系映射,Struts2框架作为后台视图层(View)纽带与前台进行连接,Spring框架作为后台控制层(Controller)对后台进行统一管理,控制模型层与视图层之间的交互。通用开发架构的前台使用ExtJS框架技术同样也是采用了MVC的设计模式,以面向对象的思想实现前台的逻辑结构。3.2架构构建使用的技术第二章内容介绍了通用架构中使用的框架技术,本章的上一节内容又介绍了架构设计相关的原则和设计模式,有了这些基础还不够,构建通用的开发架构还离不开架构构建相关技术的研究。3.2.1IoC和AOP编程在通用开发架构的构建中离不开两个重要的技术:控制反转IoC(InversionofControl)和面向方面编程AOP(AspectOrientedProgramming)。18 山东农业大学硕士专业学位论文控制反转(InversionofControl,英文缩写为IoC):它是一个可以削减系统程序耦合度的技术,它采用面向对象编程的法则,重点在于对组件依赖性、配置及其生命周期的关注。控制反转要求组件的创建以被动的方式进行,由特殊的反正控制容器来负责组件的创建,由该容器去维护组件间的依赖关系。面向方面编程AOP(AspectOrientedProgramming):它是面向对象编程的一个延续,但并不是取代了面向对象编程的思想,两者的编程思想并不矛盾,而AOP更是面向对象编程的一个完善和补充。它的目标是在不破坏对象层次结构的前提下,利用“横切”技术将影响多个类的公共行为进行封装,封装这些行为到可重用的模块中进行统一地管理,从而降低模块之间的耦合度,保证了架构的易维护和易扩展的特点。AOP技术使得架构设计更加细化,结合IoC技术使用,可以大程度提高架构编写的灵活性。本文中研发的架构后台正是整合了Spring框架技术,其核心就是AOP和IoC技术,Spring以容器的形式来管理后台各种配置信息,使架构易于维护和管理。3.2.2拦截器、过滤器和监听器拦截器技术、过滤器技术和监听器技术在架构构建的过程中发挥了极为重要的作用,也是架构构建中必不可少的三个技术。拦截器技术在AOP技术中用于拦截某个字段或者方法的访问,在被访问之前或者之后加入特定的操作,它是AOP技术实现的一种策略。拦截器技术是动态拦截业务action调用的对象,利用拦截器技术提供的机制可以定义在一个action执行前后运行的代码。过滤器技术可以看成是一个程序,它可以添加到一个或者多个JSP页面之上,并且可以检查进入这些JSP资源的请求信息,它优先于JSP页面而运行在服务器上。过滤器对于这些可以检查的请求信息可以做出不同的处理,它可以对在JavaWeb中传入的request和response对象进行检查,提前设置一些参数或者过滤掉一些不必要的信息,然后再将其传入到Struts的Action中进行业务逻辑处理。它可以过滤掉一些非法的URL,也可以在参数传入Struts的Action前设置统一的字符集或去除掉一些非法的字符,这样可以有效地减轻服务器负担。监听器技术Listener实际上是一个实现了特定接口的类,监听器需要在web.xml文件中对其进行相应的描述,在相应的Web应用程序启动时,这个监听器就可以被实例化,就相当于启用了这个监听器,这时监听器就可以监听范围内的对象,当被监听对19 Web应用系统的通用开发架构研究与应用象的发生变化时,后台服务就会自动调用监听器类中相应的方法,实现对该对象的监听,记录相应的信息。本文中研发的架构运用Struts2框架技术自定义拦截器,拦截前端传来的请求并作出相应的处理来给以前端响应;在用户访问系统时,该架构运用过滤器技术对访问的URL进行过滤,当访问路径没有权限时过滤跳转URL到登录页面;本文中还利用监听器技术获取系统中一些静态化变量,监听获取系统路径变量,监听spring的文件工具类,目的是将注入到spring中的对象,获取其静态化对象,从而可以在系统的任何地方使用注入的对象。3.3本章小结本章内容介绍了通用集成架构的设计原则和设计模式,以及MVC模式在本文架构中的应用,随后又介绍了架构构建相关技术和方法,进而依照通用集成架构的设计原则,遵循其设计模式的思想,利用集成架构的构建技术和集成方法搭建架构。20 山东农业大学硕士专业学位论文4架构体系结构的设计软件体系结构表示了一个软件应用系统的高层结构,把软件系统看成由各部分组件构成的一个整体,不同的组件部分完成系统相应的功能,各组件部分之间又存在着不同的联系(API),各部分组件直接通过数据通信交互紧密地联系成为一个整体。设计通用架构的体系结构,以及各部分之间的通信协议与数据格式,为通用架构的实现做准备。4.1架构整体体系结构通用开发架构的总体体系结构如图6所示,该图由下到上按照JavaEE框架的多层结构设计,把总体体系结构分为六个部分:数据库、领域对象层、DAO层、业务逻辑层、控制层和表现层。(1)数据库:研发的架构利用配置文件设置连接各种关系数据库的统一接口,如Oracle、SQLServer和MySQL数据库等,配置资源为多种关系数据库提供统一访问,为数据库开发人员提供了多数据库类型的选择。研究的通用开发架构的数据库设计部分还包括一些通用模块的数据库设计,在后面通用模块设计实现的章节会具体介绍,在开发具体应用时,针对于具体的业务需求再进行应用系统数据库的设计实现。(2)领域对象层:在该架构领域对象层设计了BaseEntity基础实体类作为基础数据模型,在基础实体类中设计一些常用的、通用的基础属性,用于具体业务实体类的继承。创建描述实体字段信息的注解类,为实体类的字段提供注解信息描述。(3)DAO层:设计DAO(DataAccessObject)层数据库访问接口,声明一些通用的接口方法来提供对数据库的操作。设计DAO接口对应的具体实现类实现接口方法,使用Hibernate框架技术完成与数据库之间的对象关系映射。(4)业务逻辑层:设计Service接口类作为服务层专门用于为业务逻辑层提供服务API,设计Service接口对应的具体实现类实现接口方法。设计一些工具类、静态变量类和安全验证类来为Service提供服务。设计BaseAction抽象类作为业务逻辑处理的基类,用于具体业务Action的继承,为表现层提供通用的服务方法。(5)控制层:使用SSH框架技术控制管理架构架构后台,以Spring的Ioc容器作为主控制器,管理Struts2对Action的操作,管理架构配置文件及Hibernate对数据库的对象关系映射。21 Web应用系统的通用开发架构研究与应用(6)表现层:该架构采用B/S的网络结构模式,以浏览器作为Web客户端来与用户进行交互,表现层以ExtJS框架技术作为基础进行设计,设计程序的四个入口:Desktop入口加载ExtJS的桌面化管理样式;Application程序主入口加载前台应用;扩展组件入口加载改造的ExtJS组件和查询扩展组件等;静态变量入口加载前台定义的静态变量。在此基础上对前台程序结构进行MVC模式设计,设计通用的面板、表格和表单(V)等组件,设计控制层(C)Controller实现通用事件,设计实现前台模型工厂类简化Store的编写(M)。BaseGridDesktop入口桌面化管理BasePanelBaseForm基础组件(V)继承Application模型工厂(M)业务组件入口Store表现层Browser事件控制(C)扩展组件入口改造ExtJS组件自定义事件控制JSON查询、扩展组件静态变量入口交互对象Spring容器控制层BaseAction业务Action管理Struts2管理继承IoC使用security使业务逻辑层用Service接口类实现Service实现类utilsconstants调用DAO层DAO实现类实现DAO接口管理对象继承业务AnnotationDomainObject层BaseEntity注解HibernateEntity(注解类)表Oracle配置文件数据库DBSQLServer配置文件MySQL图6架构总体体系结构Fig.6Theoverallarchitecture22 山东农业大学硕士专业学位论文4.2架构的资源配置与管理研发的通用开发架构采用了分布式的设计思想,利用本架构开发出的Web应用系统是分布式系统,系统各部分间通过相应的资源配置信息实现关联,从而搭建成一个整体的开发环境。4.2.1架构资源研发的通用开发架构集成了多种框架技术,需要引入相关资源配置相应文件来进行统一的管理,资源文件可以使框架技术有效地结合在一起使用,从而实现分布式系统的集成。该架构中涉及了多种框架资源,比如:ExtJS框架和desktop资源、SSH框架资源、log4j日志、ehcache缓存、jdbc数据库连接等资源。(1)ExtJS框架和desktop资源:本研究中的通用开发架构想要使用ExtJS框架技术就需要引入ExtJS相关的资源文件,放在WebRoot项目目录下。ExtJS4引入了桌面化管理的可视化界面架构desktop,使用desktop同样需要把desktop相关的资源文件引入到WebRoot项目目录下。(2)SSH框架资源:本研究中的开发架构是以SSH(Struts2+Spring+Hibernate)框架技术作为程序开发后台设计的支撑,使用SSH框架技术就需要引入相关的jar包,下载SSH框架技术相关的jar包引入到架构中,即可使用SSH框架技术来构建后台架构。(3)使用log4j日志信息控制,ehcache进程缓存管理,以及jdbc数据库连接技术都需要引入相关的资源,下载相关jar包引入到架构中即可使用。4.2.2资源配置与管理引入了架构构建相关技术的资源后,如何能够有效地把各种资源进行整合管理,那就需要构建对应的配置文件,配置相关联的信息来使各个技术协作起来为整个架构服务,配置文件的具体结构如图7所示。23 Web应用系统的通用开发架构研究与应用图7资源配置文件结构Fig.7Theresourceconfigurationfilestructure(1)jdbc.properties:配置管理数据库连接的相关信息,如配置数据库驱动,链接地址,用户名及密码等。它可以为多种关系数据库提供统一的访问接口,通过相关信息的配置可以配置连接不同类型的数据库。(2)log4j.properties:配置管理日志信息控制的相关信息,管理整个架构的日志信息的输出控制。(3)sysconfig.propertise:配置管理架构全局静态变量的相关信息,包括项目路径的指定,全局统一格式的设置等变量信息的管理。(4)ehcache.xml:配置架构二级缓存管理的相关信息,使用缓存技术来更好地提高应用系统的运行效率。(5)struts.xml:配置使用Struts2框架技术相关的信息,包括配置Spring来创建管理Struts2的action操作,Struts2的动态函数的机制信息配置,自定义Struts2的拦截器的配置,以及管理(6)struts文件夹中具体信息的加载等。(6)struts文件夹:分别配置不同模块的Struts2相关信息,来管理具体业务相关的action操作,从而实现前后台数据的交互。把不同模块的具体业务相分离开管理,是架构清晰明了,易于维护。(7)beans.xml:配置使用Spring容器的相关信息,注入相关配置资源进行统一管理,包括面向方面编程AOP技术的运用,jdbc.properties,sysconfig.propertise等配置文件的注入管理,注入管理Hibernate的使用,配置Hibernate相关信息来实现数据持久化操作,配置使用Spring来管理事务操作等。24 山东农业大学硕士专业学位论文(8)beans-security.xml:配置使用Spring的security框架技术来管理应用系统的安全登录模块,配置相关信息来保证应用系统登录的安全性。(9)web.xml:Web应用系统的配置文件,配置加载beans.xml和beans-security.xml启用Spring监听器,从而使用Spring框架技术;配置Struts2相关资源信息,运用Struts2作为前后台连接的纽带;配置指定访问具体应用系统的首页信息。通过以上相关资源文件的管理与配置,把不同资源分别管理,配置关联信息使各个资源相结合来服务系统,不仅实现了整个架构性能的全面性,而且保证了通用架构易于维护的特点。4.3数据库、后台与前台三者间的数据通信协议JSON数据格式:JSON数据格式包括两种结构,通俗地说就是JavaScript中的对象和数组,所以这两种结构就是对象和数组这两种结构。其中对象在JS中表示为由“{}”括起来的内容,其数据结构是以{key:value,key:value,...}的键值对的形式组成的结构。针对于后台服务器中对象的概念,其中key表示对象的属性,value表示该属性对应的属性值。所以类比起来就很容易理解,使用对象.key的方法就能获取属性值。其中数组在JS中表示为由中括号“[]”括起来的内容,其数据结构是以["JAVA","JavaScript",...]的形式组成的结构,其取值方式也和其他语言中一样使用索引获取。在数据库中数据存储依赖于不同的表,每条数据都是某个表中的一条记录。在服务器端数据又是以Java实体对象的形式进行处理的,而在前端数据处理也有其固定的数据格式(JSON),架构各个部分的数据格式都不相同,所以各个部分之间数据格式的转换是相互之间通信的关键,各部分之间数据通信过程如图8所示。JsonBuilderDomainObject层使用表对象(ORM)DBHibernateDAO层对象业务逻辑层控制层JSON表现层Action(getModel)图8数据通信过程Fig.8Thedatacommunicationprocess25 Web应用系统的通用开发架构研究与应用数据库作为数据持久化的容器,存储着应用系统的所有数据信息,在数据库中数据存储依赖于不同的表,每条数据都是某个表中的一条记录,而在服务器端数据又是以Java对象的形式进行处理的。想要进行数据通信就需要把表和对象进行格式的转变,而Hibernate框架正是进行对象关系映射的框架技术,利用Hibernate框架技术的ORM原理能够轻松地实现表和对象之间的数据格式转换,使数据库与后台服务器的DAO层之间进行数据交互。服务器端数据以Java对象的形式存在,这里的Java对象即是与DomainObject层相对于的具体实体类对象。业务逻辑层通过对DAO层接口的调用,实现对象到表记录的存储或者表记录到对象获取的操作。后台服务器和前端之间是以JSON数据格式进行通信交互的,由于后台服务器的数据类型为Java对象,所以两个部分之间数据格式类型是不匹配的,需要进行数据格式转换的处理。这就需要在后台服务器把Java对象转变为JSON数据格式的字符串传给前台,同是也需要将前台传来的JSON格式数据转换为Java对象以便进行数据增删查改等操作。业务逻辑层负责完成对Java对象的具体操作,业务逻辑层与表现层之间数据以JSON的格式进行通信,业务逻辑层调用JsonBuilder类的具体方法实现Java对象到JSON数据格式的转换,为表现层提供数据支持。而对于表现层传来的JSON格式数据,业务逻辑层的具体Action通过调用getModel()方法实现JSON数据到Java对象的转换。4.4本章小结本章内容以JavaEE多层结构模式为基础详细给出了通用架构的整体体系结构的设计,包括各层之间的各个组成部分的设计,在整体体系结构的基础上又详细介绍了架构中资源文件的配置与管理,以及多层结构之间的数据通信过程。26 山东农业大学硕士专业学位论文5架构后台的详细设计与实现利用JavaEE的多层结构详细设计实现架构后台的体系结构,这样不仅可以满足典型的Web应用系统的需求,还可以提高通用架构体系结构的模块化与组件的重用性,有利于把通用架构的开发工作进行划分,将部分功能交给独立的模块去实现,从而提高功能模块的多重复用性,有利于保证整个架构的易维护和易扩展的特点。5.1后台体系结构本研究的上一章内容给出了通用架构的整体体系结构的设计,有了总体的骨架作为基础,进而进行具体部分的详细设计与实现。本章内容介绍了架构后台各层的详细设计与实现,包括DomainObject层、DAO层、业务逻辑层和控制层中各部分的详细设计与实现,从而实现架构后台基础部分的构建,通用架构后台体系结构如图9所示。Spring容器控制层BaseAction业务Action管理Struts2管理IoC继承使用security使业务逻辑层用Service接口类实现Service实现类utilsconstants调用DAO层DAO实现类实现DAO接口继承业务AnnotationDomainObject层BaseEntity注解Entity(注解类)Hibernate管理图9后台体系结构Fig.9Thebackgroundarchitecture如图9所示为通用架构后台体系结构,其中BaseEntity为架构的DomainObject层,封装了基础对象实体,而具体的业务Entity继承于BaseEntity这个基础实体类;DAO层封装了与数据库交互的接口,负责与数据库之间的数据通信;Service层用于为业务逻辑提供服务API,分离出DAO层与数据库的交互,使DAO层只负责与数据库之间的数据通信,而业务逻辑层由Service层提供服务;分离创建出一些公共类来为27 Web应用系统的通用开发架构研究与应用Service层提供服务,例如security相关类、utils工具类和constants静态变量类等;BaseAction抽象类为架构的业务逻辑层的基类,封装了通用的业务逻辑操作方法,而具体的业务Action只需要继承BaseAction即可调用通用的方法,针对于具体的业务逻辑再实现特有的方法与前台交互,通用架构后台程序的结构如图10所示。图10架构后台程序结构Fig.10Thestructureofbackgroundprogram5.2领域对象层的设计与实现在后台领域DomainObject层创建BaseEntity基础实体类作为领域对象层的基础数据模型,封装一些常用的、通用的基础属性,例如:创建时间、创建人、创建部门、修改部门、修改时间、修改人等等通用的属性用于存储常用的基础信息。创建描述实体字段信息的注解类FieldInfo类,为基础实体类的字段提供注解信息描述,使用@Retention(RetentionPolicy.RUNTIME)注解FieldInfo类,实体类中字段的注解会在.class字节码文件中存在,在运行时可以通过Java的反射机制获取到具体字段信息,使用Hibernate框架技术利用注解信息即可识别实体类以及相应的字段,再通用ORM28 山东农业大学硕士专业学位论文机制实现数据库表的创建。注解类的实现以及在基础实体类中的使用方式如图11所示。图11注解类的声明与使用Fig.11Thedeclarationanduseoftheannotation利用该架构开发应用系统时,创建具体的业务实现类时只需要继承基础实体类BaseEntity,即把通用的字段信息封装到具体业务实体中,再根据业务需求编写业务实体类中需要的属性字段,DomainObject层各个类关系图如图12所示。图12DomainObject层类关系Fig.12TheDomainObjectlayerclassrelations5.3数据访问对象层的设计与实现DAO层是DataAccessObject数据访问接口,此层由系列的DAO组件构成,这些DAO组件夹在业务逻辑与数据库资源中间声明接口,实现了对数据库的创建、查询、更新、删除(CRUD)等原子操作。本文中研发的系统架构中首先是对DAO层进行模块接口的声明,声明一些常用的、通用的接口方法来提供对数据库的操作,这些常用的通用方法包括:增删查改实体的原子操作、根据id查询当前实体、查询所有实体集合、根据HQL查询条件查询总记录、查询当前页信息、使用hql查询获取一条记录、sql语句hql语句的执行、根据hql分页查询、根据SQL查询实体列表、获取sessionfactory工厂类等通用方法。29 Web应用系统的通用开发架构研究与应用定义了接口方法后就要有具体的实现,创建编写对应的具体Impl实现类实现接口方法,运用Hibernate框架提供的方法实现对数据库的操作,其中包括:声明HibernateTemplate模板对象,利用HibernateTemplate模板对象调用Hibernate提供的方法实现对实体类对象的操作;声明SessionFactory对象,利用SessionFactory对象调用getCurrentSession()的方法获得Session对象,再调用createSQLQuery(sql)的方法运行具体sql语言来实现对数据库的操作。运用Hibernate框架技术实现DAO层接口提供的方法,完成DAO层的封装,具体的实现方法示例如图13所示。图13DAO层实现方法示例Fig.13TheDAOlayerimplementationexamples5.4业务逻辑层的设计与实现结构中业务逻辑层主要包括三个部分:Service层和服务工具类。5.4.1Service层Service层作为服务层专门用于为业务逻辑层提供服务API,Service层和DAO层一样也是首先定义了接口类,声明具体的接口方法提供服务,然后声明具体的Impl实现类来实现接口中的方法。Service层中包含了DAO层提供的所有接口方法,对象的具体实现类中直接调用DAO层提供的接口来完成实现,同时又提供了特有的为业务逻辑层服务的方法,例如:具体表格表单的更新方法、构建树形对象、树形查询集合的30 山东农业大学硕士专业学位论文封装方法等等。这里的Service层包含了DAO层所有的接口方法,但还是单独编写DAO层和Service层,是因为在架构中编写Service层,可以分离出DAO层与数据库的交互,使DAO层只负责与数据库之间的数据通信,而与业务逻辑层的交互由Service层提供服务。这样的做法符合架构设计的松耦合特点,保证了架构易于维护和扩展的特点,具体的实现类关系如图14所示。图14Service层类关系Fig.14TheServicelayerclassrelations5.4.2服务工具类后台创建一些工具类来为业务逻辑层提供服务,这些通用的工具类包括:日期工具类DateUtil、反射工具类EntityUtil、文件工具类FileUtil、Json数据工具类JsonBuilder、实体的工具类ModelUtil、配置文件工具类PropUtil和字符串工具类StringUtil。(1)日期工具类DateUtil:为系统中日期类型数据处理提供具体方法,例如:格式化日期类型、格式化日期时间、得到日期对象等日期处理方法。(2)反射工具类EntityUtil:为系统中反射机制处理提供具体方法,例如:根据实体名称获取Class对象、执行指定类的方法、执行属性的get、set方法等反射机制处理方法。(3)文件工具类FileUtil:为系统中文件及目录处理提供具体方法,例如:删除一个空目录、递归删除目录下的所有文件及子目录下所有文件、得到指定文件的文件对象,如果不存在则创建等文件及目录处理处理方法。(4)Json数据工具类JsonBuilder:为系统中JSON类型数据处理提供具体方法,例如:将一个数据实体解析成Json数据格式、将一个Json字符串封装为指定类型对31 Web应用系统的通用开发架构研究与应用象、为操作成功返回Json、格式化Json、构建对象json数据等JSON类型数据处理方法。(5)实体的工具类ModelUtil:为系统中实体类对象处理提供具体方法,例如:判断实体不为空、得到类的属性集合、从类中取得全部字段、得到树形字段的模版类等实体类对象处理方法。(6)配置文件工具类PropUtil:为系统中配置文件处理提供具体方法,例如:根据key获取配置的值等配置文件处理方法。(7)字符串工具类StringUtil:为系统中字符串类型数据处理提供具体方法,例如:判断字符串是否是整数、判断字符串不为空、判断字符串为空、将数组转成SQL认识的字符串等字符串处理方法。七个服务工具类的类图如图15所示。图15服务工具类图Fig.15Theservicetoolclassdiagram5.5控制层BaseAction抽象类作为通用开发架构中业务逻辑层最主要的部分,它封装了前后台通信的常用字段,便于进行信息传输,同时也封装了通用的业务逻辑操作方法,而根据系统开发的不同需求,针对于具体的业务Action只需要继承BaseAction抽象类即可调用通用的方法,省去了大量的代码编写,针对于具体的业务逻辑只需要再实现特有的方法与前台进行交互,模块化管理使整个体系便于维护,易于扩展。32 山东农业大学硕士专业学位论文如图16所示为BaseAction抽象类封装的通用字段和通用方法的类图。图16BaseAction类结构Fig.16TheclassstructureofBaseActionBaseAction以抽象类的方式继承了Struts2提供的ActionSupport基类,同时实现了ModelDriven、ServletResponseAware、ServletRequestAware和Serializable接口。利用ActionSupport提供的getModel方法可以便捷得到前后台传输的实体类对象,再根据实体类对象相应的属性值精确地进行前后台数据通信交互,同时前台传输到后台服务器的其他参数可以直接和BaseAction中声明的字段相对应,ServletResponseAware和ServletRequestAware传输机制可以直接使前后台对应参数相互赋值进行通信。另外BaseAction的主要任务就是处理业务逻辑,提供通用方法为前台服务,BaseAction中主要封装的通用方法包括:load()默认的读取方法,为前台数据的展示提供服务;doSave()默认的保存方法,用于保存前台录入或者更新的实体对象信息;doUpdate()默认的更新方法,用于处理前台更新实体对象的操作;doRemove()默认的删除方法,用于处理前台删除单个实体对象或者实体对象集合的操作;doUpdateList()默认的更新表格方法,用于处理前台表格列表中单条或者多条记录的更新操作;getTree默认的读取树形方法,该方法针对树形数据进行了封装,用于为前台树形数据的展示提供服务。SSH框架技术在后台充当控制层的部分,负责后台各部分之间的连接和控制,其中Struts2负责action的管理与控制,通过配置文件的具体信息配置管理架构中所有action与前台相应模块进行连接。Hibernate框架负责架构中数据持久化的操作管理,管理架构中对象关系映射,负责与数据库进行通信,负责相应表的自动创建功能管理。Spring框架以容器的形式统一管理控制Hibernate框架和Struts2框架相应的功能,管理架构中资源配置文件的相应信息配置。33 Web应用系统的通用开发架构研究与应用5.6本章小结本章内容介绍了基于JavaEE框架多层结构的后台体系结构详细设计与实现,包括DomainObject层、DAO层以及业务逻辑层的Service层、服务工具类和控制层BaseAction抽象类的详细设计与实现,搭建出架构后台的基础骨架,后台总体设计与实现的类图结构如图17所示。图17后台各层的关系类图Fig.17TheRelationshipbetweentheclassdiagram34 山东农业大学硕士专业学位论文6架构前台的详细设计与实现从ExtJS4版本开始,引入了前台标准化设计思想,从而使基于ExtJS框架技术开发的前端应用可以采用MVC的设计模式来实现前端体系结构,代码结构清晰且易于管理,保证了应用系统前端的通用性和易扩展性的特点。本文中研发的通用开发架构的前台体系结构的设计就是基于ExtJS框架技术研发的,利用前台的MVC标准化设计模式,采用模块化开发的形式进行前台设计与实现,设计实现前台程序入口、通用模型工厂类(Model)、通用表格表单(View)、通用事件(Controller)以及为前台各模块开发服务的util工具类。6.1前台体系结构利用研发的通用开发架构开发具体的应用系统,对于应用系统的访问就要有程序的入口,前台是整个应用系统的外观,通过前端程序入口才能对整个应用程序进行访问,所以程序入口的设计就极为重要,如图18所示为架构前端程序入口设计与前台体系结构示意图。BaseGridDesktop入口桌面化管理BasePanelBaseForm基础组件(V)继承Application模型工厂(M)业务组件入口BrowserStore事件控制(C)(ExtJS)扩展组件入口改造ExtJS组件自定义事件控制查询、扩展组件静态变量入口图18前台体系结构Fig.18Theprogramentranceandarchitecture如图18所示架构中前台程序入口的设计分为四个部分:Desktop桌面化入口、Application程序主入口、外部扩展组件入口和静态变量入口。(1)Desktop桌面化入口:本文的第三章内容已经指出了Desktop的资源加载,引入到架构前台的程序结构中,Desktop是基于ExtJS的一套桌面化管理组件架构,提供给用户可以桌面化管理系统的可视化界面操作,通过Desktop桌面化入口来展示系统的功能模块。35 Web应用系统的通用开发架构研究与应用(2)Application程序主入口:在架构前台程序结构中创建app.js作为主入口用于编写Application程序,它是整个架构前端应用程序加载的主入口,加载整个应用系统前台编写的所有模块,包括架构前台封装的基础视图组件(V)、模型工厂类的通用模块(M),并指定主控制器(C)处理前台事件和业务逻辑。(3)外部扩展组件入口:在架构前台程序结构中创建loader.js作为入口用于编写外部扩展组件,包括:tip提示组件的初始化,提示工具框的使用,加载指定目录的外部组件等。(4)静态变量入口:在架构前台工具类util文件夹中声明comm.js作为入口用于编写系统前台的静态变量,声明comm变量作为存放全局信息的一个变量,它的每个属性是以Map结构格式存储,以comm.add(“变量名”,“变量值”)的方式把系统前台常用的静态变量添加到comm中进行封装使用。本文中研发的通用开发架构采用了B/S网络结构的模式而设计,程序访问的主页是index.js,所以有了程序的入口,还需要把它们引入到index.jsp中加载。其通用架构前台程序结构如图19所示。图19架构前台程序结构Fig.19Thestructureoffrontdeskprogram36 山东农业大学硕士专业学位论文6.2模型工厂的设计与实现model和store是前端MVC设计中Model层的组成部分,model对应后台实体类的各种属性,store负责与后台数据进行通信交互,通用架构的前台设计使用模型工厂有极大的优势,因为当使用ExtJS的MVC设计模式的时候,每一个实体类对应的模块都需要定义相应的model,这就等同于把后台的字段复制过来又定义了一遍,这个工作量会很大而且容易出现不明显的错误,而使用模型工厂的方法就会省去这样的工作量,避免不必要的错误,大大提高了前台模块开发的效率。既然前台的model等同于把后台字段复制过来有定义一遍,那么model数据就可以从后台直接封装获取。利用后台JsonBuilder工具类构建出标准Json格式的类字段定义,构建ModelAction类与前台进行通信交互,模型工厂模块的具体实现类关系如图20所示。图20模型工厂的实现类图Fig.20Therealizationofthemodelfactoryclassdiagram(1)声明VO描述类来定义ExtJS模型字段[{name:"id",type:"string"}],用于封装前台需要的数据模板。(2)声明静态常量定义前台ExtJS模型数据的类型。(3)在JsonBuilder工具类声明实现getModelFileds()方法,构建出前台ExtJS模型所需要的fields字段类型数据。(4)定义ModelAction类来获取ExtJS需要的fields字段类型数据,与前台进行数据通信,为前台提供数据支持。后台通过以上步骤为前台的需求提供服务,后台提供了model的数据类型加载的服务,前台就要设计实现相应的模块功能来接受服务:37 Web应用系统的通用开发架构研究与应用(1)前台创建模型工厂类ModelFactory来接受后台的服务获得想要的数据,在ModelFactory模型工厂类中编写具体为前台提供服务的方法,实现与后台服务的连接,包括getModelByName()方法根据类名获取Model,getFields()方法获取字段类型,getModel()方法得到模型。(2)在具体的store中使用模型工厂方法设置相应的model,采用model:factory.ModelFactory.getModelByName("实体类路径","").modelName的方式获取相应的model,而不用再去编写创建相应的model。6.3展示层与通用事件的设计与实现前台采用ExtJS4引入的标准化MVC模式编写,上节内容已经详细研究了Model层的设计和实现,这节重点研究View层和Controller层的设计与实现。由于ExtJS是以组建的形式提供服务的,它的每一个功能都相当于一个组件,而用于View展示的通常用是Panel、Grid和From组件,具体功能模块基本都是利用这几个组件来创建页面布局的,这样就可以封装通用的View层组件作为父类,集体功能模块的开发界面只需要继承父类组件,再完成具体需求的界面要求即可。而对于不同的系统功能模块,每个模块也无非是对数据的增删查改这些基础的操作,这样就可以封装主控制器Controller来实现通用的系统功能,而不必在每一个模块的控制器中再把相应的功能实现一遍。前台通用展示层和控制层设计如图21所示。BaseGridButtonControllerViewBasePanelEventsBaseFormFormController事件控制GridController控制ControllerMainControllerPanelController图21前台通用M-V设计Fig.22ThedesignofthegeneralfrontdeskonM-VView层的封装:封装通用的BasePanel、BaseGrid和BaseForm,完成相应的基础属性和界面布局的设计,具体模块的设计继承Base组件再根据具体需要实现不同的模块样式。Controller层的封装:首先定义主控制器MainController,在主控制器中指定View层封装的Base组件,再按照功能分类分别实现具体的通用事件,最后把具体的事件实现引入到主控器中,当主控制器被加载的时候相应的事件处理功能就一同被加载到整38 山东农业大学硕士专业学位论文个程序中而使用。通用,的事件处理方法包括:通用表格添加进表单,通用表格添加事件,通用表格编辑事件,通用表格删除事件,通用表格保存事件,表单的保存,表格的双击事件和表格单击事件等等通用的事件处理方法。其中每一种对实体对象数据进行操作的事件都连接了后台服务器提供的一种服务,与后台服务器就像交互来完成对具体数据的处理。6.4前台工具类的设计与实现如上一节内容所述,Controller里封装的每一个处理数据的方法都对应了后台服务器提供的一个服务方法,而在两者之间作为前后台通信纽带的是AJAX技术,每一个服务请求都利用AJAX技术发送和获取,这样Controller层里就会多次编写AJAX请求。为了代码的简洁性和系统的易维护性,就可以创建一个工具类来专门封装AJAX请求的发送和返回数据的处理,这就是工具类的作用。本研究中研发的通用开发架构的前台封装了多种工具类,利用这些工具类可以为系统前台功能的开发提供便捷的服务,其中包括:SuppleUtil、FormUtil、SqlUtil和TreeUtil等工具类。工具类在前台架构中的作用类图如图22所示。图22前台工具类Fig.23TheThefrontdesktools(1)SuppleUtil工具类:封装了同步请求Ajax的方法ajax(),用于同步Ajax请求的发送,返回后台响应的数控提供给前台来做具体处理。(2)FormUtil工具类:用来提供处理form表单的一些通用方法,像设置表单的值setFormValue(),获取表单数据getFormValue等方法。(3)SqlUtil工具类:用于为前台sql语句的处理提供方法服务,有可执行sql字符串构建的方法getUpdateSql(),查询queryPanel的获取方法getQuerySql()等。39 Web应用系统的通用开发架构研究与应用(4)TreeUtil工具类:用于对前台树形结构数据处理提供方法服务,如递归获取节点信息用于前台展示和数据处理的方法eachChildNode()等。6.5前台扩展组件的设计与实现前面几节内容完成了通用架构前台的通用组件和事件的封装,以及一些常用的工具类的实现,有了这些通用的组件和事件作为基础,加上工具类为前台程序设计提供的便捷性,就可以在通用开发架构的前台设计实现一些通用的扩展组件。在通用架构中封装通用的树形查询组件,可以为树形数据的展示和操作提供便捷的服务支持。应用系统开发中经常会遇到对树形数据的处理操作,在通用开发架构中封装树形查询组件是十分必要的。前台树形查询组件关系类图如图23所示。图23树形查询组件关系类图Fig.23Therelationshipbetweentreequerycomponentclassdiagram树形查询组件以弹框的方式提供交互界面,具体设计实现过程有以下三和步骤:(1)首先要定义Ext的Window组件MtssWindow.js作为弹框的容器,对定义的Window组件进行封装,设置属性参数和界面布局。(2)定义Ext的树形展示面板treepanel组件TreeView.js,配置相应的参数,封装Ext自带的查询器,把TreeView加载到Window组件中作为面板用于树形数据的加载展示和操作界面。(3)编写QueryUtil工具类,实现selTreeWin()方法用于整个树形组件的弹出展示。(4)定义树形查询组件通用的控制器QureyController.js来封装实现树形查询组件中的事件处理,例如注册树形的选中事件,选中指定父节点和子节点;确定按钮和取消按钮事件,以及tree数据加载后的事件等。40 山东农业大学硕士专业学位论文在具体应用模块的Controller里,需要编写相应事件调用QueryUtil工具类中的selTreeWin()方法,配置相应的参数信息,来使用树形查询组件来展示和操作相应的树形数据,树形查询模块应用示例如图24所示。图24树形查询组件关系类图Fig.24Thetreequerycomponent6.6本章小结本章内容研究了基于ExtJS框架技术的前台体系结构的详细设计与实现,研究了ExtJS通用表格、表单(View)、通用事件(Control)和通用模型工厂类(Model)的设计与实现,以及一些工具类的设计实现。本章内容还研究了前台通用扩展组件设计与实现,从而完成架构前台基础骨架的搭建。41 Web应用系统的通用开发架构研究与应用7架构中通用应用模块的设计与实现本文的四五六章内容已经把整个通用开发架构的基础骨架搭建起来,已经可以作为开发架构来开发具体的应用系统。但考虑到通用开发架构的完整性和便捷性的要求,在现有的架构骨架中再封装一些通用的应用模块,有利于该架构的功能完善,为程序开发人员提供更加便捷的功能支持。7.1菜单管理模块的设计与实现通用开发架构前台采用了Ext的Desktop桌面化形式对应用系统进行可视化的管理,应用系统的每一个功能模块就相当于桌面化管理的一个应用程序,所以在桌面化管理中需要设计实现通用的菜单管理模块,以便来对整个应用系统的不同功能模块进行统一地管理。菜单管理的主要功能是负责管理应用系统中所有应用模块的加载控制,编写好的应用系统功能模块可以通过菜单管理快捷添加到整个系统中,同时菜单管理也可以修改和删除应用系统中的功能模块信息。菜单管理模块作为应用系统的必要组成部分,对整个系统的功能模块进行统一地管理,菜单管理模块的详细设计类图如图25所示。图25菜单管理模块Fig.25Themenumanagementmodule实现过程有以下四个步骤:(1)创建后台菜单管理的实体类Menu,封装实体类相应的属性,如:icon描述系统模块的图标;menuName描述菜单名称等字段信息,来对前台管理数据格式进行规范化。42 山东农业大学硕士专业学位论文(2)创建后台菜单管理MenuAction,继承基础BaseAction并且针对前台菜单管理的树形数据重写doSave()方法,实现具体模块的菜单数据的保存和更新操作,为前台相应事件的实现提供服务。(3)编写前台页面布局包括MainLayout菜单管理模块的主面板,以及相应的MenuTree和MenuForm用于前台菜单模块地展示;编写菜单模块的MenuStore用于获取后台数据加载到前台展示。(4)编写菜单管理模块的控制器MenuController实现菜单模块中的事件功能,包括:菜单中树形数据节点的点击事件,应用模块的增删事件,应用模块信息的保存事件等。菜单管理模块效果展示如图26所示。图26菜单管理模块Fig.26Themenumanagementmodule7.2角色权限管理模块的设计与实现所谓的RBAC就是基于角色的访问控制(Role-BasedAccessControl),其中把角色和权限相关联,给系统用户赋予相应的角色而授予相应的权限。在本文中的开发架构上封装的RBAC模块是以部门、人员、角色和权限四个部分组成的,其中部门和人员是一对多的关系,一个人员属于一个部门,一个部门有多个人员;人员和角色是多对多的关系,一个人员可以有多个角色,一个角色可以有多个人员;角色和权限是多对多的关系,一个角色可以有多个权限,一个权限可以赋给多个角色;而部门与部门直接是自关联的。43 Web应用系统的通用开发架构研究与应用RBAC管理模块的后台关系类图如图27所示。图27RBAC模块类图Fig.27ThemoduleclassdiagramofRBACRBAC权限管理模块的详细设计与实现为以下五个步骤:(1)后台模块相应的实体类及其关系的创建:创建部门、人员、角色和权限的实体类,封装相应的基础实体属性,如名称和编码等等,同时建立类之间的对应关系,利用Hibernate注解的方式配置类之间一对多和多对多的对应关系。(2)利用Hibernate框架技术创建数据库中相应的表:利用Hibernate注解的方式配置了实体类的注解信息,在Spring的配置文件beans.xml中配置管理Hibernate相应的配置信息,程序运行时,系统会利用Hibernate框架技术在数据库中自动创建相关表信息。(3)创建相关类对应的Action:后台创建了相关的实体类,就需要创建对应的Action来为前台提供服务,分别创建编写部门、人员、角色和权限的Action,根据前台需要的信息和时间功能编写相应Action中具体的方法实现。(4)前台布局:有了服务器后台服务的支持,接下来就需要前台功能模块的设计和实现,编写相应模块的布局,包括:部门人员的管理模块和角色权限的管理模块,来实现系统中部门人员的添加、修改和删除的操作,以及为相应的角色授予对应的系统管理权限。(5)编写Controller:有了前台模块界面后就要实现相应的事件,编写对应模块的Controller来逐一实现相应事件处理的功能。44 山东农业大学硕士专业学位论文部门人员管理模块的效果展示如图28所示。图28部门人员管理模块Fig.28Thedepartmentpersonnelmanagementmodule角色权限管理模块的效果展示如图29所示。图29角色权限管理模块Fig.29Theroleauthorizationmanagementmodule45 Web应用系统的通用开发架构研究与应用7.3安全登录模块的设计与实现SpringSecurity是一种为应用系统提供安全保护的框架技术,它基于Spring框架技术并且充分利用了其依赖注入(Ioc)和面向切面编程的技术。SpringSecurity可以为系统架构提供全面性的安全解决方案,它主要应用在系统访问时为Web的请求提供身份认证以及授予权限的操作。架构子系统安全登录模块的设计与实现如图30所示,分为以下四个步骤。编写登录页面配置security编写后台支持配置web.xml图30安全登录模块Fig.30Thesecureloginmodule(1)创建登录页面:系统架构的访问首页是index.jsp,为系统架构添加安全登录模块就要在index.jsp之前设置登录页面login.jsp,实现login.jsp中相关的页面代码编写,登录验证时调用SpringSecurity提供的验证接口。(2)配置security:本研究的第三章内容中的资源配置章节配置了beans-security文件,在该文件中指定登录页面login.jsp,配置相关的参数,包括认证提供者securityManager类,url拦截器ResourceInvocation,登录验证处理类index.action。(3)编写后台支持:编写实现认证管理类securityManager,编写实现url拦截器类ResourceInvocation,编写登录验证后的处理类index.action为前台验证跳转提供服务,如图31所示为后台各部分类图。图31安全登录模块类图Fig.31Thesecureloginmoduleclassdiagram(4)配置web.xml:在web.xml文件中配置security相关的信息,注册security监听器的使用等。46 山东农业大学硕士专业学位论文7.4数据字典管理模块的设计与实现每个应用系统的开发都会有相应的数据字典,为了对应用系统中的数据字典进行有效地管理,本节内容主要介绍了架构中系统数据字典管理模块的设计与实现,模块设计完成后又在字典管理模块中封装了农业领域常用的数据字典,以便使该开发架构能更好地应用于农业领域。架构中系统数据字典管理模块的设计与实现主要分为以下三个步骤:(1)后台实体类的实现:编写架构数据字典管理模块相关的实体类,包括字典项类和字典值类,配置其一对多的关系,一个字典项可以对应多个字典值。(2)相关Action的实现:编写实现实体类相对应的DDAction和DDItemAction,实现根据字典项查询字典值数据的方法等为前台提供服务。(3)前台模块实现:编写实现前台模块,包括展示层主子关联及整个布局的实现,配置相关功能信息;编写数据集获取后台数据,以及编写对象的Controller实现控制层事件功能。数据字典管理模块类关系的详细设计如图32所示。图32数据字典管理模块关系类图Fig.32Thedatadictionarymanagementmoduleclassdiagram数据字典管理模块作为架构中的通用模块为具体应用系统提供便捷的字典管理,考虑到为了使该通用架构能更好地为农业领域Web应用系统的开发提供服务,在该架47 Web应用系统的通用开发架构研究与应用构中封装一些农业领域常用的数据字典,以便为程序员开发农业领域Web应用系统时提供便捷的数据支持。系统字典管理模块及农业相关数据封装展示如图33所示。图33数据字典管理模块效果图Fig.33Thedatadictionarymanagementmodulerendering48 山东农业大学硕士专业学位论文7.5本章小结本章内容在通用架构骨架的基础骨架设计实现后,又在架构中封装了通用的子系统模块,研究了整个集成架构中的通用应用模块的设计与实现,其中包括:通用角色权限(RBAC)管理的设计与实现;基于SpringSecurity框架通用安全登录模块的设计与实现;应用系统通用数据字典模块的设计与实现,以及农业领域常用数据字典的封装,完成了整个通用开发架构的搭建,架构展示如图34所示。图34通用开发架构Fig.34Thegeneraldevelopmentarchitecture49 Web应用系统的通用开发架构研究与应用8应用示例系统《羊场管理系统》本文内容的前面章节详细介绍了整个通用开发架构的设计与实现,本章内容主要介绍应用系统的示例,由于利用该通用架构开发的应用系统都是采用模块化的结构对整个系统进行管理,每个模块的开发流程基本相同,所以本章内容详细介绍应用系统的一个具体模块的开发流程作为演示,来介绍本文中研发的通用开发架构是如何被有效地利用。8.1应用示例系统模块开发流程《羊场管理系统》是利用本研究中研发的架构作为平台而开发的Web应用系统,下面以示例系统中的羊只信息管理模块为例,具体介绍利用该架构开发功能模块的流程如图35所示,主要分为以下七个步骤。配置Struts导入开发架构创建实体类创建Action文件添加菜单及授权编写前台模块创建数据库表图35模块开发流程Fig.35Themoduledevelopmentprocess(1)导入开发架构:导入本文研发的通用开发架构作为应用项目骨架,按照具体业务需求开发应用模块。(2)创建实体类:创建羊只信息实体类,继承BaseEntity基础实体类,封装羊只信息的基本属性以及Hibernate识别的注解信息,具体实现如图36所示。图36羊只信息实体类的实现Fig.36Therealizationofthesheepinformationentityclass50 山东农业大学硕士专业学位论文(3)创建Action:创建实体类对应的具体业务Action类继承BaseAction抽象类并重新getModel()方法;在业务Action中创建实体类对象,作为返回参数添加到getModel()方法中;配置Spring识别的注解信息指定Action交给Struts管理,具体实现如图37所示。图37羊只信息管理ActionFig.37TheActionofsheepinformationmanagement(3)配置Struts文件:在Struts文件夹中创建对应模块的xml文件。配置相关信息,指定Action交给Struts2框架管理,具体实现如图38所示。图38配置Struts2文件Fig.38ConfigureStruts2file(4)建表:在bean.xml配置文件中添加实体类路径信息,利用Hibernate框架连接数据库创建相关表结构,系统启动时会自动创建生成新添加的表。(5)编写前台模块:以文件夹分类的方式创建前台模块,每个模块相当于一个文件夹,在文件夹内建立模块结构,包括View、Store和Controller;View层编写模块界面,Store层编写与后台数据通信链接,Controller层编写模块相应功能事件,具体实现如图39所示。51 Web应用系统的通用开发架构研究与应用图39羊只信息管理前台Fig.39Thesheepinformationmanagementatthefrontdesk(6)添加菜单及授权:在架构的通用模块菜单管理模块中添加具体业务模块内容,指定相关配置信息,再通过角色权限管理模块指定角色对该模块的操作权限,即完成一个模块的实现,具体实现如图40所示。图40羊只信息管理模块菜单Fig.40Thesheepinformationmanagementmodulemenu52 山东农业大学硕士专业学位论文添加羊只信息模块后再给具体角色授予操作权限,如图41所示。图41授权Fig.41Authorization8.2应用示例系统效果展示《羊场管理系统》是利用该通用架构作为平台开发的应用系统,该系统划分为五个总功能模块,包括系统基本信息管理、羊群信息管理、繁殖管理、兽医保健和智能预警,每个总模块中又包含了若干个子模块,系统主界面如图42所示。图42系统展示Fig.42Thesystemshows53 Web应用系统的通用开发架构研究与应用《羊场管理系统》中所有模块展示如图43所示。图43系统所有模块展示Fig.43Theallmoduledisplaysystem8.3架构优越性通过应用示例系统的开发流程和效果展示,可以清楚的体现出使用本文研发的通用发开架构来开发具体应用系统的优越性,主要有以下几点:(1)规范性:利用该架构开发具体应用系统时,可以规范系统开发的技术和流程,使得系统易于维护,便于管理。(2)提高效率:利用该架构开发具体应用系统时,利用架构中提高的前后台接口,可以有效地对应用系统进行扩展,而且不用再繁琐的基础方法的实现上浪费时间,架构中封装好的通用应用模块,可以有效地对应用系统进行管理,省去了相应模块的开发时间,较大程度缩短开发时间,提高系统开发的效率。(3)可视化效果:使用该架构开发的应用系统采用模块化桌面式管理,不仅界面优美,模块化管理的方式还提供便捷的可视化操作,使用起来更是简单方便。54 山东农业大学硕士专业学位论文8.4本章小结本章内容详细介绍了如何利用研发的通用开发架构作为开发平台,按照具体项目的需求分析,在通用架构的基础上设计和实现具体的应用系统。通过示例系统的研发,真正体现出快速开发的理念,明确具体应用的开发过程和方法,充分展示基础开发架构具有较好的扩展性和通用性的特点。55 Web应用系统的通用开发架构研究与应用9总结与展望9.1总结本文详细描述了研发Web通用开发架构的整个过程,先是对目前国内外较为流行的框架技术进行了研究,研究其工作机制及架构特点,从而选取了Struts2、Spring、Hibernate框架技术和ExtJS框架技术作为基础来构建通用开发架构。研究了构建通用Web开发架构的设计原则和模式,以及如AOP、IoC、拦截器、过滤器和监听器等架构构建相关的技术。通过以上研究作为基础,按照软件设计模式的思想理论和原理,利用架构构建相关的技术,对选取的前后台框架技术进行集成,研发Web通用开发架构。在研发过程中,首先以JavaEE多层结构为体系,利用MVC的软件设计模式进行了通用架构的整体体系结构的设计,设计了架构多层结构中每层的组成部分,以及各层之间数据通信的过程。在整体体系结构设计的基础上,按照前后台划分又进行设计实现了后台领域对象层、DAO层、业务逻辑层和控制层中的具体类及相互间的关系;设计实现了前台程序入口以及MVC模式的前台基础组件骨架,从而构建出整个Web通用开发架构的基础骨架。进而在基础骨架上又设计实现了架构中通用模块的设计,包括菜单管理模块、角色权限管理模块、安全登录和数据字典管理模块,使架构功能更加丰富和完整。利用研发出的通用架构进行具体应用系统《羊场管理系统》的开发,以应用系统中一个具体业务模块的开发流程为示例,详细介绍了利用研发的架构开发应用系统的详细过程,真正体现出研究成果是如何被有效地利用。9.2展望研发的通用开发架构为农业领域服务的针对性相对较弱,在今后的时间里,会为架构封装更多为农业领域服务的模块,以及封装农业领域更多的数据支持,使该研发架构能为农业领域Web应用系统的开发提供更好的服务,从而能为农业信息化出一份力。56 山东农业大学硕士专业学位论文参考文献蔡世友,程强,郭朝编著.EasyJWeb实用开发指南,2015.曾亮,齐欢,王小平,等.基于JavaEE核心模式的组合Web框架研究[J].华中科技大学学报(自然科学版),2007,35(6):43-46.陈雪娟.基于MVC模式的SSH开发技术[J].电脑学习,2011(2):137-139.窦东阳,赵英凯.利用MyEclipse简化基于Hibernate的数据库访问[J].计算机工程与设计,2007.28(4):773-778.韩国敬.SSH2与ExtJS架构结合的应用研究[D].辽宁科技大学,2013韩义波,宋莉,宋俊杰.AJAX技术结合XML或JSON的使用比较[J].电脑知识与技术,2011,5(1):101-103.韩义亭,张成宇.SSH架构及其在Web开发中的应用[J].网络安全技术与用,2007.10:72-74.郝玉龙,迟健男编著.轻松掌握Struts2[M].北京:清华大学出版社,北京交通大学出版社,2010.7.计文柯著.Spring技i内幕:深入解析Spring架构与设计原理[M].北京:机械工业出版社.2011.12贾蓓,镇明敏,杜磊编著.JavaWeb整合开发实战:基于Struts2+Hibernate+Spring[M].北京:清华大学出版社.2013.7.蒋丛萃.JavaWeb程序运用中泛型DAO的作用[J].软件,2012,33(5):91-92.鞠凤娟,吴志峰.EXT技术在WEB界面设计与实现中的应用研究[J].计算机与现代化,2012,3(11):102-105.李成严,冯慧灵.基于开源技术的Web应用架构研究[J].计算机技术与展,2011,19(8):27-30.李刚编著.轻量级JavaEE企业应用实战[M]:第四版.北京:电子工业出版社,2014,10.李刚.Struts2权威指南———基于WebWork核心的MVC开发[M].北京:电子工业出版社,2008.李天鸣,何月顺.基于ExtJS技术与SSH框架的权限管理研究[J].计算机应用与软件.2011林帅,林雄.Java泛型研究[J].电脑开发与应用,2012,25(3):63-65.刘萍.基于简单工厂模式的三层架构系统设计及应用[J].中国科技信息,2013(14):107-107.秦育华.面向对象的数据模型设计方法的研究与实现[J].电脑编程技巧与维护,2010(20):6-7.饶浩.MVC模式下的Web系统快速开发框架设计[J].微处理机.2015邵雄凯,杨京涛.基于Struts+Spring+Hibernat的集成框架研究[J].软件导刊,2007,(12):25-28.苏晓波WEB.快速开发框架的设计与实现[D].华中科技大学,200957 Web应用系统的通用开发架构研究与应用孙卫琴编著.JAVA开发专家--精通Hibernate:Java对象持久化技术详解[M]:第二版.北京:电子工业出版社.2010.2田娟,徐钊.基于J2EE的MVC设计模式的分析与思考[J].计算机与现代化,2010(10):54-58.王盈盈.基于Ext+SSH框架的通讯基站智能抄表系统的设计与实现[D].天津大学,2012.卫军,夏慧军,孟腊春编著.ExtJSWeb应用程序开发指南[M]:第二版.北京:机械工业出版社,2011.7.夏龄.Spring中Bean工厂模式的改进[J].计算机应用与软件,2012(11):044.徐晓斌著.Maven实战[M].北京:机械工业出版社.2010.11.薛召.快速WEB开发的整合框架的设计与实现[D].北京:北京邮电大学,2012.余腊生,任炬.基于SSH三层架构的OJ系统研究与设计[J].电脑知识术,2008.3(8):1698-1670.袁华强,王亚强,朱君.利用JavaEE轻量级框架构建Web应用研究[J].计算机工程与设计,2013,28(1):22-25.张杰,石春玲,周立军.采用Ajax框架ExtJS整合StrutsWeb应用.计算机应用.2011Apostolis,DismasReinald.Appfuse[M].DICPress.2012.9.CraigWalls编著;耿渊,张卫滨译.Spring实战[M]:第二版.北京:人民邮电出版社.2013.5Keith,M.Schincariol著;巢文涵译.ProJPA2中文版:精通Java持久化API[M],北京:清华大学出版社.2011.10.MacCaw,A著.李晶,张散集译.基于MVC的JavaScriptWeb富应用开发[M].北京:电子工业出版社.2012.5.Mak,G.Long,J.Rubio,D.著;陈宗恒,兆军,蒋亮译.Spring攻略.北京:人民邮电出版社.2012.3.AbbasAbdoli-Sejzi,BaharuddinAris,MaizahHuraAhmadetal..TheRelationshipbetweenWeb2.0TechnologiesandStudentsAchievementinVirtualUniversity[J].InternationalEducationStudies,2015,8(13).CallArchitecture.ServicesComputing,2006..IEEEInternationalConferenceonSept.2010:261–264.ChristianBauer,GavinKing.HibernateinAetion.Alneriea[M〕:ManningpublicationsCo,2014.CraigWalls.SpringinAction[M].ManningPublications,2011.06DevelopingandValidatingTrustMeasuresfore-CommerceInformationSystemsResearchVol.13,No.3,September2012357DonaldBrown,ChadMiehaelDavis,SeottStanliek.StrutsZinAetion[M].Alneriea:ManningPublieationsCo,2010.PatrickLightbody,JasonCarreira.WebworkinAction[M].DreamtechPress,201558 山东农业大学硕士专业学位论文rymarkiewicz,A,Sakowicz,B.EasilyExtendibleFrameworkForComputationalPurposesBasedOnJavaserverFaces[C],MixedDesignofIntegratedCircuitsandSystem,2013.MIXDES2013.ProceedingsoftheInternationalConferenceWingLam,Shankararaman,V.Anenterpriseintegrationmethodology.ITProfessional[J].Volume6,Issue2,March-April2014:40–48.Wojciechowski,J.Sakowicz,B.;Dura,K.Napieralski,A.MVCmodel,strutsframeworkandfileuploadissuesinwebapplicationsbasedonJ2EEplatform.TelecommunicationsandComputerScience[J],Feb.2014:342-34559 Web应用系统的通用开发架构研究与应用致谢本文得以完成,首先要感谢敬爱的张继军导师的细心指导,张老师开阔的视野,为我提供了极大的发挥空间,在这段时间里让我明白了做任何事情要严谨细致、一丝不苟,以十分认真的态度做好每一个细节,张老师宽厚待人的学者风范更是值得我去学习。感谢张老师在生活中、学习上给予我的教导和无私的帮助。感谢母校为我提供了良好的学习环境和实验平台,正是依靠母校的各方面资源,我才能够更好地投入研究,完成论文。在本文即将完成之际,我衷心得感谢在此过程中帮助过我的每个人,在这里请接受我最诚挚的谢意!通过这次研究生论文的撰写,我不仅把研究生所学过的知识得到了巩固,而且还学到了很多新的专业知识和技术。不论是技术上还是为人处事上,我都得都得到了一个新的提升,衷心感谢所有在我成长的道路上给予我关怀和帮助的友人。60

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭