《参考基于j2eejava2platformenterpriseeditionbbs论坛系统毕业设计说.doc》由会员分享,可在线阅读,更多相关《参考基于j2eejava2platformenterpriseeditionbbs论坛系统毕业设计说.doc(58页珍藏版)》请在三一办公上搜索。
1、 计算机与通信学院 本科生毕业设计说明书 基于J2EE的网上论坛系统作 者: 乔 柏 学 号: 07500227 专 业: 信息与计算科学班 级: 07级2班 指导教师: 马维俊 答辩时间: 2011年6月 基于J2EE的网上论坛系统BBS System Based On J2EE乔柏(Qiao Bai)07500227前 言Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。作为Internet上一种先进的,易于被人们所接受的信息检索手段,World Wide Web(简称WWW)发展十分迅速,成为目前世界上最大的信息资源宝库。据估计,目前I
2、nternet上已有上百万个Web站点,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,建设一个好的Web站点对于一个机构的发展十分重要。近年来,随着网络用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术在Internet中的广泛应用,Web站点向用户提供的服务将越来越丰富,越来越人性化。论坛的发展也如同网络,雨后春笋般的出现,并迅速的发展壮大。论坛(BBS)的英文全称是Bulletin Board System,翻译为中文就是“电子布告栏系统”。BBS最早是用来公布股市价格等类信息的,当时BBS连文件传输的功能都没有,而且只能在
3、苹果机上运行。早期的BBS与一般街头和校园内的公告板性质相同,只不过是通过来传播或获得消息而已。一直到开始普及之后,有些人尝试将苹果计算机上的BBS转移到个人计算机上,BBS才开始渐渐普及开来。近些年来,由于爱好者们的努力,BBS的功能得到了很大的扩充。现在的论坛几乎涵盖了我们生活的各个方面,几乎每一个人都可以找到自己感兴趣或者需要了解的专题性论坛,而各类网站,综合性门户网站或者功能性专题网站也都青睐于开设自己的论坛,以促进网友之间的交流,增加互动性和丰富网站的内容。目 录摘 要IAbstractII第一章 绪 论11.1 课题研究的目的及意义11.2 国内外研究动态11.3本文的工作2第二章
4、 开发平台与主要技术32.1 开发平台32.1.1 MyEclipse32.1.2Tomcat32.1.3JDK42.2主要技术42.2.1 JSP42.2.2 MVC模型42.2.3 Stuts、Hibernate、AJAX4第三章 需求分析63.1项目背景63.1.1市场背景63.1.2 项目组织63.2 功能概述63.2.1 功能结构63.2.2功能描述73.3系统用例73.4性能需求93.4.1性能环境93.4.2访问入口需求9第四章 总体设计104.1 数据库设计104.4.1 E-R图104.1.2 表的设计114.2时序图13第五章 详细设计155.1系统架构155.2技术体系1
5、65.3控制层的设计165.4业务层的设计175.5持久层的设计185.6权限设计19第六章 测 试206.1测试方案206.1.1 单元测试206.1.2集成测试206.2测试用例21第七章 使用说明227.1 搭建运行环境227.2 操作指南227.2.1后台操作227.2.2 前台操作24第八章 总 结26参考文献27外文原文28译文35致谢41摘 要论坛是互联网上的一个重要应用,其主要功能是给用户一个在网上互相交流、互相学习、互相帮助的平台。用户在BBS站点上可以获得各种信息服务,发布信息,进行讨论,聊天等等。论文主要介绍了基于J2EE技术的网上论坛系统的设计和实现。设计包括数据库设计
6、,系统架构设计,以及前端用户界面设计。系统中普通用户可以完成用户的注册,登录,退出,发帖,跟帖,修改帖子,删除帖子,修改密码等功能。管理员可以对版块进行维护,对帖子和用户进行管理。文中详细描述了系统需求、模块结构及功能。系统使用了MVC的设计模式,程序在业务逻辑、控制逻辑和表现逻辑上实现了分离。系统结构清晰,具有良好的可读性、可扩展性和可维护性。系统使用了Struts框架,呈现层采用了JSP动态网页技术,页面用到了CSS(层叠样式表)以及JavaScript技术。在文字处理方面利用了CKEditor框架。注册页面通过AJAX技术来完成用户名的验证。系统以MyEclipse作为开发工具,用Hib
7、ernate连接后台MySQL数据库,界面设计人性化,操作简单。关键词:论坛系统;J2EE;数据库;设计模式;对象关系模型AbstractBBS is one of the important application on the Internet, its main function is giving Internet users a platform to exchange, communication, learning and help each other. The users can get a variety of information services, release i
8、nformation, discussions, and chat.This paper describes BBS systems design and implementation based on J2EE technology. It mainly includes database design, system architecture design, and UI design. General users in the system can complete the user registration, login, logout, post, reply posts, edit
9、 posts, delete posts, modify password and so on. Administrator can manage the board, while the corresponding post and user management. The paper describes in detail the system requirements, each module structure and function.The system uses MVC design pattern. The procedure in the service logic, the
10、 control logic and performance logic has realized the separation. This system structure is clear, has the very good readability, the extendibility and the maintainability. It used the Struts framework. The view level used the JSP dynamic page technology. The page has used CSS (cascading style sheet)
11、 as well as JavaScript. It used the CKEditor framework in the language processing aspect. Registration page uses the AJAX technology to complete users confirmation. This system using MyEclipse as the development tools, MySQL as back-end database and Hibernate to connect database. It has a friendly i
12、nterface and simple operation features.Keywords: BBS System; J2EE; Database; Design Pattern; Object-Relational Model第一章 绪 论1.1 课题研究的目的及意义Java是一种面向对象的程序设计语言,由于其跨平台的优点,使得Java的发展特别迅速,尤其是在网络方面的发展。网上论坛系统是网络常见的一个应用,用于网络用户的信息交流。如:知名的天涯在线论坛。通过论坛系统,用户可以发表自己的言论(主题贴),其他的用户可以对主题贴进行评论(跟贴)或发表更多的言论(主题贴)。为了把所学的Java
13、知识用于具体的实际运用,同时更深刻的理解互联网的运用,我的毕业设计选择为基于J2EE的网上论坛系统。1.2 国内外研究动态进入二十一世纪,计算机技术迅速向着网络化、集成化方向发展。传统的单机版应用软件正在逐渐退出舞台,取而代之的是支持网络、支持多种数据信息(多媒体)的新一代网络版应用软件,而目前网络版软件中似乎存在着两种不同的趋势,一种是称为客户端服务器的C/S结构应用系统,这类软件具有结构严谨,运行效率高,服务器端压力小,安全性好等优点,被广泛运用于局域网中。而另一种,也是本毕业设计所采用的,是称为浏览器服务器的B/S结构应用系统,它的特点是在客户端直接采用了功能强大的浏览器软件作为界面,其
14、优点在于软件开发效率高,客户端不受操作平台的限制、也不受地域的限制,网络传输量少,即适用于局域网,更适用于Internet,而且投资小、见效快,用户可以不必进行服务器方面的投资,而是去租用,甚至是免费使用ISP的服务器资源,因而受到越来越多中小型单位的青睐。Internet起源于20世纪60年代末、70年代初,当时,美国国防部为了将充斥于军事基地内各种厂商的电脑主机互连,让它们可以进行数据交换以便研究工作顺利进行,于是成立了ARPA网络计划。ARPA计划尝试建设一个网络系统,它可将各种不同厂商的电脑连接起来。随着这个计划的成功,各学术单位,研究机构也纷纷与ARPA计划所建立的ARPANet连接
15、。到了20世纪80年代,Internet这个名词因势产生,它代表着这十年来所构建涵盖全球各地的网络系统。从1990年起,商业使用的Internet在美国急速地扩大,而Internet也从原来属于少数人使用的网络系统转变为普通百姓也能够使用的网络系统。最初的Internet资源服务都还停留在文本模式,1989年,量子物理实验室(CERN)下的一个研究小组着手开发一种全新的Internet服务,它可以在网络上传送图片、文本、影像、声音等多媒体数据。于是由Tim Berners Lee领导的小组开发出了一种主从、分布式的网络服务系统,这就是WWW(World Wide Web),俗称“万维网”。所谓
16、WWW其实就是连上Web服务器访问资源,取得的内容就是所谓的“主页”(HomePage)。进入的网页通常不会只有一页,而是整个网站的内容。“网站”是一种呈现在网络上的新兴媒体,通过Internet已经成为一个实时的,多媒体的信息传播渠道。它的载体主要是电脑,范围覆盖全球各地,没有国界,不分人种,时时刻刻地提供服务。目前,人们渐渐开始把网站称之为广播、电视、报刊以外的第四新闻媒体,以“共享、公平、公正、创新、国际化、团队精神”为特征的网络文明也已逐渐成为这个时代的标志,人们越来越习惯于通过Internet网络获取信息,通过Internet在网站上发表自己对社会对生活的理解和建议。随着网络的普及,
17、论坛作为互联网上的一种应用,在Internet上扮演了一个很重要的觉色。随着互联网技术的发展,论坛内容越来越丰富,深受广大网民的喜爱,因此商业网站对论坛也重视起来,提供与网民交流的平台,同时在线技术支持也在论坛中开展起来。1.3本文的工作通常BBS系统就是提供给注册用户一个平台,会员用户可以通过Internet接入,登录论坛,在这个平台上发表文章、阅读文章、回复文章等等。C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。早期的软件系统多以此作为首
18、选设计标准。B/S结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓N-Tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。结合BBS系统实际需要,本系统采用B/S结构来实现通用BBS的基本功能,如发帖,回帖等。第二章 开发平台与主要
19、技术2.1 开发平台2.1.1 MyEclipseMyEclipse企业级工作平台(MyEclipse Enterprise Workbench,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。MyEclipse是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML、Struts,JSF,CSS,Javascript,Sql,Hibernate等技术。MyEclipse是Eclipse插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以
20、及排错。MyEclipse是一个专门为Eclipse设计的商业插件的完美结合,MyEclipse为Eclipse提供了一个大量私有和开源的java工具的集合,很大程度上解决了各种开源工具的不一致问题,并大大的提高了Java和JSP的开发效率。鉴于MyEclipse有众多优点,本系统选用MyEclipse作为集成开发环境,这给程序的开发带来了许多方便。2.1.2TomcatTomcat服务器是一个免费的开放源代码的Web应用服务器,可以和大部分主流HTTP服务器一起工作,它是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Ap
21、ache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者得喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。Tomcat服务器不但支持运行Servlet和JSP,而且还具备了商业Java Web应用容器的特征,除了能够运行Servlet和JSP外,还具备了作为WEB服务器的特有功能。它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能,而且它还在不断的改进和完善中。本系统在部署应用的过程中选用
22、了Tomcat作为WEB服务器。2.1.3JDKJDK是java的核心,包括了Java运行时环境(Java Runtime Envirnment),一堆Java工具和Java基础类库(rt.jar)。它是一个写Java程序的开发环境。本系统在开发的过程中选用的是JDK1.6版本。2.2主要技术2.2.1 JSPJSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从
23、而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动
24、态网页所需要的功能。2.2.2 MVC模型MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。2.2.3 Stuts、Hibernate、AJAXstruts是开源软件。使用Struts的目的是为了帮助我们
25、减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages 、Servlet、标签库以及面向对象的技术水准。Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。这个框架之所以叫Struts,是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的基础支撑。这也是一个解释Struts在开发Web应用程序中 所扮演的角色的精彩描述。当建立一个物理建
26、筑时,建筑工程师使用支柱为建筑的每一层提供支持。同样,软件工程师使用Struts为业务应用的每一层提供支 持。它的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果 想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Ser
27、vlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。AJAX 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。通过 AJAX,JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信。通过这个对象,JavaScript 可在不重载页面的情况与 Web 服务器交换数据。AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。第三章 需求分析3.
28、1项目背景3.1.1市场背景当今网络技术逐渐渗入社会生活各个层面,随着互联网的普及,人们在网上的活动变得越来越丰富,在网上的交流也越来越平凡。许多公司为了丰富员工的互相交流,让彼此互相沟通,都有其内部的交流平台,这和我们通常用到的BBS交流平台的功能都差不多。而且许多大的网站为了提供会员之间的相互交流,吸引更多的会员注册,都提供了BBS功能,从而使得人们在网上的交流变得丰富多彩。人们可以在BBS上表自己的看法,请教不知道的问题,查看别人发布的信息。因此说BBS网上论坛系统有着广阔的市场背景。3.1.2 项目组织项目来源:兰州理工大学计算机与通信学院指导人员:兰州理工大学计算机与通信学院教师马维
29、俊开发人员:信息与计算科学2班 乔柏主管部门:兰州理工大学计算与通信学院毕业设计审查办公室3.2 功能概述3.2.1 功能结构本系统大致可分为3个模块,分别为:帖子管理模块、用户管理模块、版块管理模块。帖子管理模块是对帖子的操作,包括发表帖子,回复帖子,修改帖子,删除帖子的操作;用户管理模块是对用户权限控制的操作,包括登录,安全退出,注册,修改信息;版块管理模块是对系统版块的维护,包括添加版块,修改版块,删除版块。系统的功能结构图如下:基于J2EE的网上论坛系统帖子管理删除版块修改版块添加版块修改信息用户退出用户登录用户注册删除帖子修改帖子发表帖子版块管理用户管理图3.1 系统功能结构图3.2
30、.2功能描述基于J2EE的网上论坛系统,包括BBS交流系统前台和后台管理系统两个子系统。主要包括:版块管理、用户管理、帖子管理、三个功能模块。版块管理:可以进行添加版块,修改版块,删除版块,添加子版块,修改子版块,删除子版块的操作,这个功能只有管理员才能进行此操作。用户管理:可以进行登录、登出、用户注册、修改信息等功能。帖子管理:可以进行发表帖子,修改帖子,删除帖子,回复帖子的功能。需要注意的是,这些操作都必须在用户登录以后才能进行,而且每个登录的用户只能修改和删除自己的帖子以及回帖,管理员则可以删除所有人的帖子以及回复。3.3系统用例由参与者(Actor)、用例(Use Case)以及它们之
31、间的关系构成的用于描述系统功能的动态视图称为用例图。用例图(User Case)是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。用例图展示了用例之间以及同用例参与者之间是怎样相互联系的。用例图用于对系统、子系统或类的行为进行可视化,使用户能够理解如何使用这些元素,并使开发者能够实现这些元素。BBS交流平台前台用例:前台主要是普通用户登录系统后能进行发帖,回帖,从而相互交流信息,图3.2是系统前台的用例图。图3.2 帖子管理用例图BBS交流平台后台用例:后台是管理员登录系统后主要完成对版块的管理,
32、以及对帖子的管理,图3.3是后台系统的用例图。图3.3 系统后台用例图3.4性能需求3.4.1性能环境操作系统:Windows系列或Linux系列均可。Java虚拟机版本:Windows下或Linux下JDK1.5以上版本。浏览器:支持IE6.0、IE7.0、IE8.0以及FireFox2.0、Firefox3.0WEB服务器:Tomcat 5.5数据库:MYSQL 5.53.4.2访问入口需求前台入口:http:/localhost:8080/bbs/index.jsp后台入口:http:/localhost:8080/bbs/manager/index.jsp第四章 总体设计4.1 数据库
33、设计数据库的设计对一个系统的设计来说,是尤为重要的。好的设计会给系统的开发带来方便,使系统开发快速高效的完成,反之会使系统开发变得非常困难,甚至失败。同时好的设计会减少数据的冗余,提高系统的效率。本系统在设计的过程中,共有五张表,分别是:用户表、角色表、版块表、话题表、回贴表。4.4.1 E-R图E-R模型与人们认识现实世界的相似形,在描述数据库的概念结构或全局逻辑结构时,采用E-R图这种图形化的表示有非常大的好处,一是图形化表示的简单性;二是图形化表示的清晰性。E-R图可以很好的反应各个表之间的关系,下面是此系统数据库设计的E-R图图4.1 系统E-R图4.1.2 表的设计1.用户表(用户I
34、D,用户名,密码,头像,注册时间,性别,角色ID);2.角色表(角色ID,角色名称);3.版块表(版块ID,版块名称,父版块ID);4.话题表(话题ID,话题标题,话题内容,发表话题时间,修改话题时间,所属用户ID,所属版块ID);5.回帖表(回帖ID,回帖内容,回帖时间,修改回帖时间,所属用户ID,所属话题ID)用户表主要保存的是用户信息,其主键是用户ID,在用户表里面有一个外键角色ID参照了角色表。表4.1是用户表的详细情况。表4.1 用户表的设计表名称t_user说 明用户表主 键user_id外 键角色ID参照角色表索 引无唯一用户名字段名称主键类型长度不可为空描述user_idYIn
35、t8Y用户IDuser_nameNvarchar20Y用户名user_pwdNvarchar20Y用户密码user_headNvarchar100N用户头像user_reg_timeNdatetime20N用户注册时间user_genderNInt2N用户性别role_idNInt8N所属角色ID角色表是用来保存系统用到的角色,本系统在这里设计的比较简单,系统只有两个角色,一个角色名为admin另一个角色名为putong。Admin代表的是系统管理员,putong代表的是系统的普通注册用户。表4.2是角色表的详细信息。表4.2 角色表的设计表名称t_role说 明角色表主 键角色ID外 键无参
36、照无索 引无唯一无字段名称主键类型长度不可为空描述role _idYInt8Y角色IDrole _nameNvarchar20Y角色名版块表主要用来保存系统版块信息,其有一个参照自身的外键parent_id,也就是说版块之间有包含关系,parent_id为空时则是一级版块。本系统只设计了两级版块。表4.3是版块表的详细信息。表4.3 版块表的设计表名称t_board说 明版块表主 键board_id外 键父版块ID参照自身索 引无唯一无字段名称主键类型长度不可为空描述board _idYInt8Y版块IDboard _nameNvarchar20Y版块名parent_board_idNvarc
37、har8Y父版块ID话题表主要保存用户发表的话题,它有两个外键,一个是board_id参照了版块表,用于表示此话题属于哪个版块;另外一个是user_id参照了用户表,用于表示此话题属于哪个用户。表4.4是话题表的详细信息。表4.4 话题表的设计表名称t_topic说 明话题表主 键topic_id外 键用户id,版块id参照用户表,版块表索 引无唯一无字段名称主键类型长度不可为空描述topic _idYInt8Y话题IDtopic _titleNvarchar50Y话题标题topic_contentNvarchar1000Y话题内容topic_ publish_timeNdatetime20N
38、话题发表时间topic_ modify_timeNdatetime20N话题修改时间user_idNInt8Y所属用户idboard_idNInt8Y所属版块id回帖表用来保存用户回复话题的回帖,它也有两个外键,一个是topic_id参照了话题表,用来表是此回帖是属于哪个话题下的,另一个是user_id参照了用户表,用来表示该回帖是那个用户发表的,表4.5是回帖表的详细信息。表4.5 回帖表的设计表名称t_reply说 明回帖表主 键reply_id外 键用户id,话题id参照用户表,话题表索 引无唯一无字段名称主键类型长度不可为空描述reply_idYint8Y回帖IDreply_conte
39、ntNvarchar1000Y回帖内容reply_publish_timeNdatetime20Y回帖发表时间reply_modify_timeNdatetime20N回帖修改时间user_idNint8N所属用户idtopic_idNint8Y所属话题id4.2时序图时序图(Sequence Diagram),亦称为序列图或循序图,是一种UML行为图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,时序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。下面以用户发帖为例,介绍一下本系统工作的流程。当用户填写完帖子内容后
40、,会点击发表按钮,此时浏览器向服务器发送一个请求,服务器在接收到请求以后,交给Struts的ActionServlet类来处理,ActionServlet查询Struts-config.xml配置文件,并交给TopicAction类去处理,TopicAction类读取浏览器发送的信息,并创建一个Topic实体对象,然后调用业务层TopicService里的保存帖子的方法,进而调用持久层方法将Topic实体对象持久化到数据库中。当这些工作完成以后,系统将处理结果返回给用户。用户即可看到自己发表的帖子。图4.2是用户发帖过程的时序图。图4.2 用户发帖时序图第五章 详细设计5.1系统架构MVC是一
41、种软件架构的思想,即将一个软件的组成部分划分成三种不同的部分:Model(模型):封装业务逻辑,一方面,要实现具体的业务逻辑,即对业务数据按一定规则进行加工(包括了访问数据库)。另一方面,要对外提供一致的接口,即模型不用考虑谁在调用它。View(视图):实现表示逻辑(即将模型中的数据以一定的方式显示给用户),另外,视图提供UI(可以通过视图提供的界面,提交数据给Model进行处理)。Controller(控制器):协调视图与模型,即视图的请求不再直接提交给模型,而是统一交给控制器,由控制器来分发给合适的模型来处理。反过来,模型处理之后的结果,也不再直接返回给视图,而是提交给控制器,由控制器选择
42、合适的视图,将结果展示给用户。这样做的根本目的是多个视图共享同一个模型。本系统的设计采用了MVC的设计思想,控制器使用了现阶段比较流行的开源框架Struts1来完成。Model使用的是Java代码结合了现阶段比较流行的持久层框架Hibernate,View层由传统的JSP来承担。系统的总体架构图如下:持久层业务层控制层表现层视图层监听过滤控制层数据库持久层数据库帖子管理用户管理版块管理系统描述用户图5.1 系统架构图5.2技术体系系统主要用到的技术有HTML、CSS、JavaScript、AJAX、Struts、Hibernate、CKEditor、MySQL、XML、PROPERTIES、J
43、Query、LOG4J。如下图所示:图5.2 系统技术体系图5.3控制层的设计本系统的控制层使用了Struts1的框架来完成。当用户通过浏览器发送一个请求,服务器接收到这个请求以后先通过过滤器检查用户的权限,并设置系统所使用的编码。在这个处理过程中如果拥有权限,请求就会被传递到Struts的ActionServlet里,如果没有权限则直接给用户一个响应。Struts1在接收到用户请求以后,首先会查看其struts-config.xml文件,看用户请求的是那个Action类,进而交给相应的Action类去处理。Action类处理完成以后将处理结果交给一个JSP视图,并给用户一个响应。本系统共设计
44、了8个Action:UserAction:完成用户管理的相关操作,如注册,登录,退出,修改密码等。BBSAction:主要完成这页面版块数据的加载。BoardAction:主要完成版块管理,如添加版块,修改版块,删除版块。PageAction:用于处理分页,使用了模板设计模式,每个要分页的Action只要继承这个类,并实现里面的getCount方法就可完成分页。ReplyAction:用于处理回帖请求以及修改删除回帖请求。TopicAction:用于处理帖子的相关请求,完成发帖,修改帖子,删除帖子操作。TopicDetailAction:用于显示帖子详情的页面的数据处理。AJAXAction:
45、主要完成对用户名的验证,检验注册时用户名是否存在。下图是控制层的类图:图5.3 控制层类图5.4业务层的设计业务层主要完成系统的业务处理。当控制层在处理用户的请求的过程中,会调用业务层的方法,由业务层完成业务处理,并将处理完得数据返回或者持久化到数据库。通常业务层会调用持久层里德方法和数据库打交道。有的时候一个业务只是为了数据的增删改查,可以直接在控制层调用持久层的方法进行持久化处理,但是为了系统的可扩展性,还是应该定义一个业务层,由业务层在去调用持久层的方法。这样做的好处是方便以后的系统升级,以及数据库事务处理。下面是业务层类图:图5.4 业务层类图5.5持久层的设计持久层主要是对数据库的增
46、、删、改、查。运行在系统内存中的数据是暂时的,系统内存中的数据是随时更新的,当处理完成后,内存中的数据就会释放,于是要将系统中经过处理的有用的信息保存起来,等到以后要用到的时候在从数据库中取出来进行处理。在Java中访问数据是通过JDBC来完成的,JDBC提供了访问各种数据库的接口,至于具体的实现由数据库厂商去实现,因此在连接数据库的过程中要用到数据库厂商提供的驱动。通常数据库采用的是关系模型,而Java是一种面向对象的语言,内存中一切皆是对象。因此直接通过JDBC访问数据库的过程中,要把对象的属性和数据库的字段对应起来,这一过程在一张表字段过多时很容易出错。因此本系统在持久化时选用了现阶段比较流行的开源框架Hibernate,由Hibernate来完成对象和关系的相互映射。本系统在持久层的类图如下: