【VC++开源代码栏目提醒】:网学会员,鉴于大家对VC++开源代码十分关注,论文会员在此为大家搜集整理了“基于J2EE的栏目编排系统 - 硕士论文”一文,供大家参考学习!
华中科技大学 硕士学位
论文基于J2EE的栏目编排系统 级别:硕士 专业:
计算机技术 指导教师:卢炎生 20061031 华中科技大学硕士学位
论文 摘 要 采用J2EE多层构架开发企业应用程序是目前的一个主流方向,其优势主要是为搭建具有可伸缩性、灵活性、易维护性的业务系统提供了良好的机制。
栏目编排管理系统正是基于这一平台的Struts+Spring主流构架开发出来的,该系统划分为对应的三层结构:表示层、业务逻辑层和数据持久层。
表示层采用Struts框架,该框架是目前开源社区中应用最为广泛的一个框架,它是MVC模式的一个具体实现,通过它可有效的分离数据和业务逻辑,提高系统各层间的松藕性。
逻辑层采用Spring框架,该框架是一种菜单点选式框架,有分层的体系结构,其各个模块相对独立。
开发人员可根据需要选择其中的某些模块。
该框架有效的组织了系统中的中间层对象,消除了对象问创建与使用紧密耦合的问题,提高了模块的可重用性,而且其中JDBCTemplate等辅助类的使用能很大程度上提高开发效率。
数据持久层方面并没有采用目前流行Hibernate,iBATIS等O/R Mapping框架,而是采用JDBC。
该系统主要包括权限管理、资产管理和栏目编排管理等功能,其中权限管理子模块包含操作员管理和密码变更功能,用于保证系统安全性;资产管理子模块实现了资产的添加、删除、修改、
查询等操作,并且设定资产的一些特殊信息;栏目资产编排管理是本系统的核心,它分为站点管理、栏目管理、栏目资产管理,栏目资产发布管理4个部分。
本文通过栏目资产管理中添加资产功能的实现,展示了Struts+Spring在开发和维护中的高效便捷之处,从而探索出一条基于此架构开发企业级应用系统的一般模式。
关键词:栏目编排管理,模型.视图层啦制层,三层结构, 反转控制,注入依赖 华中科技大学硕士学位
论文 Abstract Develop enterprise applications using J2EE multi-tier architecture is amainstreamdirecfion。
Its advantage is to be built with seaiability,flexible,easy to maintain theoperational systems provide a good mechanism. Column layout management system is based on the platform Struts+SpringmainstreaIn of the development framework.The system is dividcd into a three-tiersU’ucture:the corresponding said layer and the business logic tierdam persist胁ce layer.Said layer using Struts framewo咄which is currentlytbe mostwidespread application of a l℃vcllue framework of the community,It is a concreterealization ofthe MVC model,through which effective separat-ion ofdata and businesslogic.Lotus layers ofloose sexual improve thesystem.Logic layer using Spring翻mewo比which is a menu clicked fTanle,ahierarchicai structure.its relative independence of each module.nle develop er tailchoose some modules.The framework ofan effective organization inthe middle layer objects in the system,eliminating the creation and use ofobjects closelycoupled.increase the reusability ofmodules.JDBC templatebut which could significantly increase the use of other types of ancillary developmentefficiency.Data Persistence does not use a currently popularHibernate.iBATIS such as Object Relational Mapping fTanlework,instead ofusing JDBC. The system includes power management,asset management and columnslayout and other functions.Privilege Management Module which includes manag ementand operator password change function,to guarantee the security of the system;assetmanagement sub-module ofthe asSetS add,delete,revise,search operationand the creation of special assets;colunms asset-managementis the coreof the system,which is divided into station management,columns management,assetmanagement columns columns and asset management issuedfour parts.8y adding eohmms asset nlaBagement function ofthe realizationofassets,Struts+Spring demonstrated in the development and maintenance 华中科技大学硕士学位
论文of effective Convenient,Based on this fiamework in order to explore how to developenterprise-level applications in the normal mode.KeyWord:Column layout management,MVC,The three-tier咖|ctIl聆,IOC,DI lIl 独创性声明 本人声明所呈交的学位
论文是我个人在导师指导下进行的研究工作及取得的研究成果。
尽我所知,除文中已经标”YJ=Jl用的内容外,本
论文不包含任何其他个人或集体已经发表或撰写过的研究成果。
对本文的研究做出贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律结果由本人承担。
学位
论文作者签名:参/铲凹 日期;≯卯,年ff月‖日’ 学位
论文版权使用授权书 本学位
论文作者完全了解学校有关保留、使用学位
论文的规定,即:学校有权保留并向国家有关部门或机构送交
论文的复印件和电子版,允许
论文被查阅和借阅。
本人授权华中科技大学可以将本学位
论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位
论文。
保密口,在 年解密后适用本授权书。
本
论文属于 不保密&乙 (请在以上方框内打“√”) 学位
论文作者签名::玢习 Eta〕:扣f if-ff月/白 华中科技大学硕士学位
论文 1绪论1.1课题来源、目的及意义 目前各类网站多如牛毛,部分网站因各种原因仍然采用原始的全手工操作方法,不利于资源信息的管理,而且随着信息量的增大,维护也越来越困难.比如新闻的编辑,审核,上线(上传到网上),下线(从网上删除该新闻),这是一系列繁琐复杂的工作。
这不仅占用了人们大量的时间和精力,而且效率低下,容易出错,对于那些旧资料的维护也是一个问题。
部分网站也有一些相关的管理软件,这类软件大多采用两层处理结构.这在早期获得了成功了,满足了当时的需求,然而随着业务系统复杂程度的提高和用户数目的增多,不足之处也逐渐暴露出来。
两层结构的系统耦合度高,可重用的可能性比较低,使得应用系统的改变,比如业务变动,数据库机构的变动,都会影响到程序的逻辑处理和页面处理部分。
而且最近这两年网络中心元素比较多,比如博客,ipw等等,早期的系统针对性比较强,扩展性不够强。
为此开发了本套栏目编排管理系统,这也是本文讨论的基于J2EE多层构架的栏目编排管理的来源。
此套系统目前虽然不太完善,但相比以前的系统具有几个优势: 1)简化了
系统的维护工作量。
因为基本B/S结构,当系统升级时,客户端不需做什么更新操作,可直接通过浏览器访问【11. 2)提高了系统的可扩展性。
因为设计时已经考虑了以后资产类型的扩展性,对资产部分的数据表采用了基表和子表的设计。
而且采用MVC三层模式的开发结构,使得代码结构清晰,各层之间相互独立,互不依赖【2】,改变某一部分一般不会影响其他部分。
比如需要支持手机只需要添加表示页面,不需要改变业务逻辑。
这样提高了代码的可重用性,实现了模块间的松耦性【3l。
3)数据持久层多采用标准特性,以便更改后台数据库。
而且因为三层结构的独立性,即使有某些地方使用了数据库的特性,修改也比较简单。
华中科技大学硕士学位
论文 新系统将是一个基于J2EE多层结构的企业应用程序,可运行于公司局域网或互联网中.本系统开发工具为Eclipsel41,客户端采用的是浏览器,简化了客户端的维护和安装,应用服务器采用tomcat,后台数据库采用oracle9i。
当然可根据实际情况更改应用服务器和后台数据库。
1.2国内外研究情况 目前企业级web应用开发领域存在两大阵营,基于windows平台的.NET体系结构和基于多平台的J2EE体系结构。
J2EE是使用Java技术开发企业级应用的一种事实上的工业标准,它是Java技术不断适应和促进企业级应用过程中的产物。
J2EE的目的是为了克服传统Client/Server模式的弊病,迎合Browser/Server架构的潮流,为应用Java技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署嘲。
J2EE是一个标准,而不是一个现成的产品。
各个平台开发商按照J2EE规范分别开发了不同的J2EE应用服务器,J2EE应用服务器是J2EE企业级应用的部署平台。
由于它们都遵循了J2EE规范,因此,使用J2EE技术开发的企业级应用可以部署在各种J2EE应用服务器 匕。
1.3 J2EE多层框架简介 目前应用J2EE技术构建信息系统的需求越来越复杂,开发周期越来越紧迫,同时对系统的稳定性、扩展性和可维护性要求也越来越耐酊。
那么如何满足客户对系统要求,加快我们的开发昵?信息系统需要一个持久化的存储设备(如:数据库)中存放和取回信息数据。
当存储设备改变时,我们如何使系统支持这个改变,而不用重写我们的
程序代码呢【刀?已有的代码能不能在新的系统上重用呢?类似
问题,给我们系统设计带来很大的挑战。
2 华中科技大学硕士学位
论文 一个有效的解决方法是把信息业务信息按照应用功能模块拆分开:业务逻辑与数据库服务器分开,用户界面与业务逻辑分开。
彼此相对独立,任一方任何改变都不会影响对方。
这就是我们经常提到的三层概念:表示层(Presentation)、业务逻辑层(Business Logic)、数据存储层(Data)〔sl。
表示层负责界面展示,目前主流开源框架是struts,webwork〔91。
业务逻辑层负责实现业务逻辑,目前主流开源框架是Sprmg。
数据存储层负责业务逻辑层中所有数据的持久化存储,目前主流开源框架是Hibernate,Ibafis〔101。
业务逻辑层在三层模型中具有很好的伸缩性,实际开发中可根据系统容量、分布、部署等等情况再一步把业务逻辑层细分,从而产生了多层。
这就是所谓n层体系结构【111。
1.4
论文组织结构
论文共分为四章,具体内容如下; 第1章绪论 本章描述了栏目编排
管理系统的意义和国内外研究情况,并对J2EE多层构架进行了简单描述。
第2章J2EE基本架构 本章较为详细的介绍了Struts和s砸ng的一些相关技术。
第3章栏目编排管理系统的实现技术 本章根据栏目编排管理系统的需求分析,设计出了数据库表结构及实体模型图,并进行了概要设计和用例图设计。
另外,还给出了系统核心业务的流程图及结合S(ruts,Spring进行开发的一般模式。
第4章结束语 本章对
论文进行了简单总结。
3 华中科技大学硕士学位
论文 2 J2EE基本架构2.1 J2EE表示层框架Struts StI-uts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的,其最初萌芽于Craig McClanahan的构思。
现在,Struts是Apache软件基金会旗下Jakarta项目组的一部分,其官方网站是http://jakarta.apache.org/su’uts。
由于Siruts能充分满足应用开发的需求,简单易用,是目前
开源代码中最大的一个社区。
Struts把Servlet、JSP,自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现
全套MVC模式112〕,极大的节省了时间,所以说Struts是一个非常不错的应用框架.2.1.1 MVC模式 MVC是一种目前广泛流行的
软件设计模式,早在70年代,mM就推出了被命名为Sanfronscisico的项目计划,其实就是MVC设计模式的研究.近来,随着J2EE的成熟,它正在成为在J2EE平台上推荐的一种设计模型,也是广大Java开发者非常感兴趣的设计模型。
随着网络应用的快速增加,MVC模式对于web应用的开发无疑是一种非常先进的设计思想,无论你选择哪种语言,无论应用多复杂,它都能为你理解分析应用模型时提供最基本的分析方法,为你构造产品提供清晰的设计框架,为你的软件工程提供规范的依据。
2.1.1.1 MVC的
设计思想 MVC(MOdel-View-Controller),即把一个应用的输入、处理,输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层1131。
视图Ⅳiew)代表用户交互界面,对于wcb应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。
随着应用的复杂性和规模性,界面的处理 4 华中科技大学硕士学位
论文也变得具有挑战性【14】。
一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。
业务流程的处理交予模型(Model)处理。
比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。
模型(Model):就是业务流程,状态的处理以及业务规则的制定。
业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。
业务模型的设计可以说是MvC最主要的核心l阍.目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。
它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。
对一个开发者来说,就可以专注于业务模型的设计。
MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。
抽象与具体不能隔得太远,也不能太近。
MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性.我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。
这点对编程的开发人员非常重要. 业务模型还有一个很重要的模型那就是数据模型。
数据模型主要指实体对象的数据保存(持久化)。
比如将一张订单保存到数据库,从数据库获取订单。
我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中. 控锖lJ(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。
划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。
控制层并不做任何的数据处理。
例如,用户点击一个连接,控制层接受请求后。
并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户“6】。
因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
5 华中科技大学硕士学位
论文2.1.1.2 MVC与传统模式的区别 大部分用过程语言开发出来的web应用,初始的开发模板就是混合层的数据编程。
例如,直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性。
产品设计弹性力度很小,很难满足用户的变化性需求。
MVC要求对应用分层,虽然要花费额外的工作,但产品结构清晰,产品应用通过模型可以得到更好体现【17】。
与传统模式相比,MVC有如下几个优点,首先是它有多个视图对应一个模型的能力。
在目前用户需求的快速变化下,可能有多种方式访问应用的要求。
例如,订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都是一样,也就是说订单的处理是一致的.按MVC设计模式,一个订单模型以及多个视图即可解决问题。
这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。
其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。
再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。
一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。
控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。
最后,它还有利于软件工程化管理。
由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。
但是,MVC也存在一些不足,它的设计实现并不十分容易。
MVC只是一种基本的设计思想,还需要详细的设计规划,对开发人员的要求比较高;模型和视图的严格分离使得错误容易被发现,但也增加了调试的难度;另外,层次增加意味着代码文件增多,对于文件的管理需要费点心思【堋。
2.1.2 Struts中的MVC模式 Struts是基于Model 2之上的,而Model 2是经典的MVC(模型一视图一控制器)模型的Web应用变体,这个改变主要是由于
网络应用的特性一HTTP协议的无 6 华中科技大学硕士学位
论文状态性引起的。
Model 2的目的和MVC一样,也是利用控制器来分离模型和视图,达到一种层间松散耦合的效果,提高系统灵活性、复用性和可维护性。
在多数情况下,可以将Model 2与MVC等同起来。
图2-l表示一个基于Java技术的典型网络应用,从中可以看出Model 2中的各个部分是如何对应于Java中各种现有技术的【191。
图2-1基于Java技术的典型网络应用图 图2-2 Struts中的MVC实现示意图 7 华中科技大学硕士学位
论文 在利用Model 2之前,我们是把所有的表示逻辑和业务逻辑都集中在一起(比如大杂烩似的JSP),有时也称这种应用模式为Model l,Model l的主要缺点就是紧耦合,复用性差以及维护成本高。
既然Struts是基于Model 2之上,那它的底层机制也就是MVC,图2-2是Struts中的MVC实现示意图(ActionServle、Action充当控制器的角色,Jsp充当视图的角色,JavaBea充当模型的角色)。
2.1.3 Struts请求响应流程 首先控制器(ActionScrvlet)进行初始化
工作,读取配置文件struts-coniig.xml,为不同的Struts模块初始化相应的ModulcConfig对象。
比如配置文件中的Action映射定义都保存在ActionConfig集合中。
相应有ControlConfig集合、FormBeanConfig集合、ForwardConfig集合和MessageResourcesContig集合等。
控制器接收m1P请求,并从ActionConfig中找出对应于该请求的Action子类,如果没有对应的Action,控制器直接将请求转发给JSP或者静态页面。
否则控制器将请求分发至具体Action类进行处理。
在控制器调用具体Action的execute方法之前,ActionForm对象将利用HTTP请求中的参数来填充自己(可选步骤,需要在配置文件中指定)。
具体的ActioIlF锄对象应该是ActionForm的子类对象,它其实就是一个JavaBean。
此外,还可以在ActionForm类中调用validate方法来检查请求参数的合法性,并且可以返回一个包含所有错误信息的ActionErrors对象。
如果执行成功,Ac吐onFo衄自动将这些参数信息以JavaBcan(一般称之为formbean)的方式保存在ServletContext中,这样它们就可以被其它Action对象或者JSP调用。
Struts将这些ActionFom的配置信息都放在FormBeanConfig集合中,通过它们Struts能够知道针对某个客户请求是否需要创建相应的ActioIlF咖实例【20】。
Action很简单,一般只包含一个execute方法,它负责执行相应的业务逻辑,如果需要,它也进行相应的数据检查。
执行完成之后,返回一个ActioIlForward对象,控制器通过该ActiorIFo刑ard对象来进行转发工作。
我们主张将获取数据和执 8 华中科技大学硕士学位
论文行业务逻辑的功能放到具体的JavaBean当中,而Action只负责完成与控制有关的功能。
遵循该原则,所以图2-2中将Action对象归为控制器部分。
图2.3给出了客户端从发出请求到获得响应整个过程的图解说明脚l。
图2-3客户端从发出请求到获得响应的过程图2.1.4 Stru协主要框架组件2.1.4.1 ActionServlet组件 AetionServlet表示MVC结构中的控制器部分,它需要完成控制器所需的前端控制及转发请求等职责。
其次,ActionScrvlet被实现为一个专门处理HrrP请求的Servlet,它同时具有servlet的特点。
在Struts中它主要完成以下功能〔9】: ●接收客户端请求 ●根据客户端的URI将请求映射到一个相应的Action类 ●从请求中获取数据填充Form Bean(如果需要) 华中科技大学硕士学位
论文 ●调用Action类的executeO方法获取数据或者执行业务逻辑 ●选择正确的视图响应客户 此外,ActionServlet还负责初始化和清除应用配置信息的任务.ActionServlet的初始化工作在init方法中完成,它可以分为两个部分:初始化ActionScrvlet自身的一些信息以及每个模块的配置信息。
前者主要通过initInternal、initOther和initServlet三个方法来完成。
ActionServlet根据不同的模块初始ModuleConfig类,并在其中以XXXconfig集合的方式保存该模块的各种配置信息,比如ActionConfig,FormBeanConfig等.初始化工作完成之后,ActionScrvlet准备接收客户请求。
针对每个请求,方法process征IttpServletRequest request,HttpServletResponse response)将被调用。
该方法指定具体的模块,然后调用该模块的RequestProcessor的process方法:protected void process(ItttpServletRequest request, HttpServlctResponse response) throws IOException,ServletException{ RequestUtils.selectModule(request,gctScrvletContext0); getRequestProcesser(getModuleConfig(request)).process(rcquest,response);} RequestProcessor包含了Struts控制器的所有处理逻辑,它调用不同的proccssXXX方法来完成不同的处理。
Struts中ActionServlet是一个单态对象,一般不扩展该类,而是扩展RequcstProcessor中的方法。
2.1.4.2 ActionForm组件 ActionForm表示mTP窗体中的数据,可以将其看作是模型和视图的中介,它负责保存视图中的数据供模型或者视图使用,而且它还具有过滤保护的作用,只有通过ActionForm验证的数据才能够发送到Action处理。
其验证处理流程为,首先利用属性的getter和setter方法来实现初始化,初始化完毕后,ActionForm的validate方法被调用,你可以在其中来检查请求参数的正确性和有效性,并且可以 lO 华中科技大学硕士学位
论文将错误信息以ActionErrors的形式返回到输入窗体【211。
否则,ActionForm将被作为参数传给action的execute方法以供使用。
ActionForm bean的生命周期可以设置为session(缺省)和request,当设置为session时,需要在reset方法中将所有的属性重新设置为初始值。
2.1.4.3 Action组件 我们通过继承Action类来实现具体的执行类。
具体Action类的功能一般都在execute(以前是l蝴orm方法)方法中完成,其中主要涉及到以下几个方面【2‘J: 1.辅助ActionFom进行一些表单数据的检查。
2.执行必要的业务逻辑,比如存取数据库,调用实体bean等。
3.更新服务器端的bean数据,后续对象中可能会用到这些数据,比如在JSP中利用bean:write来获得这些数据t22l。
4.根据处理结果决定程序去处,并以ActionForward对象的形式返回ActionServlct。
一般来说,我们秉着MVC分离的原则,Action只负责错误处理和流程控制。
2.1.4.4 ActionForward组件 AcfionForward记录了一个应用的工作流,它保存着操作响应的跳转路径信息。
ActioIlF∞椭rd有个重要的属性redirect,其默认值为false,等同于转发(forward,保持存储在Http请求和请求上下文中的所有东西,仅可在同一应用中)。
若设为true,则控制.