基于MVC的新闻发布系统的设计与实现(电子商务论文)_第1页
基于MVC的新闻发布系统的设计与实现(电子商务论文)_第2页
基于MVC的新闻发布系统的设计与实现(电子商务论文)_第3页
基于MVC的新闻发布系统的设计与实现(电子商务论文)_第4页
基于MVC的新闻发布系统的设计与实现(电子商务论文)_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于MVC模式的新闻发布系统的设计与实现作者姓名:吴秋生专业班级:2003070505摘要:新闻发布系统是公司内容管理系统的主要应用之一,是公司信息化建设和实现电子商务的重要途径。它的基本思想是分离新闻信息的内容和表现形式,以期提高新闻发布效率。本设计采用基于UML用例驱动对象建模的ICONIX项目管理方法,应用MVC三层设计模式,实现一个可以完成新闻栏目和新闻信息的添加、修改、删除以及新闻查看功能的新闻发布系统。关键字:ICONIX;MVC;Servlet;JavaBean;新闻发布 DesignandImplementationoftheNewsPublishingSystembasedo

2、nMVCmodelAbstract:ThenewspublishingsystemisthemainapplicationofContentManagementSysteminacompany,alsoitisanimportantapproachofthecompaniesinformationconstructionandtherealizationofE-Commerce.Theseparationofthecontentsandviewsofinformationinthenewsisitisthebasicidea,soastoadvancetheefficiencyofthenew

3、s.ThroughapplyingtheprojectmanagementmethodsofICONIX,whichisbasedonusecasedrivenobjectmodelingwithUML,andMVCdesignpattern,thispaperimplementanewspublishingsystemwithfunctionsofadding,editing,deletingthecategoryandnews,andbrowsingnewsmessage.Keywords:ICONIX;MVC;Servlet;JavaBean;NewsPublishing目录TOC o

4、1-5 h z第1章前言1 HYPERLINK l bookmark8 第2章系统概述2 HYPERLINK l bookmark10 2.1项目管理方法22.1.1项目管理方法比较22.1.2项目管理方法选择2 HYPERLINK l bookmark12 2.2设计模式3 HYPERLINK l bookmark14 MVC模式基本原理4 HYPERLINK l bookmark16 MVCModel15 HYPERLINK l bookmark18 MVCModel25 HYPERLINK l bookmark22 2.3小结6 HYPERLINK l bookmark24 第3章需求分

5、析7 HYPERLINK l bookmark26 3.1需求描述7 HYPERLINK l bookmark28 3.2角色识别8 HYPERLINK l bookmark30 3.3用例识别8 HYPERLINK l bookmark32 3.4用例文档8 HYPERLINK l bookmark34 3.5用例驱动分析10 HYPERLINK l bookmark36 3.6小结12 HYPERLINK l bookmark40 第4章系统设计13 HYPERLINK l bookmark42 4.1系统总体设计13 HYPERLINK l bookmark44 4.1.1系统构架13

6、HYPERLINK l bookmark46 4.1.2发现系统类14 HYPERLINK l bookmark48 4.2视图层设计15 HYPERLINK l bookmark50 4.2.1前台设计15 HYPERLINK l bookmark52 4.2.2后台设计16 HYPERLINK l bookmark60 4.3模型层设计184.3.1前台显示和用户登录184.3.2新闻管理194.3.3栏目管理20 HYPERLINK l bookmark76 4.4控制层设计21 HYPERLINK l bookmark78 4.4.1用户登录214.4.2新闻管理214.4.3栏目管理

7、22 HYPERLINK l bookmark84 4.5数据库设计234.5.1数据库需求分析234.5.2数据库概念设计234.5.3数据库逻辑设计244.5.4数据库表设计24 HYPERLINK l bookmark86 4.6数据库连接池设计25传统的数据库连接254.6.2数据库连接池的必要性254.6.3数据库连接池工作原理26 HYPERLINK l bookmark88 4.6.4具体设计26 HYPERLINK l bookmark90 4.7小结27 HYPERLINK l bookmark92 第5章系统实现28 HYPERLINK l bookmark94 5.1视图

8、层实现28 HYPERLINK l bookmark96 5.1.1公共页面285.1.2前台实现295.1.3后台实现30 HYPERLINK l bookmark102 5.2模型层实现325.2.1新闻显示32 HYPERLINK l bookmark110 5.2.2新闻管理325.2.3栏目管理32 HYPERLINK l bookmark104 5.3控制层实现32 HYPERLINK l bookmark106 5.3.1用户登录335.3.2新闻管理335.3.3栏目管理34 HYPERLINK l bookmark114 5.4数据库实现345.4.1数据库表实现345.4.

9、2数据库表关系35 HYPERLINK l bookmark118 5.5数据库连接池实现36 HYPERLINK l bookmark120 5.6小结36 HYPERLINK l bookmark122 第6章系统运行测试37 HYPERLINK l bookmark124 系统测试环境376.1.1系统测试硬件环境376.1.2系统测试软件环境37Tomcat的配置37 HYPERLINK l bookmark126 6.2系统测试37 HYPERLINK l bookmark128 第7章系统评价与改进39 HYPERLINK l bookmark130 7.1系统评价397.2系统改

10、进39 HYPERLINK l bookmark132 结论40 HYPERLINK l bookmark134 致谢41 HYPERLINK l bookmark136 参考文献42 HYPERLINK l bookmark148 附件43 第1章前言伴随着网络的出现,网页逐渐融入人们的生活。快速及时的新闻浏览,五彩缤纷的网上信息,使网络与人们的生活息息相关,于是世界上出现了第三媒体Internet。它打破了地域限制,真正使信息得以共享,改变了人们的工作和生活方式。人们对信息的需求有了更新,更高的要求,而网页由于本身所具有的信息量大,传递快速,没有时空限制等特点恰好满足这种要求。也正是由于网

11、络实现网站的数据信息能够进行实时交互,保证网站数据的实时性。随着Internet信息技术的高速发展,越来越多的企业想将自己企业的信息通过网络与全世界分享并最终实现电子商务,所以它们已经建立或计划建立自己的网站。但是,如果为了建立和维护自己的网站而聘请专职的网络技术人员,其成本对于一个中小型企业来说实在是太高了。对于上面这类企业来说,他们最需要的就是一个现成的可以自动发布信息的新闻发布系统,这样只要会打字,会上网就能利用新闻发布系统快速简洁地发布企业信息。然而传统的信息发布方式已经不适应这个快速变化的信息时代,需要一个更高效,更简洁的方式进行信息发布。内容管理系统正是基于这样一个目的而诞生的,它

12、是企业信息化建设和电子政务的新宠。它的基本思想是分离信息内容和表现形式,内容存储在数据库或独立的文件中,而表现形式存储在模版里。当用户请求页面时,各部分联合生成一个标准的HTML页面;当信息修改时,用户只需在一个可视化的界面对信息内容进行修改。大大缩短了信息的更新时间,提高了效率,并且简化了操作。本设计便是基于内容管理思想的一个新闻发布系统,以下各章从系统概述、需求分析、系统设计、系统实现、系统运行测试和系统评价与改进依次展现系统开发过程。第2章系统概述本章主要介绍在系统开发过程中所采用的软件项目管理方法和系统设计模式。2.1项目管理方法2.1.1项目管理方法比较目前,面向对象软件开发的项目管

13、理方法主要有RUP、XP和ICONIX。RUP(RationalUnifiedProcess)统一软件过程,是统一软件开发过程,强调文档、设计和代码的质量,采用动态适应变化的渐进式迭代周期,依靠需求和测试驱动,并积极鼓励客户参与的开发方法。RUP是一个基于UML和构件式构架的迭代递增型开发过程,更适用于大、中型软件开发项目。XP极限编程(ExtremeProgramming,XP)是一门针对业务和软件开发的规则,它将编码和设计活动融为一体,弱化了构架的概念1。要求先开发出系统中最重要的特性,迅速向客户提供所需功能,然后随着代码的演进通过重构来满足新的要求,从而使整个项目的风险降到最小。XP是一

14、种渐进式的原型化开发方法,反映的是以编程为中心,节省资源的观念。它具有沟通高效,设计简单,反馈迅速等特点,是一种针对某些特定环境(需求变化快的小型开发团队)的具体过程实施模型和方法论。ICONIX的规模大概在重量级的RationalUnifiedProcess(RUP)和轻量级的极限编程(XP)之间。和RUP一样,ICONIX过程也是用例驱动的,但不需要RUP使纪录延续到表中带来的大量开销;和XP一样,它相对较小,比较紧凑,但不像XP那样摒弃了分析和设计过程。因此,有助于使用统一建模语言(UML),同时对需求进行跟踪。该过程遵循了IvarJacobson的“用例驱动”的思想,能够获得有形、具体

15、、易于理解的用例,可以使用这些用例来驱动开发工作。该过程的3个基本原则是:从用户需求向内进行;从问题域的关键抽象向外进行;从高级模型向下挖掘到详细设计2。2.1.2项目管理方法选择本系统选择的项目管理方法是ICONIX,也许它并不是用于本系统开发最好的项目管理方法,当然它也有很多缺点。本系统选择它作为系统的软件项目管理方法,第一是因为系统本身较简单,采用ICONIX足以满足系统需求,并且由于时间限制,本人没有太多精力去学习更好的项目管理方法;第二是因为和别的软件方法不同的是,ICONIX更强调需求到设计之前的自然、有章可循的,同时也适合迭代的过渡,并且按照它自己的软件方法思想,它对UML符号集

16、在可扩充的前提下作了一定的取舍。本系统选择ICONIX项目管理方法,在系统设计和实现过程中,根据系统需要,对其进行了适当的取舍。图2-1是ICONIX项目管理方法过程的总图。C图2-1ICONIX总图22.2设计模式随着Web技术的发展,Web内容从一些静态页面发展到内容丰富的动态页面。目前,用于生成动态网页较为流行的技术有Microsoft的ASP、Tex的PHP和Sun的JSP。ASP只能工作在微软的IIS(InternetInformationServer)和PWS(PersonalWebServer)上及PHP模式,一些天生缺陷使得它们的使用受到了一定的制约。而JSP是一种完全与平台无

17、关的开发新技术,它集极高的运行效率,较短的开发周期,超强的扩展能力,完全开放的技术标准,自由的开发方式等众多完美特性于一身。JSP+JavaBean+Servlet+JDBC+DBMS是一套能够实现动态网站的开发和维护的技术。DBMS数据库用于数据存储,JDBC用于连接数据库并对数据库进行存储,Servlet用于处理过程控制,JavaBean用于封装业务逻辑,JSP用于页面显示部分。而MVC正是这种设计模式代表。2.2.2MVC模式基本原理MVC(Model-View-Controller),即把一个应用的输入、处理、输出流程按照Model,View,Controller的方式进行分离,这样一

18、个应用被分成三个层模型层、视图层、控制层,其三层之间的关系和功能如图2-2“MVC组件类型关系和功能图”。方法调用尸事件图2-2MVC组件类型关系和功能图3MVC设计模式的典型流程为:首先Controller接收用户的请求,并决定应该调用哪个Model来进行处理,然后Model用业务逻辑来处理用户的请求并返回数据,最后Controller用相应的View格式化Model返回的数据,并通过表示层呈现给用户。控制层(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉我们,它就是一个分发器,选择什么样的模型,选择什么样的

19、视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个链接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。模型层(Model)就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心,必须能够满足大多数客户的需求,包括保证应用程序各组件的事务整合、维护并快速获取应用数据,支持事务工作流的协调以及在已有应用程序中集成新的应用组件等。MVC

20、并没有提供模型的设计方法,而只告诉我们应该组织管理这些模型,以便于模型的重构和提高重用性。视图层(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML,XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。MVCModel1在MVC模式的Model1体系中,JSP页面独立响应请求并将出理结果返回客户,所有的数据存取都是由JavaBean来完成。Modell

21、体系十分适合简单应用需要,却不能满足复杂的大型应用程序的实现。MVCModel1的体系结构如图2-3所示。请求响应JavaBean.:+JDBC*关系数据库图2-3MVCModell体系结构图5MVCModel2MVC模式的Model2体系结构是一种把JSP与Servlet联合起来实现动态内容服务的方法。它吸取了两种技术的优点,用JSP生成表达层的内容,让Servlet完成深层次的处理任务。这是一种有代表性的方法,它清晰地分离了表达和内容,明确了角色的定义及开发者与网页设计者的分工。本系统的设计模式选择的便是Model2。MVCModel2的体系结构如图2-4所示。浏rlA*览器TJITSer

22、vlet*JSPJavaBeanJDBC关系数据库图2-4MVCModel2体系结构图52.3小结本章首先介绍了目前面向对象的软件开发中所常用的几种项目管理方法,并最终根据系统需要选择了ICONIX作为系统项目管理方法。然后对MVC设计模式基本原理进行了详细阐述,并介绍了MVC的两种不同的模式Modell和Model2,并确定本系统的设计模式便是MVCModel2。第3章需求分析需求分析在软件开发过程中,具有举足轻重的地位,它具有决策性,方向性,策略性的作用。需求分析的任务就是要解决“做什么”的问题,就是要全面地理解用户的各项需求,并准确地表达所接受的用户需求。3.1需求描述新闻发布系统功能需

23、求主要包括:前台显示功能和后台管理功能。前台显示功能主要针对一般用户的,当一般用户在浏览新闻系统时,系统应该对新闻栏目和新闻条目的显示。另外,前台显示功能还应包括一个提供给系统管理员登录后台的登录入口。具体需求见表3-1系统前台显示需求表。表3-1系统前台显示需求表用户要求实现功能一般用户浏览新闻栏目一般用户浏览新闻系统管理员登录后台系统后台管理功能是针对系统管理员的,当系统管理员登录系统后台时,系统后台提供给系统管理员的功能应该有:对新闻栏目的浏览、添加、修改和删除;对新闻条目的浏览、添加、修改和删除。具体需求见表3-2系统后台管理需求表。表3-2系统后台管理需求表用户要求实现功能系统管理员

24、浏览新闻栏目系统管理员添加新闻栏目系统管理员修改新闻栏目系统管理员删除新闻栏目系统管理员浏览新闻系统管理员修改新闻系统管理员添加新闻系统管理员删除新闻3.2角色识别角色识别的任务是找到所有可能与系统发生交互行为的外部实体、对象和系统。他们的行为不受系统控制,但是可以提供输入信息。从系统描述可知,在前台显示模块中,系统主要对一般用户的浏览需求和管理员的登录需求做出响应;而在后台管理系统中,系统管理员可以对新闻栏目及新闻进行浏览、添加、修改和删除。所以本系统应包括两个角色:一般用户和系统管理员用户。而事实上这些人对于系统来说都是用户,只是当用户登录到后台便成了管理员而已。因此,系统角色可以统一为:

25、用户。3.3用例识别在UML文档中,用例(即UseCase)的定义是:在不展现一个系统或子系统内部结构的情况下,对系统或子系统的某个连贯的功能单元的定义和描述6。用例识别的目标是在需求描述和系统角色识别的基础上,识别出角色相映的用例,从而可以得出系统的用例模型,如图3-1是“系统用例模型图”。图3-1系统用例模型图3.4用例文档用例文档主要为了描述出用例的详细业务流程,本系统主要包括以下用例文档:前台显示用例文档:基本流程:当用户在前台浏览新闻系统时,系统默认显示给用户的是所有栏目和所有新闻条目(每页显示8条新闻,一页显示不完可以分页显示)。当用户点击某个栏目时,系统显示相应的新闻条目。分支流

26、程:如果某个栏目下没有任何新闻,系统将显示一条信息,以指出该栏目没有新闻可以显示。(2)登录入口用例文档:基本流程:用户在前台显示页面提供的登录后台系统的登录入口中输入用户信息,系统根据用户的登录信息进行检验,然后进入系统后台管理系统。分支流程:如果用户取消登录,则系统将信息重置,用户回到前台显示页面。如果用户输入的信息不正确,系统将控制权交给“登录错误”页面,用户可以在此重新输入用户名和密码进行登录。(3)系统后台管理用例文档:基本流程:用户在登录系统后台后,可以对新闻和栏目进行操作,根据用户的操作选择,进入扩展用例。(4)新闻管理用例文档:基本流程:用户进入系统后便可浏览到新闻条目,在浏览

27、过程中,用户可以修改和删除新闻。用户在进行相应的操作后,系统存储新的信息,系统将控制权交给后台管理用例。分支流程:如果用户放弃对新闻的相应操作,则系统直接将控制权交给后台管理用例。如果用户选择添加新闻,系统将控制权交给添加新闻用例。(5)添加新闻用例文档:基本流程:用户填写新闻相关信息,并确定添加新闻时,系统将存储此新闻,并将控制权交给新闻管理用例。分支流程:如果用户放弃新闻添加,系统将直接将控制权交回给新闻管理用例。(6)栏目管理用例文档:基本流程:用户在后台管理中选择栏目管理时,用户将浏览到系统已有栏目,并可对其进行修改删除操作,用户在进行相应操作后,系统会存储新的信息,控制权将回到栏目管

28、理用例。分支流程:如果用户放弃相应操作,控制权将直接回到栏目管理用例。如果用户选择添加栏目,控制权将交给添加栏目用例。(7)添加栏目用例文档:基本流程:用户填写栏目相关信息,并确定添加栏目,系统将存储此栏目,并将控制权交给栏目管理用例。分支流程:如果用户放弃栏目添加,控制权将直接交回到栏目管理用例。3.5用例驱动分析通过以上对系统需求的分析已经定义了系统的角色和系统用例。系统根据用例模型可以对用例进行细化,从而展现整个用例的活动顺序。序列图则反映了用例各个类之间的具体调用过程7,如图便是根据系统的角色分析和系统用例模型而得出的相应活动的顺序图如图3-2至图3-7。图3-2前台活动顺序图c顶层包

29、:用户图3-5添加新闻活动顺序图图3-6栏目管理活动顺序图栏目管理III=t添加栏曰f-J1|.II顶层包:用户1:栏目管理.2:显示栏目;3:添加栏目添加控制4:添加成功图3-7添加栏目活动顺序图3.6小结本章从用户的角度,分析了系统的需求用例,画出了系统用例模型图,并得出了相应的用例文档;做出了用例驱动分析,并得出了相应的顺序图。本章的工作为系统的设计打下基础。第4章系统设计根据上一章的需求用例分析,本章从先总体构架的角度对系统进行总体设计,然后根据MVC三层模式对系统进行详细设计,最后对系统数据库和数据库连接池进行了设计。4.1系统总体设计4.1.1系统构架系统基于MVCModel2设计

30、模式,设计出本系统自己的设计模式,在MVCModel2基础上加入数据库连接池模块层对数据库操作进行封装。具体模式图如图4-1。请求响应浏览器图4-1系统设计模式图关系数据库对于MVC设计模式,在本系统中具体实现方式是:Model由JavaBean完成,View由JSP完成,Controller由Servlet完成,再加上数据库连接池专门负责数据库连接和管理。本系统具体构架如图4-2。系统基本构架视图层View控制层Contriller模型层Model数据层DatabaseJSP调用返回JavaBean对-象ConnectionPeel图4-2系统构架图4.1.2发现系统类发现系统类是域建模的工

31、作,其主要目的是根据系统需求用例及描述,找到代表与本新闻系统将要解决的问题有关的事务和概念的“对象”,即类1。在本系统中,根据第3章中对系统需求用例的分析,可以总结出如下的需求集:(1)系统应该分为前台和后台;(2)系统前台应该可以显示新闻栏目和新闻以及用于管理员登录系统后台的登录界面;(3)一般用户应该可以在前台自由浏览新闻,包括选择性地浏览新闻即先选择新闻栏目再浏览新闻栏目下的新闻条目;用户在浏览新闻时,系统应该可以将显示给用户一个包含新闻具体内容的HTML文件;(4)系统管理员应该可以登录到系统后台;(5)系统管理员应该可以对新闻栏目和新闻进行查看、修改、删除和添加操作。系统在添加新闻时

32、,应该可以将添加的新闻保存为一个HTML文件。由以上需求集进一步分析可知:(1)词“系统”太模糊,不能成为一个对象的名称;同样,“前台”和“后台”为系统的两个不同的区域,亦不能成为对象名称;(2)“新闻栏目”和“新闻”为系统的两个主要内容,所以应该分别作为一个类,而新闻栏目和新闻的显示需要管理类进行管理,系统管理员要对栏目和新闻进行查看、添加、修改和删除,也需要相应的管理类进行管理,所以,系统对于新闻栏目和新闻分别需要“栏目管理类”和“新闻管理类”;(3)要将添加的新闻保存为一个HTML文件,需要一个从表单中收集信息并将其转换为一个HTML文件的类;(4)系统要保存信息,必须用到数据库,所以需

33、要一个数据库连接的类;(5)要将系统的各个功能执行成功,少不了相应的控制类。因此,识别出系统主要的类:新闻类(News)和新闻管理类(NewsMgr),栏目类(Category)和栏目管理类(CategoryMgr),数据库连接池的连接对象类(ConnectionObject)和连接池管理类(ConnectionPool)以及各个Servlet类。4.2视图层设计4.2.1前台设计当一个用户浏览新闻系统时,首先进入系统前台界面。如果把一个系统比作一个人,那么前台界面则是这个人的脸,因此系统的前台界面的设计是比较重要的,并且,前台界面应该被设计得比较简洁,方便。前台界面设计如图4-3所示。新闻系

34、统前台登录框一登录图4-3前台界面设计图首先,在本系统的前台界面的顶部用户可以看到一个专为系统管理员用户提供的登录入口,为系统管理员提供了方便。而对于一般用户来说,他们也不会感觉这有何不妥,因为此登录界面比较简洁,并不会影响用户正常地阅读新闻。其次,在登录界面的下方是新闻栏目的显示,显示系统新闻栏目数据库中已有的新闻栏目,一目了然,用户可以方便地找到自己喜欢和关心的新闻所在的栏目。再次,在新闻栏目的下方则是新闻条目的显示,默认的新闻条目的显示方式是以表格的形式将系统新闻数据表中的新闻按发布时间进行列表(发布较早的新闻被放在列表的后面,而发布较迟的新闻被放在列表的前面,体现了新闻的“新”,即“时

35、效性”)。新闻列表中仅显示新闻的标题,发布时间和新闻作者,如果想浏览整篇新闻,用户可以点击新闻标题(超链接),这时系统会将用户引导向一个包含新闻具体内容的HTML文件。然后,用户可以对自己比较关心和感兴趣的新闻进行有选择性地浏览,这时新闻栏目便起作用了。当用户点击新闻所在的栏目时,系统在新闻列表中只显示本栏目的新闻条目。用户可以在此浏览自己关心和感兴趣的新闻。4.2.2后台设计后台主页面设计当用户登录到系统后台时,他便成为系统管理员,可以执行对新闻和栏目的查看、修改、删除和添加。此界面主要是面向管理员的,界面要设计得简洁方便,使得系统管理员在管理系统时容易操作。后台界面设计如图4-4所示。回冈

36、欢迎词(welcomeXX)I添加新闻丨栏目管理丨退出丨.刷新I主页I图4-4后台管理系统主界面设计图当管理员用户登录到系统后台时,呈现到他眼前的是系统后台管理的主页面:首先,系统后台主页面左上角是欢迎词(Welcome+管理员名),对于管理员,他可以感觉到系统的人性化;对于系统本身,系统可以识别此时登录的是哪个管理员,可以分配管理员的权限。其次,欢迎词下方是系统管理的功能选择,一目了然,管理员可以在此选择要操作的模块进入,然后执行相应的操作。再次,再往下就是系统新闻列表,与前台新闻显示类似,只是多了对新闻的操作(修改和删除)。管理员可以在此对系统已有的新闻进行修改和删除操作。添加新闻设计如果

37、系统管理员在系统后台主页面中选择“添加新闻”,管理员会进入下图这样一个页面进行新闻的添加,添加完新闻标题和新闻正文内容后,还必须选择所添加新闻所属的新闻栏目。确认所有内容均已填好,点击“发表”按钮,新闻发布工作完成,如果点击“清除”按钮,则系统清除管理员刚才的所有输入,让管理员重新填写新闻的各项内容。管理员可以在系统后台主页面中看到刚刚发表的新闻,可以对其进行相关操作,如图4-5。o发布新闻文章标题:在此处输入文章标题图4-5发布新闻页面设计图栏目管理设计如果系统管理员在系统后台主页面中选择“栏目管理”,系统将链接到新闻栏目管理页面。栏目管理页面上有一些链接按钮,可以让管理员链接到其他页面。链

38、接按钮下面是系统已有新闻栏目的列表,在此,管理员可以对新闻发布系统的栏目进行操作(编辑和删除栏目)。如果管理员想要添加新闻栏目,只需点击“添加栏目”,就可以被链接到添加新闻栏目页面(因为此页面比较简单,所以并未给出具体设计图),添加栏目完成后,管理员可以在栏目管理主页面的栏目列表中找到新添加的栏目,并对其进行相关操作,如图4-6。图4-6栏目管理页面设计图4.3模型层设计本系统模型层由JavaBean完成,模型层设计主要设计出完成各个功能模块中模型层的JavaBean类。模型层的类主要有新闻类News和新闻管理类NewsMgr以及栏目类Category和栏目管理类CategoryMgr。4.3

39、.1前台显示和用户登录在前台显示和用户登录模块中,充当模型层的是News和NewsMgr根据系统分析中的系统前台需求用例分析和上述的前台界面功能描述,对系统的前台的每一个流程、每一个模块进行详细功能设计。其相应的功能模型如下图4-7。图4-7系统前台显示和用户登录静态模型图根据上面的系统前台模型,我们可以来说明各个类的责任和功能。表4-1前台类责任表名称类型属性责任(或操作)Indexpage边界无显示系统前台主页面,并提供管理员登录News实体新闻条目的属性新闻条目的抽象NewsMgr控制无根据新闻ID得到新闻对象,获得所有新闻和根据栏目ID得到该栏目的所有新闻LoginForm边界无提供管

40、理员登录,并负责客户端的登录完整性检验mainpage边界无系统后台管理主页面4.3.2新闻管理管理员在系统后台主界面中可以对已有新闻进行管理(修改、删除和添加)新闻管理模块中充当模型层的仍然是News和NewsMgr。其静态模型如图4-8。图4-8新闻管理静态模型图根据上面的新闻管理模型,我们可以对各个类的责任和功能进行说明。表4-2新闻管理类责任表名称类型属性责任(或操作)Mainpage边界无显示系统后台主页面,系统管理员可以在此对系统进行操作表4-2新闻管理类责任表(续)NewsMgr控制无对新闻条目进行操作,修改和删除News实体新闻属性对新闻实体的抽象Addnewspage边界无添

41、加新闻界面,以Form形式收集信息然后提交给控制器AddNewsServlet控制无在控制层设计EditNewsServlet控制无在控制层设计DeleteNewsServlet控制无在控制层设计4.3.3栏目管理栏目管理中可以对已有栏目的编辑、删除以及添加新栏目,栏目管理静态模型如图4-9。图4-9栏目管理静态模型图根据上面的栏目管理静态模型设计,我们可以对各个类的责任和功能进行说明。表4-3栏目管理类责任表名称类型属性责任(或操作)ClassManagepage边界无显示系统既有栏目,管理员可以在此对栏目进行修改和删除操作Addclasspage边界无添加栏目,提交给添加栏目控制器Cate

42、gory实体ID和Name新闻栏目的抽象CategoryMgr控制无实现对新闻栏目的操作表4-3栏目管理类责任表(续)EditCategoryServlet控制无在控制层中设计DeleteCategoryServet控制无在控制层中设计AddCategoryServlet控制无在控制层中设计4.4控制层设计4.4.1用户登录当用户通过系统前台提供的登录入口登录后台系统时,系统将用户的登录信息提交给登录控制层处理。所以登录控制器必须对用户登录信息进行识别,判断其是否有权限登录到后台系统。用户登录控制器由LoginServlet完成,实现登录控制的静态类图如图4-10。图4-10登录控制静态模型图

43、根据图4-10登录控制静态模型设计,对各个类的责任和功能进行说明。表4-4用户等录控制类责任表名称类型属性责任(或操作)LoginServlet控制无控制用户登录4.4.2新闻管理新闻管理中主要涉及到新闻信息的添加、删除和修改,所以其控制层由AddNewsServlet、DeleteServlet和EditServlet完成。新闻管理静态类图如图4-11。图4-11新闻管理静态模型图根据图4-11新闻管理静态模型设计,对各个类的责任和功能进行说明。表4-5新闻管理控制层静态类责任表名称类型属性责任(或操作)EditNewsServlet控制无对已有新闻编辑的控制DeleteNewsServle

44、t控制无对删除已有新闻的控制AddNewsServlet控制无对添加新闻的控制4.4.3栏目管理栏目管理模块主要对新闻栏目进行修改、删除和添加,此功能模块控制层由EditCategoryServlet、DeleteCategoryServlet和AddCategoryServlet完成。栏目管理静态类图设计如图4-12。图4-12栏目管理静态模型图根据图4-12栏目管理静态模型设计,对各个类的责任和功能进行说明。表4-6栏目管理控制层静态类责任表名称类型属性责任(或操作)EditCategoryServlet控制无对新闻栏目编辑的控制DeleteCategoryServlet控制无对删除新闻栏

45、目的控制AddCategoryServlet控制无对添加新闻栏目的控制4.5数据库设计4.5.1数据库需求分析由于本系统面向的对象有两个:一般用户和系统管理员。所以,数据库需求分析中就要考虑两方面因素。对于一般用户来说,他们所关心的是新闻的浏览。通过系统功能分析,针对一般新闻用户的需求,总结出如下需求信息:(1)每个新闻对应一个HTML文件;(2)每个新闻只能对应一个新闻栏目;(3)每个栏目下可以有多个新闻。(4)每个新闻除了包含新闻的基本信息之外,还得包含新闻所对应的HTML路径信息。对于系统管理员来说,他们所关心的是如何对新闻栏目和新闻的添加、修改和删除。通过分析,针对系统管理员,总结出如

46、下需求信息:(1)管理员可以对新闻栏目进行增、删、改;(2)管理员可以对新闻条目进行增、删、改。4.5.2数据库概念设计根据上面的数据库需求分析,就可以构造出各种实体,以及并根据它们的关系绘制出实体间的E-R图8,为以后的逻辑设计打下基础。如图4-13为本新闻发布系统实体间的E-R图。图4-13实体之间关系的E-R图84.5.3数据库逻辑设计根据数据库需求分析和数据库概念设计,设计如下所示的数据项和数据结构:管理员表(用户名,密码),用户名为主码;栏目表(栏目编号,栏目名称),栏目编号为主码;新闻表(新闻编号,新闻标题,新闻内容,管理员名,所属栏目,发布时间),新闻编号为主码,管理员名和所属栏

47、目为外码;4.5.4数据库表设计数据库逻辑设计完毕后,现在可以将上面的数据库概念结构转化为某种数据库系统所支持的实际数据库模型。本系统使用SQLServer2000数据库。新闻发布系统的数据库中各表的设计结果如下面几个表所示。表4-7管理员Master表序号字段名字段含义类型宽度是否非空备注1UserName管理员用户名char12YKey2Password管理员密码char12Y无表4-8新闻News表序号字段名字段含义类型宽度是否非空备注1newsId新闻编号int4YKey2Title新闻标题char50N无3Content新闻内容char5000N无4UserName新闻作者char1

48、2Y外码5Composedate新闻发布时间datetime8Y无6categoryId新闻栏目编号int4Y外码表4-9栏目Category表序号字段名字段含义类型宽度是否非空备注1categoryId新闻栏目编号int4YKey2categoryName新闻栏目名称char20Y无4.6数据库连接池设计传统的数据库连接传统的数据库连接模式基本上是按以下步骤进行:在主程序(如Servlet、Beans)中建立数据库连接;进行SQL操作,取出数据;断开数据库连接9。数据库连接池的必要性传统的数据库连接模式开发,存在很多问题。首先,要为每次web请求(例如客户浏览一件商品信息)建立一次数据库连接

49、。当有多个用户连接系统的时候,在同一时间有可能会不止一个用户需要数据库连接,在这种情况下,系统开销也是相当大的。连接数据库不仅要开销一定的通讯和内存资源,还必须完成用户验证、安全上下文配置这类任务;同时应用程序还要管理每一个连接,确保这些连接在被使用完后能被正确关闭。这些操作往往成为最耗时的操作,很多时候,一个网站的速度瓶颈可能就在于此,因而对数据库的连接的管理显得特别重要。本系统是一个新闻发布和管理的系统,新闻系统是面向广大阅读新闻的用户的,用户需要阅读新闻时,系统需要从新闻数据库中调出用户需要的新闻条目。如果采用传统的数据库链接模式,那么对于每一个阅读新闻的用户,当他读取新闻时,系统都要为

50、他建立一次数据库连接,而当他退出新闻阅读时,系统释放数据库链接,那么,系统的数据库连接是非常频繁的。这样也会产生上面提到的种种问题,但是,如果采用数据库链接池就方便得多,本系统采用的便是数据库链接池模式对数据库进行连接。4.6.3数据库连接池工作原理数据库连接池实际上是在一个容器对象中建立一定数目的数据库连接对象。当需要使用数据库连接的时候,直接从连接池中取出空闲对象供用户使用。当用户使用完后再把连接对象放回连接池中,以节省重新建立连接对象所花费的时间。工作原理如图4-14所示。初始化数据库连接池Servlet、JavaBeanSQL操作接连回放接连个一取连接1连接2连接n从池中删除该连接使用

51、完后放回池中连接池空闲连接?取出连接数据库二二-1加入新连接到池中1r等待重试使用次数加1连接状态设为忙池的上限?vN是否使用最大次数?使用连接图4-14连接池工作原理图10当连接池工作时,首先,在连接池中应当初始化内含一定数量的连接对象;在使用过程中,如果池中的连接对象不够,可根据需要逐渐加入新的连接对象,但池中的连接对象也不能是无限的,当达到最大连接对象数量时,便不能再往池中添加新的连接对象,如果此时连接对象数量仍然不够,就只能等待别的连接对象释放后再使用,即定义连接池中连接对象的上下界和连接超时时间。定义上下界可根据客户端的情况动态地使用资源,以提高系统的效率。另外,同一个连接对象如果被

52、使用的次数太多,可能会导致该连接对象的不稳定。所以需要设定一个连接对象可使用的最大次数。当使用次数达到最大次数后就将该连接对象关闭并从池中删除。4.6.4具体设计根据连接池的工作原理,本文设计了一个的连接池组件。该连接池组件由两个Java类ConnectionObject和ConnectionPool和一个数据库连接配置文件(dbconfig.txt)构成。其中:ConnectionObject称为连接对象类,用来实现对一个连接对象状态的管理,并为连接池管理类提供服务;ConnectionPool称为连接池管理类,用来实现对连接池的管理和调度;dbconfig.txt称为数据库连接配置文件,存

53、放数据库连接所需要的配置信息,供连接池工作时使用。连接池内部联系类图如图4-15所示。ConnectionPool-driver:string-url:string-username:string-password:string-pool:Vector-connectionPoolSize:int-connectionPoolMaxSize:intconnectionMaxUseCount:inttimeoutintToadPropO:void-initPool():void+ConnectionPool()+finalize():void-findconnectionID():int+rea

54、lse():voidUseConnectionObiect+getFreeConnection():ConnectionObject+getConnection():Connection-connection:Connection-isUse:BooleanuseCount:int+ConnectionObject()+getConnection():+setConnection():vo+isIsUse():Boolean+setIsUse():void+setUseCount():void+getUseCount():int1-addUseCount():void图4-15连接池内部主件联

55、系图4.7小结本章首先进行了系统总体设计,接着按照MVC设计模式的三层结构根据系统需求用例对新闻发布系统功能进行设计,最后设计出系统的数据库并对数据库连接进行了相应的设计。通过本章,系统设计出了用来完成系统用例的业务功能模型以及完成各个用例的类。第5章系统实现根据上一章的设计思路设计用来完成系统用例的业务功能,整个系统按照MVC模式的三个部分以及数据库连接池进行编码实现,分为视图层、控制层、模型层和数据库连接池。由于系统实现的代码量较大限于篇幅,文中仅显示部分代码,具体实现代码参见附件。5.1视图层实现在系统其它视图层部分实现之前,先对那些常用的公共页面模块部分实现。5.1.1公共页面incl

56、ude.jsp是一个包含页面,它包含了一些其它页面可能经常用到的JavaBean包以及一些在其它页面中常用到的参数。具体代码如下:!-开始导入packages-session.jsp的设置主要是方便系统对管理员权限的判定。因为,如果一个用户登录到系统,系统便会给他设定一个session,这个session在他退出系统之前均有效。系统可以通过session来判定用户是否登录,并且,如果某个用户要执行系统某些功能时,系统也可以通过一个session对其进行操作权限的判定。具体代码如下:foot.jsp中包含了其它页面常用到的页面尾部的设计。具体代码如下:vTABLEbgColor=#eeeeeeb

57、order=0width=100%align=centervTBODY新闻管理系统Copyright(c)Elven2007新闻首页本系统的CSS设计了一个CSS样式表(css.css)它主要设置页面中显示的Body结构的样式、超链接A的样式、页面中表格Table样式等的设置。CSS样式表可以使系统整体风格一致。5.1.2前台实现系统前台视图层由index.jsp实现index.jsp仅负责显示新闻栏目和系统已有新闻以及为管理员用户提供一个登录入口。index.jsp页面显示截图如图5-1。图5-1index.jsp页面实现截图5.1.3后台实现系统后台视图层主要由mian.jsp、addne

58、ws.jsp、classmanage.jsp和addclass.jsp组成。mian.jsp是系统后台主页面,是管理员登录到系统所看到的第一个页面。其实现显示截图如图5-2。图5-2main.jsp实现截图addnews.jsp实现新闻的添加。当用户在后台主页面中选择添加新闻按钮时,管理员便进入此页面。其实现截图如图5-3。图5-3addnews.jsp实现截图classmanage.jsp实现新闻栏目的管理,管理员可以在此对进行新闻栏目的相关操作。其实现截图如图5-4。图5-4classmanage.jsp实现截图addclass.jsp是classmanage.jsp的一个子页面,它实现栏

59、目的添加功能。其实现截图如图5-5。图5-5addclass.jsp实现截图5.2模型层实现模型层实现中主要给出了实现功能模块中的各类的功能函数,具体代码见附件。5.2.1新闻显示在前台页面中显示系统已有新闻,需要新闻类News和新闻管理类NewsMgr。在此模块中主要实现将新闻数据库中的新闻显示到前台页面中。实现新闻显示的功能函数如下:publicCollectiongetAllNews()查询所有的新闻;publicCollectiongetAllByCategory(intcategoryId)/根据CategoryId得到某栏目所有的新闻;publicNewsgetById(intid

60、)/根据ID得到新闻;publicintgetTotal()计算新闻的总数;publicintgetTotalByCategoryId(intcategoryId)/计算某类别新闻的总数。5.2.2新闻管理新闻管理模块是在系统后台对已有新闻进行编辑和删除以及添加新闻。在新闻管理类中如此实现新闻管理:publicNewsgetById(intid)/根据ID得到新闻;publicvoidmodify(Newsnews)/修改新闻;publicvoiddelete(intid)/删除新闻;publicvoidadd(Newsnews)/添加新闻。5.2.3栏目管理栏目管理模块中,主要实现新闻栏目的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论