【JSP开源代码栏目提醒】:网学会员--在 JSP开源代码编辑为广大网友搜集整理了:硕士论文-基于J2EE的内容管理系统设计与实现 - 考研绩等信息,祝愿广大网友取得需要的信息,参考学习。
厦门大学硕士学位
论文基于J2EE的内容管理系统设计与实现别:硕士专业:软件工程指导教师:林坤辉20081101摘要随着网络的不断发展,人们对互联网的需求也在不断深入。
内容管理系统作为一种更好的网站管理手段,越来越受到人们的重视。
内容管理系统可以使用户对网站的管理更加方便,使网站的外观设置更加灵活、多变。
作为一种新兴的网站发展模式,必将存在很大的发展潜力。
论文以软件工程思想为主线,分析了国内外内容管理系统发展的现状,论述了内容管理系统在当前网络应用中的重要作用。
根据内容管理系统的发展现状与趋势,以及存在的主要问题,结合实际项目,从需求分析、框架设计、数据库设计、开发环境配置、数据安全等方面进行了详细论述。
在系统实施过程中严格按J2EE分层模式原则进行开发,将系统分成表现层、业务逻辑层和数据访问层:表现层只负责数据的传输,业务逻辑层只负责业务逻辑的实现,数据访问层只负责和数据库进行交互。
系统采用分层模式后,降低了系统的耦合度,使整个程序开发条理更加清晰,组件的复用也会得到很大的提高。
在数据存储方面主要使用主从服务器组合数据存储策略。
采取了用于数据负载均衡的实施方案:一个数据中心服务器、一个登陆服务器和一个或一个以上从服务器。
数据中心存储所有的用户信息,登陆服务器负责用户的登陆转发,从服务器只存储部分用户的信息。
登陆服务器只存储用户ID和从服务器的IP,当用户登陆时,根据登陆服务器中的用户ID和从服务器的IP,转发到相应的从服务器,进行数据访问。
另外加一台数据备份的服务器,定时从数据中心服务器中进行数据备份。
将负载均衡和备份服务器结合可以更好的提高系统的安全性和
查询效率。
关键词:J2EE平台;内容管理系统;ABSTRACTWiththerapiddevelopmentofnetworktechnology,people’S’demandfortheInternetisalsoincreasing.Asabetterwebsitemanagementtools,peoplepaymoreattentiontotheContentManagementSystem.Itmakespeopletomanagethewebsiteeasierandmakesthewebsitemoreflexibleandchangeable.Asabettermethodtomanageawebsite,ContentManagementSystemhastakenmoreandmoreattentions.Thispaperfollowssoftwareengneeringasacenterline,whileintroducingthecurrentdevelopmentofContentManageSystemfromdomestictooverseas,anddescribeseveralimportanteffectsofContentManageSystemincurrentnetworkapplications.BeginningwiththeunderstandingofbasicconceptsofContertManageSystem,introducingthecurrentandfuturedevelopmentofContentManageSystemanditsexistingproblems,relatingwithapracticalproject,describedseveralmajoraspectssuchasrequirementanalysis,frameworkdesign,databasedesign,andconfigurationofdevelopmentenvironment.StrictlyaccordingtotheprincipleofJ2EElayers,thesystemisdividedintolayersofPresentationLayer,BusinessLogicLayerandDataAccessLayer:PresentationLayerisonlyresponsiblefordatatransmission;theBusinessLogicLayerisonlyresponsiblefortherealizationofthebusinesslogic,DataAccessLayerisonlyinchargeofdatabaseandinteractive.Thismethodwillimproveworkingefficiencygreatly.Usingthismethod,thefunctionspointsareallottedbylayers,SOthateveryoneisonlyrequiredtofocusonhisownfunctionspoints.What’Smore,aftertheallotment,thesystemcouplingisalsoreduced,whichmakestheentiredevelopmentprocessmoreclearlystructured,andcomponent’Sreusabilitygreatlyimproved.Indatastorage,weusebothmainserverandsub—server.Wetooktheimplementationofthedatabaseloadprograms:adatacenterserver,alandingserverandoneormoresub—server.DatacenterisusedtostorageallUSerinformation;thelandingserverisresponsibleforforwardingtheUSer’Slanding;andthesub-serverisonlytostorepartoftheUSer’Sinformation.LandingserverisonlytostoreUSer’SIDandthesub-server’sIP.Whenvisiting,theBSer’SIDandthesub-server’sIParethenforwardedtotheappropriateserversfordataaccess.Anadditionalserverisrequiredfordatabackup,SOastocopydatawhichstoredinthedatacenterfromtimetotime.Itwillimprovethesystem’Ssafetyandinquiriesefficiencyonlybycombiningtheloadbalancingandbackupservers.KEYWORDS:J2EEplatform,ContentManageSystem厦门大学学位
论文原创性声明本人呈交的学位
论文是本人在导师指导下,独立完成的研究成果。
本人在
论文写作中参考其他个人或集体已经发表的研究成果,均在文中以适当方式明确标明,并符合法律规范和《厦门大学研究生学术活动规范(试行)》。
另外,该学位
论文为()课题(组)的研究成果,获得()课题(组)经费或实验室的资助,在()实验室完成。
(请在以上括号内填写课题或课题组负责人或实验室名称,未有此项声明内容的,可以不作特别声明。
)器,黝:Et干攘座腓,五月争’厦门大学学位
论文著作权使用声明本人同意厦门大学根据《中华人民共和国学位条例暂行实施办法》等规定保留和使用此学位
论文,并向主管部门或其指定机构送交学位
论文(包括纸质版和电子版),允许学位
论文进入厦门大学图书馆及其数据库被查阅、借阅。
本人同意厦门大学将学位
论文加入全国博士、硕士学位
论文共建单位数据库进行检索,将学位
论文的标题和摘要汇编出版,采用影印、缩印或者其它方式合理复制学位
论文。
本学位
论文属于:()1.经厦门大学保密委员会审查核定的保密学位
论文,于年月日解密,解密后适用上述授权。
/(√)2.不保密,适用上述授权。
??(请在以上相应括号内打“√”或填上相应内容。
保密学位
论文应是已经厦门大学保密委员会审定过的学位
论文,未经厦门大学保密委员会审定的学位
论文均为公开学位
论文。
此声明栏不填写的,默认为公开学位
论文,均适用上述授权。
)声明人c签孙干芬瞧M矽年仫月4日-第一章绪论第一章绪论随着网络的不断发展,‘人们对互联网了解的不断深入。
网络对人们的影响也越来越大。
作为一个企业,如何快捷、高效的建立起具有极具个性的网站,成为他们急需解决的问题。
内容管理系统,可以说是一种应运而生的产物。
这里,我们对内容管理系统的现状和存在的问题进行了阐述,并对本文的研究内容和结构安排做了概述。
1.1研究背景及意义内容管理系统(CMS,ContentManagementSystem)。
内容管理系统是一种位于WEB前端(Web服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统【l,3】。
内容管理解决方案重点解决各种非结构化或半结构化的数字资源的采集、管理、利用、传递和增值,并能有机集成到结构化数据的商业智能环境中,如0A,CRM等。
内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。
这里指的”内容”可能包括文件、表格、图片、数据库中的数据甚至视频等一切你想要发布到Internet、Intranet以及Extranet网站的信剧41。
在内容管理系统出现之前,如果想进行网站内容管理,基本上都是靠手工维护。
随着网络信息流的不断增大,没有好的程序支持,还继续靠手工完成,给网站维护人员带来极大的不便。
如果有一个好的系统来支撑你的网站,那将节省大量的人力物力,开发者只需要给客户一个软件包,即可定期修改网站。
只要配置安装好,网站管理员定期更新数据,剩下的事交给CMS去处理即可。
对于内容管理,业界还没有一个统一的定义,不同的机构有不同的理解【5】:GartnerGroup认为内容管理从内涵上应该包括企业内部内容管理、Web内容管理、电子商务交易内容管理和企业外部网(Extranet)信息共享内容管理(如CRM和SCM等),Web内容管理是当前的重点,e-business和xML是推动内容管理发展的源动力。
MerrillLynch的分析师认为内容管理侧重于企业员工、企业用户、供应商基于J2EE的内容管理系统设计与实现和合作伙伴方便获得非结构化信息的处理过程。
内容管理的目的是把非结构化信息出版至UIntranets,Extranets和ITE(InternetTradingExchanges),从而使用户可以检索、使用、分析和共享。
商业智能系统(BI)侧重于结构化数据的价值提取,而内容管理则侧重于企业内部和外部非结构化资源的战略价值提取。
GigaGroup认为作为电子商务引擎,内容管理解决方案必须和电子商务服务器紧密集成,从而形成内容生产(Production)、传递(Delivery)以及电子商务端到端系统。
尽管最近出现许多内容管理系统,但我们发现,很多都还不是真正的CMS。
它们更多的偏向于文本的管理。
国内CMS,由于考虑的开发的速度和公司的效益,很多公司采用PHP语言进行CMS的开发。
本文在J2EE的基础上,进行CMS的开发。
在产品安全、运行效率等方面都得到很大的改善和提高。
1.2内容管理系统的发展现状及存在的问题内容管理从2000年开始成为一个重要的应用领域,这时.COM和B2B,B2C等经历了资本和市场的考验及洗礼,人们重新回到信息技术应用的基本面一如何提高竞争能力,而内容管理恰恰能够通过对企业各种类型的数字资产的产生、管理、增值和再利用,改善组织的运行效率和企业的竞争能力,企事业单位也开始认识到内容管理的重要性【6】。
目前,很多公司都投入了大量的人力、物力从事CMS的开发。
国外从事内容管理软件研发的主要厂商包括Vignette、Interwoven、BroadVision、Openmarket、ATG、Allaire、Documentum、Hummingbird等,这些公司CM产品和解决方案专业性很强,大多基于J2EE等平台,功能丰富,主要面向企业级用户,是CM市场的主要厂商。
还有一些更窄的专业厂商提供内容管理某个阶段需要的功能,女HVerity提供知识检索,Micromedia提供内容创作平台,Akamai和Inkitomi提供内容分发管理技术等。
与此相反,Microsoft、IBM、Oracle等公司提供通用平台性CMS解决方案。
但是目前CMS市场仍有很多不完善的地方,包括:在这个全新的市场中很难找到一个CMS满足用户的所有需求。
.2.第一章绪论有些CMS只是单纯的信息发布工具而以,称不上内容的收集和再利用,更谈不上知识管理的概念,最多只是一组网站建设工具
软件而已。
国内在CMS系统开发方面做的比较优秀的有西安陕西玖肆陆陆网络科技有限公司开发PHPCMS(http://www.phpcms.cn)。
PHPCMS是基于PHP语言开发的。
它主要包含核心模块和其他可扩充的模块。
其主要特点是使用了中文标签。
用户不需要写
代码,即可以实现整个网站的生成和管理。
可以自主写模板,然后在此基础上生成相应的频道。
内容管理系统是一个较泛的概念:从商业门户网站的新闻系统到个人的Weblog都可以称作发布系统。
包括以下两种类型【‘7】.(1)框架型:本身不包含任何应用实现,只是提供了底层框架,具体应用需要一定的二次开发,LL女HCocoon,Vignette:(2)应用型:本身是一个面向具体类型的应用实现,已经包含了新闻/评论管理,投票,论坛,WIKI等一些子系统。
比如:postNukexoops等【41。
1.3
论文的主要内容及特色本文设计一个实际的内容管理系统项目,按照以下顺序进行阐述:1.首先介绍内容管理系统研究的背景和意义,分析了目前国内外内容管理系统现状及存在的问题,展示了设计内容管理系统的项目需求,设计出项目的整体框架和业务流程以及项目数据库的设计理念;。
-’2.其次,提出了内容管理系统的整个系统的实现过程;最后完成项目的开发。
其中,内容
管理系统的核心模块为本文所研究的重点,其他的模块可在此基础上进行相应的扩展。
3.由于J2EE规范中的EJB太过于笨重繁琐(虽然目前EJB3已有很多改进),而且开发成本也很高。
所以在项目开发框架的选择上,采用SSH(Struts2+Spring+Hibernate)框架,这也是目前较为流行的框架整合方式。
在此基础上力求做到的均衡,具体内容如下:(1)界面组织上,力求做到简洁,易用。
充分体现系统的灵活、稳定性。
数据模型设计时,突出考虑以用户体验为核心的设计思想;.3。
基于J2EE的内容管理系统设计与实现(2)在整体的业务需求分析和应用设计实现过程中,采用用例分析的
方案,面向用户的系统集成以及围绕用户所要完成任务和关联信息,突出以用户为中心的设计理念;(3)系统采用J2EE_三层架构实施方案,将表示层、业务逻辑层和数据层分离开来,实现系统的低耦合。
当业务需求发生变更时,对其他层的影响降到最低。
1.4本文结构安排本文共分为五个章节,各章节安排顺序如下:第一章介绍了
论文研究的背景及实际意义、内容管理系统的发展过程、现状及存在的问题等,最后阐述了本文的研究内容及特色。
第二章介绍项目的整体需求,并进行系统用例分析和系统的业务逻辑分析。
第三章对J2EE体系结构进行简要介绍。
根据内容管理系统的业务需求,对系统进行了分层设计、接口设计,并给出整合SSH的方案。
最后
设计出系统的数据库概念模型。
第四章对系统实现所需要的开发环境和运行环境进行描述,并论述了系统部署的环境。
第五章对项目的安全、负载均衡等方面进行分析。
并提出一些解决方案。
第六章对
论文的总结及展望。
主要对
论文进行总结,同时提出一些未完成的工作,并对内容管理系统的进一步研究进行了展望。
.4.第二章内容管理系统分析第二章内容管理系统分析在软件开发过程中,总体设计的合理性是首要解决的也是最为重要的一个环节。
只有一个合理的设计,才能为后续的开发打下坚实的基础,才能更好的提交系统的性能。
本章将从以下几个方面进行阐述:分析项目的具体需求,在此基础上进行各个功能模块的划分,并对一些较为重要的模块进行详尽的阐述,最后做出系统的整体功能框架,并对项目所完成的情况及平台的实用性做简要的介绍。
2.1系统需求描述本系统偏向于框架型:具体应用可以进行软件的二次开发。
没有提供前台自动生成页面等功能。
在后续的开发中可以自行进行扩展。
1.
系统功能分析(1)在系统用户方面系统实现多用户操作。
系统总管理员可以给每个用户设置一个或几个角色,每个角色具有相应的权限;(2)在系统站点方面可以给每个用户分别设置相应的站点。
当赋予用户站点和相应的权限后,用户即可登入相应的站点,进行相关操作;(3)在系统模块方面可以自由增加模块,并对模块的功能进行定义。
内容管理系统最主要的特色就是可以自由添加模块。
从而实现类似于插件式的开发。
模块之间的耦合度较低,为后续的模块的更改和扩充奠定了良好的基础。
2.系统性能分析(1)系统安全性分析提供用户的身份验证,可以自由增减用户的访问权限。
遵循最小特权的原则对系统权限进行分配。
数据库采用主从数据服务器方式,将数据分发到几个数据库中,从而提高数据库操作效率和安全性:.5.基于J2EE的内容管理系统设计与实现(2)系统用户友好性分析??系统在界面设定方面,可以让用户自由设定页面的表现形式,包括界面的样式和内容,并且要求系统响应时间及时;(3)系统稳定性分析由于内容管理系统的灵活性,因此系统的稳定性显得更为重要。
只有保证了系统的稳定性,才有可能在此基础上提高系统灵活性。
3.系统运行要求(1)硬件要求CPU:Pentium或AMD3GHz;内存:2G;硬盘:80G:(2)系统运行操作系统系统能跨平台运行,包括Windows、Linux、Unix系统。
并能在平台上稳定的运行;(3)系统运行Webl〕艮务器Tomcat5.5.27+Apache。
其中,Tomcat负责运行动态页面,Apache负责静态页面;(4)系统运行数据库MySql5.0数据库4.系统扩充要求在后期若需要对系统进行扩充改进时,非常方便,能实现系统的插件式开。
2.2系统用例图分析根据系统需求描述,本系统用例主要包括:系统总体用例图,包括:用户管理、站点管理、模块管理和界面管理。
如图2.1所示:第二章内容管理系统分析manageWindow图2.1系统总体用例图具体可细分为以下几个方面:用户管理,对用户进行增加、删除、修改、查看操作。
并对用户的权限和角色进行管理。
如图2.2所示:图2.2用户管理用例图.7.User吴基于J2EE的内容管理系统设计与实现站点管理,对系统的站点进行增加、删除、修改、查看操作。
如图2.3所示:lfndSite图2.3站点管理用例图模块管理,可以在系统核心模块基础上,进行增加、修改、删除、查看操作。
如图2.4所示:图2.4模块管理用例图界面管理,可以在界面上进行界面数据域自由设定,并和自定义数据库表中的字段对应起来。
如图2.5所示:.8.吴~第二章内容管理系统分析。
图2.5界面管理用例图2.3系统业务逻辑需求描述本系统的业务逻辑需求为:用户管理员根据个人所具有的权限,可以灵活的对用户、站点、模块和用户界面进行管理。
由此,可以将系统实现的功能分为以下几个部分:(1)用户管理模块:采用基于角色的访问控制(Ro〕eBasedAccessContr01)〔s,iq,可以使系统运行的更加安全、可靠。
而且对于系统的整体权限划分非常明确。
避免了一个管理员做所有的事,从而出现权责不明确的现象。
当系统操作出现问题时,很容易了解清楚操作者是谁,从而挽回不必要的损失。
而且具有不同权限的用户,所能浏览的界面是不同的,从而防止信息的泄漏等;(2)站点管理模块:可以增加站点模块或修改站点模块;(3)模块管理模块:可以自由添加模块或修改模块及模块功能;(4)界面管理模块:可以自由定制用户界面模块。
2.4小结本章主要阐述了内容管理系统的需求,并结合需求所要做的工作,进行了进一步的分析和整理。
另外在本章节还对J2EE平台进行了简要的概述,并对目前J2EE开发中所用的技术进行了比对,找出较适合开发实现此系统的方案。
对系统.9.基于J2EE的内容管理系统设计与实现所需要用的关键技术及其框架进行了简要的描述。
为后续
工作的有序开展打下基础。
-10.第三章内容管理系统设计第三章内容管理系统设计3.1J2EE体系结构简介J2EE是美国SUN公司推出的一种概念模型。
J2EE平台提供了一个多层结构的分布式应用程序模型,是一种利用JAVA2平台来简化企业解决方案的丌发、部署和管理相关复杂
问题的体系结构。
J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用需求。
通过提供统一的平台开发,J2EE降低了开发多层应用的费用和复杂性,增强了安全机制,提高了性能【12】。
J2EE是在分布式环境中的一种体系结构,它提供了~种基于组件的设计、开发、集成、部署企业应用系统的方法。
遵从这个规范的开发活动得到行业的广泛支持,使企业级应用的开发变得简单、快速。
需要注意的是,J2EE本身是一个标准,而不是一个现成的产品(虽然现在有很多符合J2EE标准的产品),它为不同厂商创建平台产品提供了标准,使不同J2EE平台产品之间的交互成为可能。
图3.1J2EE技术架构体系整个J2EE技术框架体系如图3.1,作为企业分布式应用的开发标准,J2EE由一系列的企业应用开发技术实现。
J2EE技术框架可以分为三部分:组件技术、服基于J2EE的内容管理系统设计与实现务技术和
通信技术。
3.2SSH框架简介随着J2EE技术的发展,基于J2EE的
开源软件得到了空前的繁荣,几乎企业级应用开发中所需的所有软件产品,都可以在
开源社区找到相应的替代品,这大大减轻了丌发人员的负担,开发者可以将不同层上的框架整合到一起,从而能够从繁杂的底层编码中解脱出来。
在构建Web应用时,用户请求的处理、业务逻辑处理以及数据的持久化是必须仔细考虑的因素,而且也是大部分应用必须具备且较为复杂的职责。
因此目前针对这三方面人们开发了很多框架,如图3.2所示。
图3.2SSH框架整合图图2.6是目前被大多数公司采用的较为流行的框架整合方式。
下面简要介绍SSH各层的工作原理。
3.2.1WC框架1.Strutsl说起MVC框架,人们最容易想到的就是Struts框架(现在被称为Strutsl框架)。
Struts是一个基于J2EE平台的框架,主要采用JSP和Servlet技术进行产品的开发。
由于Struts在开发过程中简单明了,开发效率高,而倍受开发者的亲睐。
Struts将jsP、Servlet、自定义标签和信息资源整合到一个统一的框架中,从而实现了MVC(模型一视图一控制)框架。
在实现
代码编写时,更加清晰。
即使现在说.12—第三章内容管理系统设计Struts存在很多缺点,应该被淘汰,但由于一些公司本身对Struts封装比较好(如分页等功能),所以Strust目前仍占有很大的市场份额。
MVC框架图,如图3.3所示【13】:
jsp标记只解决了部分问题。
我们还得处理验证、流程控制和更新应用程序的状态等问题。
这正是MVC发挥作用的地方。
MVC通过将问题分为三个类别来帮助解决单一模块方法所遇到的某些问题。
图3.3Strutsl架构图模型层(Model):模型表示应用
程序的状态和业务逻辑,Struts框架没有提供特定的模型组件,在大型分布式应用程序开发中,业务逻辑通常有JavaBean或EJB组件来实现。
在
代码编写过程中,使用Struts框架,模型层就是Forn【1Bean,其数据来源于页面所提交的表单。
在编写中有些程序员将P0和FormBean等同起来,是绝对错误的做法。
我们知道PO是和数据库中的字段一一对相应的,而FormBean只和页面表单对应。
例如一个用户登录表单,对应一个FormBean,里面可能只有用户名和密码:而用户的P0除包括用户名、密码外,还有用户
注册时间、用户年龄等信息。
视图层(View):视图层是一组JSP文件。
在这些JSP文件中既没有业务逻辑,也没有模型信息,只有标签,这些标签可以是标准的JSP标签或客户化标签。
视图提供模型的表示。
它是应用程序的外观。
视图可以访问模型的读方法,但不能访问写方法。
此外,它对控制器一无所知。
当更改模型时,视图应得到通知。
.13.基于J2EE的内容管理系统设计与实现控制层(Controller):控制层是Struts框架的中枢,有ActionServlet类和Action类来实现。
其中ActionServlet在MVC中扮演中央控制器的角色,接收所有客户端请求,并把所有客户端的请求委派到指定的Action类。
Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。
--__HAction类完成处理,ActionServlet将根据Action返回的键值来决定调用什么视图来显示Action类的处理结果。
此外,除了Action,业务逻辑的操作还需要有ActionMapping、hctionForward这几个组件协助完成,他们用来指定不同业务逻辑或流程的运行方向。
一2.Struts2对于Strutsl框架而言,因为它与JSP/Servlet耦合非常紧密,从而导致了许多不可避免的缺陷,随着Web应用的逐渐扩大,这些缺陷成为制约Strutsl发展的重要因素。
具体表现在一下几个方面【14】:(1)支持的编写层技术单一,Strutsl只支持jsP作为表现出技术,不提供与其他表现层技术,如Velocity、FreeMarker等技术的整合;(2)与ServletAPI严重耦合,难于测试。
因为Strutsl框架是在Model2的基础上发展起来的,因此它完全是基于ServletAPI的,所以在Strutsl的业务逻辑控制器内,充满了大量的ServletAPI;(3)
代码严重依赖于StrutslAPI,属于侵入式的设计。
Strutsl的Action类必须继承Strutsl的Action基类,实现处理方法时,又包含大量的StrutslAPI:如ActionMapping、ActionForm和ActionForward类。
这种侵入式设计的最大弱点在于,一旦系统需要重构时,这些Action类将完全没有利用价值,成为一堆废品;(4)由于Strutsl存在弊端,所以就有了Struts2的出现。
Struts2是WebWork的升级,而不是Strutsl的升级。
相对于Strutsl,它具有以下优点:在Action实现类方面:Strutsl要求Action类继承一个抽象基类;Strutsl的一个具体问题是使用抽象类编程而不是接口。
Struts2Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制成为可能【21】。
在线程模式方面:StrutslAction为单例模式并且是线程安全的,因为仅有Action的一个实例来处理所有的请求。
单例模式策略限制了StrutslAction能做到事,并且在开发时要格外小心。
Struts2Action对象为每一个请求产生一个实例,因此没有线程安全问题。
.14.第三章内容管理系统设计在Servlet依赖方面:StrutslAction依赖于ServletAPI,因为StrutslAction的execute方法中有HttpServletRequest和HttpServletResponse方法。
Struts2Action不再依赖于ServletAPI,从而允许Action脱离Web容器运行,降低了测试Action的难度。
在可测性方面:测试StrutslAction的一个主要问题是execute方法依赖于ServletAPI,这使得Action的测试要依赖于Web容器。
为了脱离Web容器测试Strutsl的Action,必须借助于第三方扩展:StrutsTestCase,该扩展下包含了系列的Mock对象(模拟了HttpServletRequest和HttpServletResponse对象),从而可以脱离Web容器测试Strutsl的Action类。
Struts2Action可以通过初始化、设置属性、调用方法来测试。
在封装请求参数方面:Strutsl使用ActionForm对象封装用户的请求参数,所有的ActionForm必须继承基类ActionForm。
普通的JavaBean不能用作ActionForm,因此,开发者必须创建大量的ActionForm类来封装用户请求参数。
虽然Strutsl提供的动态ActionForm来简化ActionForm的开发,但依然需要在配置文件中定义ActionForm;Struts2直接用Action属性来封装用户请求属性,避免了开发者需要开发大量ActionForm的麻烦。
在表达式方面:Strutsl正好的JSTL,因此可以使用JSTL表达式语言。
这种表达式语言有基本对象图遍历,但在对集合和索引的支持功能不强;Struts2可以使用JSTL,但他整合了一种更强大和灵活的表达式语言:OGNL(ObjectGraphNotationLanguage),因此,Struts2下的表达式语言功能更加强大。
在类型转换方面:StrutslActionForm属性通常都是String类型。
Strutsl使用Commons-Beanutiis进行转换,每个类一个转换器,转换器是不可配置的;Struts2使用OGNL进行转换,支持基本数据类型和
常用对象之间的转换。
在数据校验方面:Strutsl支持ActionForm重写validate方法中手动校验,或者通过整合Commonsalidator框架完成数据校验。
Struts2支持通过重写validate方法进行校验,也支持整合XWork校验框架进行校验。
在Action执行控制方面:Strutsl支持每一个模块对应一个请求处理(即生命周期的概念),但模块中的所有Action必须共享相同的生命周期。
Struts2支持通过拦截器堆栈(InterceptorStacks)为每一个ActionEO建不同的生命周期。
开发者可以根据需要创建相应的堆栈,从而和不同的Action一起使用。
-15.基于J2EE的内容管理系统设计与实现3.2.2Spring框架介绍Spring起源于在2002年出版的《ExpertoneononeJ2EEdesignanddevelopment》一书,改书的作者RodJohnson提出了使用J2EE的思想,这种思想简化了J2EE应用的开发。
Spring是J2EE领域一个非常优秀的框架,它提供了一种轻量级IoC(InversionofControl,控制反转)容器,该容器负责创建、管理应用组件。
从最前端的控制器,到中间层的业务逻辑组件,已经底层的DA0组件,都处于Spring容器的管理下,以一种低耦合度方式运行。
其框架如图3.4所示【l毛怕J~,、wj,SpnngORM.SpringWeb:sprmgWeb磬#蠹誉峨i珥涮:獭彩秭渤溉渤捌4赫张,{《}a椿镑移》贼拙撩¥嬲糟剞§搿,:∞n鞠鼯。
f}秘游胡静酾SpringAOP施,:。
,乏WebffVCFr’§raewmt,褥醯钥e燃jS张捧锵潍神目翔哦e巷瓣?,pnngjDAOSpdngContext。
j撼礅日碱≮I。
i捌渤商哺嚣舶嬲堞啦二细掰铀鳓翻曲斌税剃嘲li!‘蜣飘耐7鞠叛鞘鼯哦V秘漱:嚣婚铷辨棼疗,簧醋£l嬲采辫O§档≈瓣:,、“l;,巧SpringCore:‘象删罐懈‰c肝妇嘲=,。
,????4…。
………一……~…。
~~~….……—.——………~、o图3.4spring框架图组成Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。
核心容器提供Spring框架的基本功能。
核心容器的主要组件是BeanFactory,它是工厂模式的实现;Spring上下文是一个配置文件,向Spring框架提供上下文信息;SpringAOP模块直接将面向方面的编程功能集成到了Spring框架中,所以,可以很容易地使Spring框架管理的任何对象支持AOP;Spring框架插入了若干个ORM框架,从而提供了ORM的对象关系工具,其中包括JD0、Hibernate和iBatisSQLMap。
所有这些都遵从Spring的通.16—第三章内容管理系统设计用事务和DAO异常层次结构;Spring框架支持与JakartaStruts的集成。
Web模块还简化了处理多部分请求以及将.