基于SSH框架的网上论坛与实现_第1页
基于SSH框架的网上论坛与实现_第2页
基于SSH框架的网上论坛与实现_第3页
基于SSH框架的网上论坛与实现_第4页
基于SSH框架的网上论坛与实现_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

基于SSH框架的网上论坛设计与实现摘要当今社会正处在网络时代,信息化大潮席卷全球,网络正以前所未有的速度在我国普及开来。网站以其独特的优势在信息化的过程中占有重要的一席。为了方便信息的交流,在结合SSH和JAVA技术之下开发了这个快捷、方便、界面友好的交流系统,实现了一个功能相对齐全的网上论坛系统,网友可以自由地提出问题以及帮助他人解决问题,或者交流经验。论坛在Spring+Struts+Hibernate,Spring负责业务逻辑层,Struts负责表示层,Hibernate负责数据持久层。论坛采用B/S的体系结构,人们可以通过浏览器访问网站的主页,保证了效劳器的平安。数据库采用了功能强大的oracle数据库。该论坛功能较齐全,在这里可以自由地发表自己的观点和对论坛的主题发表意见,也可以对网友的问题及时地解决,获取对自己有用的知识。该论坛还有一些特殊的功能,比方强大的搜索功能、在线人员显示等。本网站严格按照软件工程开发的流程进行开发,对于网站开发的可行性分析、需求分析、概要设计、详细设计以及对网站的测试与维护都有详细的论述和实现过程。本系统的优点是它具有强大的可维护性以及可扩展性,适合网民创立自己的中小型BBS论坛!关键词:BBS,S.S.H(Struts,Hibernate,Spring),JAVA,JSP,SQLSSHframeworkforthedesignofweb-basedforumABSTRACTToday'ssocietyisintheInternetage,informationtechnologytidesweepingtheworld,thenetworkisgrowingatanunprecedentedrateinourpopularity.Sitewithitsuniqueadvantagesoccupiesanimportantseatsintheinformationprocess.Inordertofacilitatetheexchangeofinformation,underthecombinedSSHandJAVAtechnologydevelopedthisfast,convenientanduser-friendlyACsystemimplementsafunctionrelativelycompletesystemofonlineforums,usersarefreetoaskquestionsandhelpotherssolveproblems,ortheexchangeofexperiences.

ForumSpring+Struts+Hibernate,Springresponsibleforthebusinesslogiclayer,Strutsresponsibleforthepresentationlayer,Hibernatefordatapersistencelayer.ForumarchitectureusingB/S,peoplecanvisitthewebsiteofthebrowserhomepage,toensurethesafetyoftheserver.Databaseusingapowerfuloracledatabase.Theforumfeaturesmorecomplete,whereyoucanfreelyexpresstheirviewsandexpresstheirviewsonthethemeoftheforum,youcanalsosolvetheproblemofusersinatimelymanner,accesstousefulknowledgeforthemselves.Theforumtherearesomespecialfeatures,suchaspowerfulsearchfeatures,onlinestaffdisplay.Thissiteinstrictaccordancewiththesoftwaredevelopmentprocessfordevelopmentprojects,thefeasibilityanalysisofsitedevelopment,needsanalysis,outlinedesign,detaileddesign,andtestingandmaintenanceofthesitehavediscussedindetailandimplementationprocess.

Advantageofthissystemisthatithasapowerfulmaintainabilityandscalability,idealforuserstocreatetheirownsmallandmediumBBSforums!KEYWORDS:BBS,SSH(Struts,Hibernate,Spring),JAVA,,JSP,SQL目录前言1第1章系统概述31.1总体概述31.2开发目的41.3开发背景4第2章系统分析62.1技术可行性分析62.1.1开发语言综述62.1.2SSH框架介绍72.1.3系统层次设计112.1.4技术可行性综述112.2时间可行性112.3系统需求分析112.3.1系统开发运行环境122.3.2功能描述122.3.3数据流程14第3章系统设计163.1数据库设计163.1.1概念模型设计(E-R图)163.1.2数据库表以及关系建立173.1.3数据库结构详细设计173.2系统概要设计193.2.1功能模块设计193.2.2系统界面设计223.2.3系统组件设计23第4章系统实现264.1系统框架实现264.1.1底层数据库建立264.1.2持久化层的建立(hibernate)274.1.3业务逻辑层的建立274.2系统功能模块实现284.2.1用户模块实现304.2.2帖子模块实现334.2.3后台管理员模块实现36第5章系统的调试与测试375.1测试概述375.1.1软件测试目的375.1.2软件测试的任务385.1.3测试环境385.2单元测试395.2.1黑盒测试395.2.2白盒测试395.2.3模块接口测试415.3集成测试415.2.3自顶向下集成425.2.3确认测试标准42结论43谢辞44参考文献45外文资料翻译46前言当今社会正处于网络时代,信息化大潮席卷全球,网络正也前所未有的速度在我国普及开来。网站以其独特的优势在信息化的过程中占有重要的一席。随着Internet技术的不断开展,以及用户群爆炸性地增长,网络也不再仅仅是信息的被动获取来源,更成为人们探讨问题、交换观点的场所,其中,网上论坛扮演了极其重要的角色,也常被人简称为BBS。随着时间的推移,论坛站点中积存了丰富的信息资源,不但有各类技术资料和新闻文档,还包含着用户的判断和评论,论坛站点己成为Web信息库的重要组成局部。自网上论坛诞生20多年以来,随着Web技术的开展,已经由原来简单的电子公告板系统开展为功能丰富的网上论坛和虚拟社区模式。各种论坛随着网络迅速开展,几乎充实着生活工作的每一个方面,无论是商界、政界,还是娱乐界,都有各种论坛。国内就有新浪,腾讯,csdn等大型论坛,这些论坛种类繁多,访问量巨大,有很强的处理和兼容性。国外也有mylot,icq,myspace,orkut等广受欢送的论坛,这些论坛大都专业性比拟强没有像国内论坛那样有很多的板块,而是一个论坛根本上就讨论一种话题。论坛可以向网友提供开放性的分类专题讨论区效劳,可以在此发表自己的某些观感、交流某些技术、经验乃至人生的感悟与忧欢。网友亦可在此答复网友们提出的问题或发布某些消息。论坛已成为现代人沟通和获取信息的重要组成局部,论坛提供给我们的不再只是一个获取信息的来源,而是一个可以相互交流的空间,网络论坛也以其巨大影响力对人们的生活产生了不可替代的影响。但是也存在监管不到位,不良信息不能被及时清理等问题。目前国内外大型论坛的制作水平都很高,根本上可以代表现在网上论坛制作的最高水平,但是也仍然存在很多缺乏,国内论坛大都存在页面内容过多,无法快速找到有用信息,注册不够人性化等问题,国外论坛更新速度不够快,主界面上论坛的入口比拟难发现,反倒是其他的像新闻之类的信息占据了很大一局部,发帖的时候能够提供的选项也比拟少,不像国内论坛那样会把帖子所属的内容标出来。本人设计的网上论坛主要是基于SSH框架,采用oracle数据库改良了上述论坛的缺乏,本系统采用hibernate+strust+spring架构,数据库采用oracle,使用spring的配置文件applicationcontext.XML连接数据库,使用诸如dao(DataAccessObject)的形式进行数据库操作,在dao中实现对数据表的增删改查。让网友能够及时的参与话题的讨论,自由地发表自己的意见和观点。网友们也可以展开多人讨论,使人们能够便捷地进行交流。另外本论坛也可以通过后台管理及时地更新论坛内容,让网友能够在第一时间从论坛中获取某一技术和行业的开展动态和最新信息。第1章系统概述总体概述进入21世纪,计算机技术开始迅速地向着网络化、集成化的方向开展。传统的单机版应用软件正在慢慢退出人们的视野,代替的是支持网络、支持多种数据信息的新一代网络版应用软件,而目前网络版软件中存在着两种不同的开展方向,一种是称为客户端-效劳器的C/S结构,这种软件具有运行效率高,结构严谨,效劳器端压力小,平安性好等特点,被广泛运用于局域网中。而另外一种,也是本设计所采用的,那么是被称为浏览器-效劳器的B/S结构,它的特点在于客户端直接采用了功能强大的浏览器软件作为界面,其优点是客户端既不受地域的限制,也受操作平台的限制、网络传输量少,软件开发效率高,不仅适用于局域网,而且更加适用于英特网,而且投资很小、见效也快,用户没有必要进行效劳器方面的投资,而可以去租用,甚至能够免费使用ISP的效劳器资源,因此受到越来越多中小型单位的青睐。随着Internet技术的不断开展,以及用户群爆炸性地增长,网络不再只是信息的被动获取来源,更是成为人们交换观点、探讨问题的场所。其中,网上论坛开始扮演非常重要的角色,伴随着时间的推移,论坛站点中积攒了非常多的信息资源,不仅有各类新闻文档和技术资料,还包含着用户们评论和文章,论坛站点已变成Web信息库的重要组成局部,自从网上论坛诞生20多年以来,随着Web技术的不断开展,己经由原来简单的电子公告板系统逐渐变成了功能强大的虚拟社区模式和网上论坛。各种论坛随着如雨后春笋般地迅速开展起来,几乎充实着生活工作的各个方面,无论是政界、商界,还是娱乐界,都有各种各样的论坛。互联网正逐渐地融入我们的生活,网络提供给我们的不再仅仅是是一个获取信息的来源,而是一个可以相互交流的空间,网上论坛正以它特殊的方式影响和改变着我们的生活。1.2开发目的当今社会正处在网络时代,信息化大潮席卷全球,网络正以前所未有的速度在我国普及开来。网站以其独特的优势在信息化的过程中占有重要的一席。为了方便信息的交流,在结合SSH和JAVA技术之下开发了这个快捷、方便、界面友好的交流系统,实现了一个功能相对齐全的网上论坛系统,网友可以自由地提出问题以及帮助他人解决问题,或者交流经验。论坛在Spring+Struts+Hibernate,Spring负责业务逻辑层,Struts负责表示层,Hibernate负责数据持久层。论坛采用B/S的体系结构,人们可以通过浏览器访问网站的主页,保证了效劳器的平安。数据库采用了功能强大的oracle数据库。该论坛功能较齐全,在这里可以自由地发表自己的观点和对论坛的主题发表意见,也可以对网友的问题及时地解决,获取对自己有用的知识。该论坛还有一些特殊的功能,比方强大的搜索功能、在线人员显示等。本网站严格按照软件工程开发的流程进行开发,对于网站开发的可行性分析、需求分析、概要设计、详细设计以及对网站的测试与维护都有详细的论述和实现过程。1.3开发背景1978年在美国芝加哥开发出一套基于8080芯片的CBBS/Chicago(ComputerizedBulletinBoardSystem/Chicago),此乃最早的一套BBS系统。之后随着苹果电脑的问世,开发出基于苹果机的BulletinBoardSystem和群众信息系统〔PeoplesMessageSystem〕2种BBS系统。1981年IBM个人计算机诞生时,并没有自己的BBS系统。直到1982年,BussLane才用Basic语言为IBM个人计算机编写了一个原型程序。其后经过几番增修,终于在1983年通过CapitalPCUserGroup〔CPCUG〕的CommunicationSpecialInterestGroup用户的努力,改写出了个人计算机系统的BBS。经ThomasMach整理后,终于完成了个人计算机的第1版BBS系统——RBBS-PC。这套BBS系统的最大特色是其源程序全部公开,有利于日后的修改和维护,因此后来在开发其他的BBS系统时都以此为框架,所以RBBS-PC赢得了BBS鼻祖的美称。大约是从1991年开始,国内出现了第一个BBS网站。经过长时间的开展,直到1995年,由于计算机及其外设的大幅降价,BBS才逐渐地被人们所了解。1996年更是以惊人的速度迅猛地开展了起来。国内的BBS站,按其性质划分,大致可以分为2种:一种是商业的BBS站,如新华龙讯网;另一种那么是业余的BBS站,如CSDN。由于使用商业的BBS站需要交纳一笔费用,而商业站所能提供的效劳和业余站相比,并没有什么太大的优势,所以其用户数量并不是很多。而多数业余BBS站的站长,基于个人关系,每天都互相交换电子邮件,渐渐地形成了一个全国性的电子邮件网络ChinaFidoNet〔中国惠多网〕。各地的用户都可以通过本地的业余BBS站与别处网友进行信息。这种跨地域的电子邮件交流就是商业站无法与业余站相抗衡的根本原因。由于业余的BBS站拥有这种优势,所以使用者也都乐意参加。这里“业余〞2字,并不是指这种类型的BBS站所提供的技术水平和效劳是业余的,而是指这类BBS站的性质。一般BBS站都是由志愿者开发的。他们付出的不仅仅是金钱,更多的是精力。他们的目的是为了推动中国计算机网络的健康开展,提高广阔用户的计算机应用水平目前国内的BBS站,大多数还是以大型综合性BBS站为主。伴随着计算机的普及,特别是宽带的普及,BBS将实现进一步的开展。但是,随之而来对专注于专门领域方面的BBS的需求会慢慢增加。尽管BBS站台的数量在不断增长,但BBS的开展过程,也遇到了很多问题。由于国内使用的BBS架站软件,大都是从国外引进的,因此并没有中文说明。尽管有一些站长翻译了一些资料,但是仅靠这点资料是远远不够的。另外,有些站台的设立是相互抄袭,所以在结构上难免有相似之处。而且国内自己开发的BBS网站根本上都还处于最原始的JSPMODEL1模式,这种模式是表示层与控制层合二为一,虽然开发简单,但是扩展性和可维护性很差,这样就在很大程度上限制了BBS站点的开展。基于种情况,MVC模式的SSH框架(Sturts+Spring+hibernate)的BBS论坛就逐渐显现出来,本套论坛的优点在于它具有强大的可扩展性和可维护性,非常适合网民创立自己的中小型BBS论坛!第2章系统分析2.1技术可行性分析2.1.1开发语言综述本系统是用基于面向对象思想的JAVA语言中的J2EE平台进行编写,J2EE平台具有以下优点1.简化结构:J2EE平台支持简化的、基于组件开发模型,由于J2EE基于Java编程语言和J2SE平台,它提供了编写一次,随处运行的可移植性,遵循J2EE标准的所有效劳器都支持该模型。EJB组件使编写应用程序更为简单。尽管EJB体系结构复杂,但应用程序开发人员一般都必再编写访问系统效劳的代码,EJB容器会实现系统级的效劳,例如,事务、平安性等。另外,J2EE还支持异构环境。基于J2EE的应用程序不依赖任何特定操作系统、中间件或硬件,因此,设计合理的基于J2EE的程序只需开发一次就可以部署到各种平台,这在典型的异构企业算环境中是十分关键的。J2EE标准还允许客户订购与J2EE兼容的第三方的现成组件,把其部署到异构环境中,节省了由自己制订整个方案所需的费用。2.提高开发效率:由于组件技术的使用,可以按照开发人员的技能对应用程序开发进行分工,并行开发,提供整体开发效率。例如:图形设计师创立JSP模板,商业逻辑由该领域的专家完成,JSP页面和EJB由Java工程师完成,应用程序的装配和部署由团队中其他的成员完成,其中许多工作可以同时进行,有助于加速应用程序的开发。3.可移植性强:除了Java语言固有的可移植性外,EJB体系结构在Bean和支持该Bean的容器之间提供了一套标准化的应用程序编程接口,这使开发人员能够将Bean从一种操作环境移植到另一种操作环境,而无需重新编写其源代码。4.重用性好:由于在EJB模型中,各个软件组件都是严格别离的,因此,可以从现有的软件组件装配出效劳器端应用程序,这与从现有的JavaBean可以装配出客户端应用程序一样,使软件能够重用。5.易于维护:基于组件的设计简化了应用程序的维护。由于组件可以被独立地更新和替代,通过更新应用程序中特定的组件,新的功能可以被很容易地增加。6.可伸缩性:企业必须要选择一种效劳器端平台,以便满足那些在它们系统上进行商业动作大批新客户。基于J2EE平台的应用程序可被部署到各种操作系统上,例如,可被部署到高端UNIX或其他的大型机系统上。J2EE领域的供给商提供了更为广泛的负载平衡策略,能消除系统中的瓶颈,允许多台效劳器集成部署,实现可高度伸缩的系统,满足未来商业应用的需要。7.被广泛接受:主要的IT供给用商都采纳EJB体系结构,不同供给商的产品只要符合EJB体系结构,就都是可互操作的。8.保护投资:由于企业必须适应新的商业需求,充分利用现有的企业信息系统投资,而不是重新制定,全盘更新方案就变得尤为重要,这样,一个以渐进的〔而不是激进的,全盘否认的〕方式建立在现有系统之上的效劳器平台是大多数公司所希望的。J2EE架构可以充分利用用户有的投资,通过允许将现有的信息系统和资产“包裹〞在J2EE应用程序中,不要求客户更换现有技术。事实上,在关系数据库中存储数据的企业,已经有了一套已具雏形的实体Bean,正等着通过EJB外壳去访问。这之所以成为可能,主要是因为J2EE拥有广泛的业界支持和一些重要的“企业计算〞领域供给商的参与,每一个供给商都对现有的客户提供了不用废弃自己已有投资的升级途径。由于基于J2EE平台的产品几乎能够在任何操作系统和硬件运行,现有的操作系统和硬件也能被保存使用。2.1.2SSH框架介绍SSH为struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体根底架构,负责MVC的别离,在Struts框架的模型局部,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为根本的Java对象,然后编写根本的DAO(DataAccessObjects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。它由以下3个框架构成:1.Struts框架Struts是Apache组织的一个开放源码工程。Struts是一个比拟好的MVC框架,提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP和Customtaglibrary。其根本构成如图2.1所示。图2-1Struts框架工作流程Struts框架〔MVC框架〕的优点如下:(1)实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现。(2)丰富的标签库,大大提高了开发的效率。(3)Struts提供丰富的拦截器实现。(4)通过配置文件,就可以掌握整个系统各个局部之间的关系。(5)异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理。2.Spring框架Spring框架是由于软件开发的复杂性而创立的。Spring使用的是根本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于效劳器端的开发。从简单性、可测试性和松耦合性的角度而言,绝大局部Java应用都可以从Spring中受益。目的:解决企业应用开发的复杂性功能:使用根本的JavaBean代替EJB,并提供了更多的企业应用功能范围:任何Java应用Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。Spring框架由以下7个局部组成图2-2Spring框架构成Spring框架的优点如下:(1)无入侵性〔在业务逻辑代码中感觉不到Spring框架的存在〕。(2)各个组件之间的耦合极为松散。(3)无需程序员自己实现singleton模式。(4)通过AOP,可以实现事务管理和日志管理。(5)整合其他的框架,如:struts框架和hibernate框架。3.Hibernate框架Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。它的构成如下列图所示:图2-3Spring框架构成Hibernate框架〔ORM框架〕的优点如下:(1)对象/关系数据库映射〔ORM〕,使用时只需操纵对象,使开发更加面向对象化。(2)无入侵性。(3)简洁的HQL语句,减少了JDBC与SQL操作数据库的代码量;(4)移植性好。2.1.3系统层次设计本系统根据ssh框架特点,决定使用四层结构,这样做的优点是1.降低模块之间的耦合度。2.提高代码的重用度。表示层业务逻辑层持久化层数据库层表示层业务逻辑层持久化层数据库层2.1.4技术可行性综述综上所述,SSH框架具有优秀的设计思想以及成熟的技术,为系统的开发提供了有效的技术条件。2.2时间可行性本系统的主要难点在于SSH框架的结合使用,而网络上有众多相关资料可供参考,预计本系统在规定时间内能够根本完成。开发方案如下:第5~6周:根据用户需求明确本系统要实现的功能,收集、查阅资料,并分析研究,拓宽知识,进行知识和技术准备。第7~8周:概要设计,划分功能模块和界面设计。第9~11周:详细设计,包括代码设计和数据库设计。第12~14周:对系统进行单元测试,功能测试,性能测试,修改、完善系统。2.3系统需求分析2.3.1系统开发运行环境开发环境:Windows7TomCat7.0JDK1.6硬件要求:Core21.4G512M内存50G硬盘开发语言:Java数据库:Oracle开发工具:Eclipse预期成果:一个基于MVC模式的网上论坛2.3.2功能描述论坛用户大致可以分为普通用户和临时用户两种,这两种用户拥有不同的权限,注册用户可以查看帖子,发帖,回帖,查找,并且可以对自己的资料进行修改,而临时用户只可以浏览帖子系统的用例图如下:普通用户普通用户临时用户浏览帖子发表帖子回复帖子修改资料搜索帖子版主帖子管理用户管理信息管理帖子管理帖子管理用户管理任命版主信息管理管理员图2-4系统用例图本系统是一个基于SHH框架的网上论坛,论坛采用B/S体系结构,人们通过浏览器访问网站的主页,数据库采用了公司常用的oracle,该论坛功能较全,在这里网友可以自由地发表自己的观点和对论坛主题发表意见。该系统主要分为前台和后台两个模块,前台主要功能有:(1)用户注册:只有注册了以后才可以发帖或者回帖。(2)用户登录:注册成为用户以后就可以登录到本论坛。(3)修改信息:用户可是随时更新自己的资料以及修改登录密码。(4)发帖回帖:用户可以发表自己的帖子和回复别人的帖子,甚至是匿名发帖。(5)搜索帖子:输入关键字进行帖子的搜索。(6)屏蔽用户:用户可以屏蔽其他的用户,这样就看不到被屏蔽的用户发的帖子(7)删除帖子:用户只可以删除自己的帖子,版主可以删除别人的帖子,以及自己帖子里的楼层。(8)封禁管理:版主可以封禁不当言论的用户,也可以解封。后台主要功能有:(1)公告管理:管理员可以进行论坛公告的更新和删除。(2)论坛版块管理:设定适宜的版面,增加或者删除板块。(3)用户管理:启用、禁用、删除用户,密码重置。(4)用户权限,给予用户特殊权限,比方版主,让他来帮助维护和管理论坛2.3.3数据流程本系统是为了给广阔用户提供一个网上交流的平台,所以论坛的流程是以用户为中心进行的。数数据流图〔DataFlowDiagram〕:简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。数据流图具有以下两个特性:(1)抽象性:完全舍去了具体的物质,只剩下数据的流动、加工处理与存储。(2)概括性:它可以把信息中的各种不同业务处理过程联系起来,形成一个整体。本论坛系统的数据流程图如下:(4)(5)(7)(6)(5)(8)(9)(3)用户(4)(5)(7)(6)(5)(8)(9)(3)用户查看帖子P2F1帖子信息P3回复帖子P1发表帖子P4搜索帖子P5搜索用户F2用户资料P6修改资料(1)(3)(2)(4)(5)(5)(6)(7)(8)(9)(10)(11)(12)(13)说明:⑴——访问信息,⑵⑶⑽⑾——用户信息,⑷——发表帖子信息,⑸更新帖子信息,⑹搜索信息⑺——获取帖子信息,⑻回复信息,⑼搜索用户,⑿更新用户信息,⒀获取用户资料图2-5数据流程图第3章系统设计3.1数据库设计数数据库设计(DatabaseDesign)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求〔信息要求和处理要求〕。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。数据库和设计概述1.数据库是信息系统的核心和根底,把信息系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。

2.数据库是信息系统的各个局部能否紧密地结合在一起以及如何结合的关键所在。

3.数据库设计是信息系统开发和建设的重要组成局部。3.1.1概念模型设计(E-R图)E-R模型的根本概念E-R图也称实体-联系图(EntityRelationshipDiagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。实体-联系模型〔简称E-R模型〕是由P.P.Chen于1976年首先提出的。它提供不受任何DBMS约束的面向用户的表达方法,在数据库设计中被广泛用作数据建模的工具。E-R数据模型问世后,经历了许多修改和扩充。ER图由不同实体类型、关系、特性和类型构成。实体是用户的实际对象,有时可能会更加抽象,但必须要有业务的意义。

1.属性:事物的特性。2.实体:现实世界中的事物。3.联系:现实世界中事物间的关系。实体集的关系有一对一、一对多、多对多的联系。本系统的E-R图:图3-1系统E-R图数据库表以及关系建立根据以上步骤建立表1.用户信息表2.主题表3.回帖表4.板块表3.1.3数据库结构详细设计1.用户信息表用户信息表用来存放用户名,密码,用户类型,用户id,创立时间,登陆次数,最后登录时间等信息表3-1用户信息表字段名数据类型长度主键外键说明BbsidInt0是否用户idUsernameVarchar20否否用户名PasswordVarchar20否否密码CreatedateDate0否否创立时间LogincountInt0否否登陆次数IsonlineBoolean0否否是否在线ActorInt0否否用户类型2.主题表主题表用来存放用户所发表的主题帖,包括有用户id,帖子标题,帖子内容,创立时间,帖子类型,浏览量等信息表3-2主题表字段名数据类型长度主键外键说明PostidInt是否帖子idPosttitleVarchar200否否帖子标题UseridInt否否用户idPostcontentVarchar2000否否帖子内容ForumidInt否否所属板块CreatedateDate否否创立时间BrowsecountInt否否浏览量3.回帖表回帖表用来存放用户所回复的帖子的信息,包括用户id,回复内容,回复时间,主题帖id等信息表3-3回帖表字段名数据类型长度主键外键说明ReplyidInt是否回帖idPostidInt否否所属帖idUseridInt否否发帖人idReplydateDate否否回帖日期Replycontentvarchar2000否否回帖内容4.板块表板块表是用来存放论坛板块的信息,包括有板块名称,板块描述,版主信息,图片路径等。表3-4板块表字段名数据类型长度主键外键说明ForumidInt是否板块idForunnameVarchar20否否板块名称ForumdescVarchar50否否板块描述MderatoridInt否否版主idImagepsthVarchar100否否图片路径3.2系统概要设计概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,概要设计建立的是目标系统的逻辑模型,与计算机无关。3.2.1功能模块设计本系统主要有三大模块,他们分别是用户模块,帖子模块和后台管理模块。本系统的功能层次图如图3.2所示论坛系统论坛系统帖子模块用户模块后台管理用户注册用户登录资料修改帖子回复帖子查找帖子发表 用户管理 帖子管理论坛管理图3-2系统功能层次图如图3.2系统实现了如下的功能.1.用户模块此模块用来实现用户的注册登陆和用户资料的修改。(1)用户登陆模块用户可以通过此模块对论坛进行登陆,登陆后便拥有普通用户的所有权限,比方发帖回帖,修改资料等等(2)用户注册模块游客可以通过此模块进行用户的注册,注册成功后便可登陆论坛,使用普通用户功能.(3)资料修改模块注册成功的用户在登录以后可以通过此模块对用户的根本资料进行修改。2.帖子模块(1)帖子发表模块用户在登录成功以后,可以在论坛中发表自己的主题帖,发表成功后,其他用户就可以在相应的板块查看到发表的帖子,并可以对其进行回复等操作。(2)帖子回复模块用户在发表完帖子后,其他用户便可在相应板块查看到帖子,并可以在帖子中对已发表的帖子进行回复。(3)帖子查找模块用户根据帖子的标题对相关的帖子进行查找。查找到以后可以进入帖子进行具体操作。3.后台管理(1)用户管理模块该模块用于管理员对用户的操作,比方封禁和解封用户,删除和修改用户等。(2)帖子管理模块帖子管理模块是用于管理员对帖子进行管理的模块,如果管理员发现有不当言论或者违反规定的帖子,可以对帖子进行删除,相反如果看到优秀的帖子,那么可以对帖子进行置顶,加精等操作。帖子管理模块帖子管理模块帖子删除帖子置顶帖子加精图3-3帖子管理模块功能层次图(3)论坛管理模块.管理员通过该模块可以进行论坛版块的添加删除等操作。3.2.2系统界面设计对于系统来说,用户界面设计将非常重要,因为一个交互良好的界面能够加深浏览者的印象.设计的实现大致上可以分为两个局部。第一个局部为站点的规划以及草图的绘制。第二局部为网页的制作,这一部份要在计算机上完成。设计首页的第一步是设计版面布局。我们可以将网页看作传统的报刊杂志来进行编辑。这里面有文字、图像乃至动画,我们所需要做的就是以适合的方式将图片和文字进行排版。网站设计是有原那么的,无论使用何种方法对页面中的元素进行组合,都一定得要遵循五个原那么:分割、统一、连贯、比照以及和谐。分割是指将页面分成假设干小块,每一个小块都有不同的视觉效果,这样可以使观者一目了然即使是在信息量很多的时候,使观者能够在短时间内掌握自己想要的信息。分割不仅是表现形式的需要,换个角度来讲,分割也可以被视是为对于页面内容的一种分类的归纳。统一是指设计页面的整体性和一致性。网页的整体效果是至关重要的,在设计中切勿将各个块孤立,那样只会让页面变得散乱。连贯是指要注意页面的相互关系。设计中要学会利用各组成局部在表现形式上的相互照应以及内容上的内在联系,并且要注意网页设计风格的一致性,从而实现视觉上和心理上的连贯,使整个页面各个局部衔接的极为自然,犹如一气呵成。比照就是通过矛盾和冲突,使设计变得更加富有生气。比照手法很多,比方曲与直、多与少、虚与实、粗与细、黑与白、长与短、疏与密、主与次、动与静、美与丑等等。但是在使用比照的时候应慎重,比照过强可能会破坏美感,影响统一。和谐是指整个页面符合美的法那么。如果一件设计作品仅仅是形状、线条色彩的随意混合,那么这个作品不但没有活力,而且也无法实现视觉设计的传达功能。和谐不但要看结构与形式,而且也要看作品的视觉效果是否可以与人的视觉感受形成一种沟通,从而产生心灵上的共鸣。这是设计能否成功的关键。最后简单设计系统的主要界面。图3-4主界面3.2.3系统组件设计在整个系统中,为了解决诸如中文显示乱码,为登录就进入页面等的问题,本系统需要设计一些组件,来解决相关的问题。1.过滤器组件:Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但是也会带来中文乱码的问题。为了解决此类问题,前台页面的值在传到后台以后必须设置它的编码格式。每次请求和响应到达客户和效劳器端时,都先经过此过滤器对字符进行过滤,过滤器中对于接收到的字符进行统一编码。用户发送请求用户发送请求用户过滤器效劳器返回响应图3-5字符过滤器原理图2.权限管理组件论坛中有许多的权限,比方游客只能查看帖子而不能发帖和回帖,而即使登陆的用户,也只能对自己的资料和帖子进行操作。为解决此类问题,本系统是通过检查session中保存的用户信息,判断当用户登陆的用户是否是普通用户,根据不同的情况让用户拥有不同的权限。YN用户对论坛操作YN用户对论坛操作用户是否通过不显示效劳器判断权限NY图3-6权限判断流程3.JSP标签组件本系统是基于MVC模式架构,所以在JSP网页中不该存放过多的逻辑判断,当本系统JSP网页必须要有逻辑判断的话,本系统提供了一些JSP标签来替代这些逻辑代码。第4章系统实现程序设计又称编码,是详细设计之后的阶段,这个阶段的主要任务是选定特定的程序设计语言,把经过概要设计和详细设计所得到的以程序设计说明书中所表达的信息处理过程描述后,转换成能够在计算机上运行程序。4.1系统框架实现在系统的整体设计中,本系统采取了三层结构.这样结构的优点在于灵活性,可移植性和可维护性。每个层在处理程序上都应该有一项明确的责任,模块与模块之间联系很少,实现了程序设计的高内聚低耦合。图4-1SSH框架的结合使用底层数据库建立在数据库选用中,本系统采用了功能强大的的Oracale数据库,而在数据库的设计中,前文已经确立了表结构.根据这些就可以创立一个数据库,在数据库创立成功并且连接好以后,就可以创立表。进入相应数据库,使用PLSQLDeveloper工具,依次创立以下表结构。bbsuser用户信息表forum论坛板块表post主题表replypost回帖表持久化层的建立(hibernate)Hibernate为java提供了OR持久化机制和查询效劳,还给已经熟悉SQL和JDBCAPI的Java开发者一个学习桥梁,让他们学习起来更加方便。Hibernate的持久对象是基于Javacollections和POJO。此外系统要建立Hibernate的持久层,首先要把BO持久化。Hibernate是通过POJO工作的,所以数据对象需要给所有的fileds加上getter,setter方法。本系统可以在com.service目录下找到xml文件。Hibernate配置文件的作用是用来告诉程序应该连接哪个数据库,使用哪个连接池,加载哪些持久对象等。而Session接口是用来完成Selecting,Saving,Delete和Updating这些操作。4.1.3业务逻辑层的建立本系统的业务逻辑是由struts中的Action进行判断的,比方处理登录业务的时候就会建立一个LoginAction类来进行逻辑判断,而一些关联的映射。从编码的视角来看,这层是最容易被无视的一层。却往往在持久层周围看到这些业务处理的代码,这其实是不正确的,因为它使程序代码的紧密偶合,这样一来,随着时间推移这些代码就会变得很难维护。幸好针对这一问题本系统可以使用Spring框架来解决spring框架都着手于“依赖注射〞(dependencyinjection)等方式供选择。Spring把程序中所涉及到包含业务逻辑和Dao的Objects——例如transactionmanagementhandler〔事物管理控制〕、ObjectFactoris(对象工厂)、serviceobjects〔效劳组件〕——都通过XML来配置联系起来。这种方式让你的对象从创立中释放了出来,降低了偶合度。每个对象都可以在Spring配置信息applicationContext.xml中用<bean>标签引用。在这里mySessionFactory引用了HibernateSessionFactory,而myTransactionManager引用了HibernateTransactionManage。代码中myTransactionMangerBean有个sessionFactory属性HibernateTransactionManager有个sessionFactorysetter和getter方法,这是用来在Spring启动的时候实现"依赖注入"〔dependencyinjection〕的。在sessionFactory属性里引用mySessionFactory。这两个对象在Spring容器初始化后就被组装了起来了。这样的搭配让你从单例〔singletonobjects〕和工厂〔factories〕中解放了出来,降低了代码的维护代价。mySessionFactory.的两个属性,分别是用来注入mappingResources和hibernatePropertes的。图4.2Spring基于配置文件,将各个Bean搭建在一起。4.2系统功能模块实现登录模块代码:BBSUserServicebus=newBBSUserService(); Stringusername=request.getParameter("username")==null?"":request.getParameter("username"); Stringpassword=request.getParameter("password")==null?"":request.getParameter("password"); Stringautologin=request.getParameter("autologin")==null?"":request.getParameter("autologin"); Stringrefferurl=(String)request.getSession().getAttribute("refferurl");intexpiretime=60*10; BBSUseruser=bus.Login(username,password);if(user!=null){ request.getSession().setAttribute("user",user); request.getSession().setAttribute("username",username); request.getSession().setAttribute("userid",user.getBbsid()); Stringvalue=username+":"+password+":"+(System.currentTimeMillis()+expiretime*1000);if(autologin.equals("yes")){ Cookiecookie=newCookie("AutoLogin",URLEncoder.encode(value,"UTF-8")); cookie.setMaxAge(expiretime); cookie.setPath(getServletContext().getContextPath()); response.addCookie(cookie); } System.outprintln(""+request.getContextPath()+refferurl); }else{"); request.getRequestDispatcher(refferurl).forward(request,response); }用户管理代码:Stringuserid=request.getParameter("userid")==null?"":request.getParameter("userid"); PrintWriterout=response.getWriter(); BBSUserServicebus=newBBSUserService(); System.out.println("userid"+userid);if(!userid.equals("")){booleanb=bus.deleteUser(Integer.parseInt(userid));if(b==true){ Stringstr="[{'flag':'true',}]"; JSONArrayjsonEmp=JSONArray.fromObject(str); out.print(jsonEmp); } }4.2.1用户模块实现在用户模块的设计中,首先完成的是业务逻辑层的相应action类的编写,之后在通过具体的需要编写相应的数据库访问DAO。在一切结束之后,从业务逻辑类和DAO中抽象出接口,通过spring的IOC对接口进行对象注入。1.用户注册图4-3用户注册当用户在进行注册的时候,通过onfoucs事件及onblur事件来激活包含Ajax的方法,将数据传到后台然后跟数据库里的数据作比照,进行验证用户和邮箱是否已存在,如果已经存在那么无法完成注册。注册的时候还要输入验证码,验证码是由后台生成以后放到session中,然后验证的时候也是将数据通过Ajax传回到后台进行验证。用户登录:2.用户登录图4-4用户登录用户登录的时候首先会判断session中是否有用户信息,如果没有那么读取cookie里边的信息,如果cookie中有而且信息正确就会把cookie里的信息放到session中,这样就自动登录了。图4-5用户模块功能流程图3.用户空间图4-3版主的空间图4-3普通空间用户登录成功以后可以进入自己的空间里,空间里可以查看自己的个人资料,发表的主题以及回复的帖子。如果是版主的话还可以进行帖子和用户的管理,也就是帖子的加精置顶,用户的封禁等等。如果不是版主的话帖子管理和用户管理是会被隐藏的。4.2.2帖子模块实现帖子模块的完成流程和会员模块类似,都是先根据JSP网页,建立相映的Action逻辑判断类,之后建立和帖子有关的数据库访问DAO,最后抽象出接口进行依赖注入,编写帖子模块首先遇到的难点是分页,在进行了一些参考学习后,本系统提供了分页的功能。intpage当前页数intperPageNum本页显示的帖子数目intpagecount总页数intpagebegin本页首个帖子序号通过这四个属性以及数据库语句“select*from(selecttemp.*,rownumrnfrom(select*frompostwhereposttitlelike?andsubforumid=?)tempwhererownum<=")).append(pageBegin+pageSize).append(")").append("wherern>").append(pageBegin).toString()〞就能进行分页了。图4-4分页效果图当用户进入某论坛时,就会显示出分页信息,并且把相关的帖子封装到response响应中,发送给用户.当我们每次查看某个帖子,或回复某个帖子时,回复和查看数量都会增加,但是查看数量一次会话只会增加一个,这样才可以真正统计有多少不同用户进行了查看。帖子模块还有一个重要功能就是发帖:图4-5发帖图发帖的时候既有图片又有文字而且还有段落格式,为此用到了现在很流行而且功能强大的ckeditor编辑器,这个编辑器能够将textarea中输入的内容转换成html语言,将生成的html语言存入数据库,这样就解决了上述问题。图4-6帖子模块功能流程图4.2.3后台管理员模块实现后台管理模块是管理员对论坛进行管理的平台,在此模块实现的过程中,最重要的一点就是权限的控制,只有管理员的身份才可以对此模块进行操作。和版主相比,管理员那么可以管理所有的用户帖子以及板块。管理员可以在此模块中主要完成对帖子和会员的管理,管理员可以通过用户的用户名对其进行搜索,从而实现管理。图4-7管理员功能界面图4-8后台模块功能图第5章系统的调试与测试5.1测试概述软件测试目的软件测试的目的是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试,以最少的人力和时间发现潜在的各种错误和缺陷。应根据开发各阶段的需求、设计等文档或程序的内部结构精心设计测试用例,并利用这些实例来运行程序,以便发现错误。信息系统测试应包括软件测试、硬件测试和网络测试。硬件测试、网络测试可以根据具体的性能指标来进行,此处所说的测试更多的是指软件测试。系统测试是保证系统质量和可靠性的关键步骤,是对系统开发过程中的系统分析系统设计和实施的最后复查。根据测试的概念和目的,在进行信息系统测试时应遵循以根本原那么。应尽早并不断地进行测试。测试不是在应用系统开发完之后才进行的。由于原始问题的复杂性、开发各阶段的多样性以及参加人员之间的协调等因素,使得毛开发各个阶段都有可能出现错误。因此测试应贯穿在开发的各个阶段,尽早纠正错误,消除隐患。测试工作应该防止由原开发软件的人或小组承当,一方面,开发人员往往不愿召认自己的工作,总认为自己开发的软件没有错误;另一方面,开发人员的错误很对由本人测试出来,很容易根据自己编程的思路来制定测试思路,具有局限性。测试工作应由专门人员来进行,这样会更客观,更有效。设计测试方案的时候,不仅要确定输入数据,而且要根据系统功能确定预期的输出结果。将实际输出结果与预期结果相比拟就能发现测试对象是否正确。在设计测试用例时,不仅要设计有效合理的输入条件,也要包含不合理、失效的输入条件。测试的时候,人们往往习惯按照合理的、正常的情况进行测试,而忽略了对异常、不合理、意想不到的情况进行测试,而这些可能就是隐患。在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做的事。多余的工作会带来副作用,影响程序的效率,有时会带来潜在的危害或错误。严格按照测试方案来进行,防止测试的随意性。测试方案应包括测试内容、进度安排、人员安排、测试环境、测试工具和测试资料等。严格的按照测试方案可以;认证进度,使各方面都得以协调进行。妥善保存测试方案、测试用例,作为软件文档的组成局部,为维护提供方便。软件测试的任务1、寻找Bug。

2、防止软件开发过程中的缺陷。

3、衡量软件的品质。

4、关注用户的需求。5.1.3测试环境Apache提供的Web效劳器Tomcat7.0使得用户可以在Windows2000以上操作系统下发布自己设计的动态网页。因此对论坛的调试工作主要是利用Tomcat7.0的强大功能在本机下完成的。为了在本机下浏览Web页面,首先在创立该系统的站点上〔该系统使用的是Web的默认站点〕将IP地址设定为127.0.0.1,它的缺省域名值为localhost。然后向浏览器输入本地动态网页的URL,Web效劳器在收到浏览器传送的URL之后找到网页文件,并在效劳器端执行该文件后将此文件以HTML文件的形式返回该浏览器。5.2单元测试黑盒测试在单元测试中分别对用户信息模块,帖子模块和后台管理模块进行分别测试.首先对各个模块进行黑盒测试,在各种条件下运行模块是否能正常运行,比方还没有登陆就发帖,没有权限发帖等等。图5-1测试未登录发帖图5-2账号被封禁发帖白盒测试白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。这一方法是把测试对象看作一个翻开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。表5-1登陆测试用例测试用例描述操作过程及数据预期结果用例类型按不同

温馨提示

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

评论

0/150

提交评论