基于java的在线论坛的设计与实现(30页).doc
-基于java的在线论坛的设计与实现-第 25 页在线论坛的设计与实现摘 要为了方便大家的沟通和获取信息,特构建一个在线论坛系统。该系统以Internet为平台,采用B/S架构,使用Java作为后台开发语言,前台页面采用JSP做显示,同时使用Tiles标签,EL表达式,JavaScript和Ajax等更加方便的实现动态显示数据,底层数据库采用Mysql5.0。系统采用MVC模式设计,Struts1.0的Action作为控制器,使用Hibernate3.0进行数据持久化,从而提高开发效率和系统反应速度。系统对于游客、普通用户、版主、管理员等角色提供了用户注册、登录、浏览帖子及其评论,发帖、回复帖子、引用帖子,帖子管理,后台管理等操作,并对于不同的角色有不同的权限。系统采用富文本编辑器编辑帖子和回复,能够发送图片、附件、视频、Flash等,使我们的交流更加丰富多彩。并且系统具有附件上传,站内信,用户相片设置、主题更改等功能。系统最终实现了一个基于信息交流的中小型在线论坛。关键词: 在线论坛; Struts; Hibernate; JSPABSTRACTTo facilitate the communication and access to information, particularly on building a Online Forum System. The system uses Internet as a platform, the use of B / S structure, using the Java programming language, the page display using JSP to do while using the Tiles tags, EL expressions, JavaScript, and Ajax and so more convenient for dynamic display data, the underlying database By Mysql5.0. System uses the MVC model design, Struts1.0 of Action as a controller, the use of persistent data Hibernate3.0 to improve development efficiency and system response speed. System for tourists, ordinary users, moderators, administrators and other roles provided: user registration, login and post their comments, post, reply to post, reference post, post management, operations management background, and the different roles have different permissions. System uses a rich text editor to edit posts and replies, can send pictures, accessories, video, flash, to make our communication more colorful. And the system has the attachment upload, station information, photos user settings, the theme changes and other functions. Finally implemented a system based on small and medium online forum for information exchange.Key words: Online Forum; Struts; Hibernate; JSP 目 录一、绪论11.1选题背景及意义11.2国内外研究现状11.3在线论坛的发展趋势2二、系统可行性分析42.1系统开发目标42.2系统可行性分析42.2.1技术可行性分析42.2.2经济可行性分析42.2.3开发环境可行性42.3开发环境和相关技术介绍4三、系统需求分析73.1系统功能需求73.2 系统UML建模73.2.1系统用例图的建立73.2.2时序图的建立93.3系统性能需求123.4数据需求12四、系统功能模块分析与设计144.1系统结构分析144.2系统流程分析144.3系统功能模块设计16五、系统数据库设计185.1数据库需求分析185.2实体关系分析185.21 实体模型分析185.12 实体联系分析205.3系统数据库逻辑结构设计215.4 系统数据库的创建23六、系统功能模块详细设计246.1 设计与搭建构架246.1.1设计视图层246.1.2 设计控制层246.1.3 数据访问层256.2 系统功能模块实现266.2.1登录模块的实现266.2.2主界面的实现276.2.3注册模块的实现276.2.4发帖、回复的实现296.2.5上传功能的实现296.2.6后台管理的实现30七、系统测试327.1 前台界面运行效果327.2 后台运行效果33结束语.35参考文献36致 谢.37一、 绪论1.1选题背景及意义在二十一世纪,地球因为互联网的存在,早已变成一个村落。人们在互联网世界里尽情的遨游,享受着Internet带来的无限乐趣。我们习惯了上网看新闻、去论坛看帖、网上购物、撰写自己的网络日志、网上聊天,视频等等。当然搜索引擎也成为了一个重要的角色,它帮我们找到想要的信息。总之,互联网已经成为我们的一种生活方式,一个巨大的知识库。本篇设计论文,围绕如何构建在线论坛系统展开研究。在线论坛系统(BBS)是各种信息交流和传布的场所,它不同于电视报纸等传统的媒体,任何人都可以随便的在BBS上发表自己的言论,不受任何限制。除了可以发表文字信息外可以上传和转贴图片、音乐、Flash,可以选择字号、颜色,还可以选择有趣的表情图案。只要几分钟的注册(甚至不需要)你就能畅游BBS,从中享受无穷的乐趣。本系统就是基于以上功能的一个BBS,旨在为广大网民提供了一个交流平台,能够在这里畅所欲言,发表自己的看法、观点,同时能够结交朋友为生活增添乐趣。1.2国内外研究现状国外研究现状1978年在美国芝加哥开发出一套基于8080芯片的CBBS/Chicago(Computerized Bulletin Board System/Chicago),这是最早的一套BBS系统。在这之后随着苹果机的问世,出现了基于苹果机的Bulletin Board System和大众信息系统(People,s Message System)2种BBS系统。1981年IBM个人计算机诞生时,但并没有自己的BBS系统。而是直到1982年,Buss Lane 才用Basic语言为IBM个人计算机编写了一个原型程序。在1983年通过Capital PC User Group(CPCUG)的Communication Special Interest Group会员的努力,改写出了个人计算机系统的BBS。经Thomas Mach整理后,终于完成了个人计算机的第1版BBS系统RBBS-PC1。这套BBS系统的最大特色是开源,从而有利于日后的修改和维护。在这以后的BBS系统时都以此为框架,所以RBBS-PC赢得了BBS鼻祖的美称。 但在当时,也没有解决站与站之间的通讯。1984年美国的Tom Jonning开发了一套具有电子功能的电子公告版FIDO。由于该软件具有站际连线和自动互传信息的功能,所以站际间彼此可以在一个共同的预定时间传送电子邮件,使得BBS网络化有了一线生机。BBS发展至今,目前世界上主要BBS系统有FidoNet、EggNet、AlterNet和RBBS-Net等等2。国内研究现状从1991年开始,国内出现了第一个BBS站。国内的BBS站,按其性质划分,可以分为2种:一种是商业BBS站,如新华龙讯网;另一种是业余BBS站,如天堂资讯站。从1998年开始,BBS的影响力逐渐突显出来。国内很多年轻人开始不太看电视和报纸,获得信息的主要途径转向网络。在BBS上,大家可以对自己所看到的、听到的、想到的任何一件事做出评论,谁也不知道自己的帖子可能会获得成千上万的人的支持。2006年7月 CNNIC 发布的最新统计表明,43.2% 的中国网民经常使用BBS论坛,论坛社区应用首次超过即时通讯IM ,成为仅次于收发Email的互联网基本应用。而今,BBS上的帖子阅读量几十万余次已经算不上什么惊天动地的大事了。BBS论坛已由原来的娱乐性交流工具转化成了一种新兴媒体:网络媒体。我们的网络媒体在不断发展,不断变革。在不断前进的社会中不断增强其影响力与引导力3。现在大部分论坛都是基于B/S结构实现的。论坛也常被简称为BBS(Bulletin Board System)。随着中国网络的普及和计算机及其外设的大幅度降价,Internet这个概念逐渐深入人心。中国网民的数量呈几何级数量增长,BBS的普及程度也直追Email。每个网站几乎都拥有自己的BBS或者BBS链接,BBS社区提供给用户的服务是全面而且非常友好的,用户在社区中可以根据自己的喜好设置不同的显示风格,根据自己的需求定制各种服务。通过论坛更加快捷的了解企业员工的信息,而建立会员服务的基础是建系论坛管理系统。通过应用该系统可以实现用户与用户间的交流、企业与企业间的信息交互,利用网络经济而又快捷地与外界进行各种信息沟通,取得更有用的信息资源。目前,国内的BBS站正向着个性化和专业化的方向发展。具有代表性的论坛网站有:新浪论坛、DISCUZ论坛 、CCTV论坛、天涯社区、猫扑社区、西祠胡同、人人网等等1.3在线论坛的发展趋势Web2.0的时代已经到来,Web2.0与传统的万维网之间最主要的区别就是用户和用户、产品供应商和企业之间更大的协作。Web1.0时代,论坛社区基本满足网民信息生活的需求,Web2.0时代论坛社区呈现出巨大的商业价值。当论坛用户数量达到引爆点后,社区流量将开始飞快成长,远远大于Web1.0网站的流量增长速度3。伴随着Web2.0时代的到来,BBS将朝着以下两个方面发展:BBS论坛系统将朝协同平台发展。现在动态网站出现一门新技术单点登录。用户可以通过统一身份认证登录系统。通过论坛平台外调其他应用系统的功能接口,完成应用系统的服务。论坛平台还可以集成消息中心,如手机短息、邮件、站内信等等。使BBS系统上升为一个交流平台,同时也是一个协同系统。BBS论坛系统也将朝着图形化方向发展。图形虚拟社区可以非常具体和形象化的模拟整个现实社区的生活,并且具备无限的可扩充性。在论坛中你甚至可以找到和现实生活完全对应的建筑。通过一根网线就可以把远在天南海北的朋友聚到一起。试想,你可以通过外形的不同来区分不同社区的朋友而不是通过ID。你甚至可以通过外形的不同来猜测对方的性格,这些都是传统虚拟社区所不具备的特点。二、 系统可行性分析2.1系统开发目标通过开发该系统完成在线论坛系统的基本功能。包括用户注册、登录、发帖、回复等基本功能,以及版主对帖子的置顶、置精华、屏蔽等操作和管理员对用户、模块、版主的管理。同时系统对于游客、普通用户、版主、管理员必须有不同的权限控制。要求系统能有效、安全、可靠和无误的完成上述操作,并要求界面要简单明了,美观,易于操作,服务器程序利于维护。系统实现后,能部署到学校网络平台中方便同学们交流与学习。2.2系统可行性分析2.2.1技术可行性分析本网站采用Mysql进行后台数据库的管理、操作和维护,用JSP进行前台界面设计,用Java程序语言完成后台数据库的接口、数据的录入、查询、浏览等功能,采用Eclipse作为开发平台,采用Tomcat作为Web应用服务器。根据Java简单易用、完全面向对象、具有平台无关性且安全可靠的特点与Eclipse强大的方便的开发工具,以及他们当前的广泛实际应用,充分说明本网站在技术方面可行。2.2.2经济可行性分析经济可行性分析(能否赢利)是从经济的角度分析网站系统的规划方案有无实现的可能和开发的价值;分析网站系统所带来的经济效益是否超过开发和维护网站所需要的费用。学校已搭建健全的网络硬件设施,开发在线论坛所采用的工具MyEclipse,Mysql,Tomcat都是开源的。所以完成在线论坛的经济可行性完全没有问题。2.2.3开发环境可行性网站开发需要装有windows98系统以上的电脑一台,这样的配置在当今已经不能成为难题,而开发工具都为开源软件,都可以在网上下载。所以开发环境可行性是没有任何问题的。2.3开发环境和相关技术介绍1. JSP技术介绍JSP是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病脚本级执行(现今PHP4也已经在Zend的支持下,实现编译运行)。Sun公司借助自己在Java上的不凡造诣,将Java从Java应用程序和Java Applet之外,又有新的硕果,就是JspJava Server Page。JSP可以在Servlet和JavaBean的支持下,完成功能强大的站点程序。 JSP与Microsoft的ASP、PHP技术非常相似。ASP的编程语言是VBScript之类的脚本语言,JSP使用的是Java ,这是他们最明显的区别。此外,ASP、PHP与JSP还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在ASP下,VBScript代码被ASP引擎解释执行;在JSP下,代码被编译成Servlet并由Java虚拟机执行,这种编译操作仅在对JSP页面的第一次请求时发生4。 事实证明,Java Servlet是一种开发Web应用的理想构架。JSP以Servlet技术为基础,又在许多方面作了改进。利用跨平台运行的JavaBean组件,JSP为分离处理逻辑与显示样式提供了卓越的解决方案。JSP必将成为其它动态网页技术的有力竞争者。2. Struts框架介绍Struts通过提供一个控制器ActionServlet实现了MVC架构,这个控制器可以用来管理JSP页面和其他表现层之间的流程,Strust通过使用ActionForward和ActionMapping来保证表现层之外的控制流决策来实现MVC模式。JSP可以引用一个逻辑目标,控制器组件在运行时提供准确的URL,从而实现页面的控制。Struts组件的功能即其对应经典的MVC组件职责。 ActionForward类:用于用户指向或者视图选择。 ActionForm类:状态改变的数据的封装类,是一个JavaBean。 ActionMapping类:状态改变事件的映射类。 ActionServlet类:控制器,接受用户请求和状态改变,并发出视图选择控制器的一部分、与模型交互、执行状态改变或状态查询,以及告诉Action及ActionServlet下一个选择的视图。从视图层来看,Struts有自己的JSTL标签扩展,主要包括如下3中标签。HTML标签(struts-html.tld):扩展HTML Form的JSP标记。Bean标签(struts-bean.tld):扩展处理JavaBean的JSP标记。Logic标签(struts-logic.tld):扩展测试属性值得JSP标记。3. Hibernate框架介绍Hibernate 是一个开放源码的 ORM 持久层框架。作为优秀的持久层框架实现,Hibernate 框架提供了强大、高性能的对象到关系型数据库的持久化服务,开发人员可以使用面向对象的设计进行持久层开发5。简单的说,Hibernate 只是一个将持久化类与数据库表相映射的工具,每个持久化类实例均对应于数据库表中的一个数据行而已。用户只需直接使用面向对象的方法操作此持久化类实例,即可完成对数据库表数据的插入、删除、修改、读取等操作。4. Tomcat介绍目前支持JSP的应用服务器是较多的,Tomcat是其中较为流行的一个Web服务器,被JavaWorld杂志的编辑选为2001年度最具创新的Java产品,可见其在业界的地位6。 Tomcat是一个免费的开源的Serlvet容器,在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。Tomcat也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。Tomcat是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性,越来越多小型应用网站采用Tomcat作为服务器。5. Mysql数据库介绍MySQL数据库是一个较小型的数据库系统,同时是一个多用户、多线程强壮的SQL数据库服务器,并提供免费的安装软件。由于它对平台环境要求不高,安装方便,适合中小型系统的开发。三、 系统需求分析3.1系统功能需求本系统开发的总体目标是实现一个基于Struts+Hibernate的在线论坛。在该系统中有四类用户:游客、普通用户、版主和管理员。因此系统针对这四类角色提出以下需求:游客的需求:用户注册,查看帖子,查看帖子回复。普通用户的需求:用户登录,发表帖子,回复帖子,查看公告,对自己发表或回复的帖子进行修改或删除。版主的需求:具有普通用户的所有功能,对本讨论区的所有帖子可以进行置顶、置精华、屏蔽、取消置顶、取消屏蔽、取消置精华和删除等操作。管理员的需求:具有普通用户的所有功能,对所有帖子可以修改或删除,修改用户的个人信息或删除用户,修改和删除公告,添加、修改和删除版块,添加和删除版主。3.2 系统UML建模3.2.1系统用例图的建立系统管理的用例如图3.1所示:图3.1系统管理用例图管理员管理会员和版块的用例如图3.2所示图3.2管理员用例图系统用户的用例如图3.3所示图3.3用户用例图3.2.2时序图的建立会员发贴、回帖的时序图如图3.4所示。会员首先使用自己的账号和密码登陆系统,登录模块将会把用户的ID保存系统的缓存中,并展现论坛的分类模块给会员。会员此时可以按照兴趣进入不同的主题讨论区,查看主题文章,并发表新文章和回复新帖,还可以浏览其他类别的主题讨论区。图3.4会员发贴、回帖的时序图注册用户浏览论坛注册的时序图如图3.5所示。未注册的用户首先进入论坛浏览帖子,但不能发贴和回帖。后进入注册页面填写注册信息,等候会员管理模块验证并把新用户的信息添加到数据库,返回注册成功,用户可继续浏览帖子。图3.5注册的时序图论坛管理员管理会员的时序图如图3.6所示。管理员在提交ID给会员管理模块后,可以对会员进行维护(添加、删除或修改)。管理员首先输入自己的账号和密码登录系统,此时会将管理员的ID保存在系统缓存中并提交给会员管理模块。在操作会员的页面中,管理员会根据需要对每个会员进行增删等操作,并将其信息提交给数据库。数据库会对其进行处理,并更新会员信息,至此管理员管理会员操作成功。图3.6管理会员时序图论坛管理员管理论坛分类的时序图如图3.7所示。管理员使用自己的账号和密码登录后,将管理员的ID保存在系统的缓存中并提交给论坛类别管理模块。在显示论坛类别管理的页面中,将显示处理类别相关信息给管理员,管理员在该页面中进行增删等操作后,提交操作的ID给数据库模块处理。数据库模块执行操作后更细结果,并提示更新成功。最后提示处理成功给管理员。图3.7管理论坛时序图论坛管理员管理帖子的时序图如图3.8所示。管理在帖子模块可以对会员发表的帖子进行维护(删除),还可以对帖子进行一些额外的智能操作,比如置顶帖子、设置精华帖子等。更改完成后,都要经过数据库的处理,并更新数据,才能成功。图3.8管理帖子时序图3.3系统性能需求为了保证系统能够长期、安全、稳定、可靠、高效的运行,系统应该满足以下的性能需求: (1)系统处理的准确性和及时性 :系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足用户对信息处理的需求。(2)系统的开放性和系统的可扩充性 :在线论坛系统在开发过程中,应该充分考虑以后的可扩充性,要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。 3.4数据需求用户必须先注册后再登录进入系统,系统用户的数据包括用户名、用户密码、用户类型。用户名在整个系统中是唯一的;用户浏览帖子时,数据应当包括用户名、帖子序号。用户根据某一主题可以发表帖子,发表帖子需要的数据包括用户名、版块编号、版块分类名、发表帖子标题、发表帖子内容、发表帖子类型。用户回复帖子的数据包括用户名、回复帖子序号、回复的内容、版块编号、版块分类名;管理员进入后台管理时,需要数据包括管理员ID、管理员密码、管理员的类型。管理员根据权限的不同分为普通管理员和超级管理员;版主进去后台管理时,需要的数据包括版主名、版主密码、子版块名、版块编号。数据录入和处理的准确性和实时性也非常重要。数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。数据的输入来源是手工输入。手工输入要通过系统界面上的安排系统具有容错性,并且对操作人员要进行系统的培训。在系统中,数据的输入往往是大量的,因此系统要能迅速的处理数据。 四、 系统功能模块分析与设计4.1系统结构分析图4.1系统结构图4.2系统流程分析通过对系统需求分析可以对论坛总体流程做一个分析说明:按照角色划分,首先普通游客进入论坛主页面,可以随意浏览帖子,查看留言,但是不能发表帖子和发表留言,接下来如果普通游客想进一步发表帖子或者发表留言,可以通过用户注册按钮点击进入用户注册界面进行新用户的注册。注册成功之后,此游客就成为本系统的普通用户,享受普通用户的权限(普通用户查询个人信息、用户发表帖子、用户发表留言、用户查看帖子、用户查看留言)。其次本系统的管理员可以通过主页面的管理员登陆进入后台管理系统,包括用户管理、公告的管理、版块的管理。管理员可以设置版块管理员,版块管理员可以在前台对帖子的置顶,置精华,屏蔽等操作 前台业务模块的状态图如图4.2所示图4.2前台业务模块的状态图后台会员管理的状态图如图4.3所示图4.3后台会员管理的状态图后台论坛分类管理的状态图如图4.4所示图4.4后台论坛分类管理的状态图后台帖子管理的状态图如图4.5所示图4.5后台帖子管理的状态图4.3系统功能模块设计根据系统流程分析,以及针对系统游客、普通用户、版主、管理员等角色划分以下功能模块:用户注册:根据用户输入的注册信息,系统进行错误检测,并返回信息提示用户。 用户登录:提供登录界面,验证用户名和密码,判断是否为合法用户。信息显示:可以查看讨论区的文章,以及回复的帖子的内容。信息操作:可以发表主题帖子、回复帖子、修改帖子、删除帖子、置顶帖子、置精华帖,屏蔽帖子等。并对不同的用户给予不同的权限。后台管理:修改用户个人信息、设置版主、删除用户、添加版块、公告管理。系统功能模块图如图4.6所示图4.6系统功能模块图五、 系统数据库设计5.1数据库需求分析根据系统的需求,数据库中需要创建以下数据表。 用户信息表:用于存放注册用户的资料以及用户登录情况。 帖子模块信息表:论坛的主要模块,和模块信息的描述。 帖子信息表:记录用户发布帖子的信息。 公告表:用于记录论坛公告。 用户类型表:用于用户的类型,如管理员,普通用户,模块管理员。5.2实体关系分析5.21 实体模型分析E-R模型是对现实世界的一种抽象。它的主要成分是实体、联系和属性。使用这三种成分,我们可以建立许多应用环境的ER模型。本系统的实体和属性的定义如下:用户表(用户ID、用户密码、用户昵称、性别、用户电子邮箱、用户级别、用户留言、心情、QQ、公司、图片、图片路径、注册时间、最后登录时间)帖子表(帖子编号、帖子标题、帖子作者、帖子内容、发表帖子的时间、回复数、最后回复用户ID、最后回复时间、所属版块号、主题类型)版块表(版块编号、版块名称、版块类型、子版块编号、版主、主题数、文章数、版块描述)公告表(编号、标题、发公告人、公告内容、公告时间)用户信息实体图如图5.1所示图 5.1 用户信息实体图帖子信息实体图如图5.2所示图 5.2帖子信息实体图版块信息实体图如图5.3所示图 5.3 版块信息实体图公告实体图如图5.4所示图 5.4 公告实体图5.12 实体联系分析ER模型的“联系”用于刻画实体之间的关联。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是1:N,M:N,还是1:1等。还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系等等。本系统的ER模型如图5.5所示:1图 5.5 ER模型图5.3系统数据库逻辑结构设计数据库需求分析设计完毕后,现在可以将上面的需求分析转化为数据库系统所支持的实际数据模型,也就是数据库的逻辑结构,可以作出各表。数据库的逻辑结构设计就是把概念结构设计阶段设计好的基本 ER转换为与选用的 DBMS产品所支持的数据模型相符合的逻辑结构。逻辑结构设计的步骤:1. 将概念结构转换为一般的关系、网状、层次模型; 2. 将转换来的关系、网状、层次模型向特定 DBMS 支持下的数据模型转换; 3. 对数据模型进行优化。用户信息表(bbs_user)的逻辑设计如表5-1所示表5-1 用户信息表字段名类型长度是否主键备注idint4YES用户编号(自增列)(不为空)usernamevarchar50用户用户名(不为空)passwordvarchar50用户密码(不为空)emailvarchar50用户emailsexvarchar50用户性别birthdaydatetime,生日qqint20QQjobvarchar50工作homepagevarchar50主页logintimedatetime,100注册时间lasttimedatetime,最后登录时间imagevarchar40相片Imageurlvarchar150相片路径questionvarchar100密码修改提示问题answervarchar100密码修改答案postnumInt11帖子数loginipvarchar20登录IP帖子表(bbs_article)的逻辑设计如表5-2所示表5-2帖子表字段名类型长度是否主键备注idint4YES帖子编号(自增列)(不为空)forumint4模块编号titlevarchar50帖子标题(不为空)useridInt4用户ID(不为空)posttimedatetime,发帖时间readtimesdatetime,最近查看时间istopenum2是否置顶iseliteenum2是否是精华islockenum2是否锁定iscomenum2lastuseridInt4最近回复用户IDedittimedatetime最后编辑时间n_datedatetime发帖时间n_remarkvarchar200帖子描述公告表(bbs_announce)的逻辑设计如表5-3所示表5-3 公告表字段名类型长度是否主键备注idint11YES公告编号(自增列)(不为空)useridint10用户编号usernamevarchar用户名titilevarchar50公告标题contentvarchar250公告内容posttimedatetime发公告时间用户类型(bbs_usertype)的逻辑设计如表5-4所示表5-4 用户类型表字段名类型长度是否主键备注idint4YES编号(自增列)(不为空)namevarchar50用户类型(不为空)5.4 系统数据库的创建本系统数据库采用Mysql5.0,之前采用PowerDesigner15.2进行数据库建模,建立了概念模型和结构模型。最后生成bbs数据库的脚步bbs.sql。同时使用Navicat For Mysql可视化图形界面操作数据库。将bbs.sql通过Navicat For Mysql导入到Mysql5.0中创建数据库如图5.6所示。图5.6 创建bbs数据库六、 系统功能模块详细设计6.1 设计与搭建构架 “在线论坛系统”采用的构架为Struts+Hibernate,系统的视图层与控制层主要通过Struts的标签库和Action相关类设计与实现;Hibernate用于持久层的实现,包括数据访问层和对象模型的设计。6.1.1设计视图层系统的视图层是一组JSP页面,他们通过Struts结合JSTL EL表达式语言将数据暴露给用户,供用户操作。本系统在界面设计上采用了模块化处理的思想,把很多页面共有的部分集成一个模块,做成Struts 自定义标签,例如页面的头、尾,这样在开发的时候遇到这类相似的页面部分就不再需要重新编写,而只要以一句:<yhbbs:footer />就可以重用这部分的内容,大大提高了系统的开发效率。根据系统模块分析自定义了以下自定义标签:头部 <yhbbs:top /> 尾部 <yhbbs:footer />论坛公告 <yhbbs: AllAnnounce /> 在线用户统计信息<yhbbs: AllOnLine />发表公告 <yhbbs: Announce /> 浏览帖子<yhbbs: ArtShowTag/>帖子列表 <yhbbs: ForumList /> 帖子回复列表<yhbbs: ForumTree />首页登录 <yhbbs: IndexLogin /> 版块列表<yhbbs: IndexMain />用户列表 <yhbbs: UserList /> 最新、精华、推荐列表<yhbbs: NewEliteCom/> 根据系统的功能,JSP的主要页面如下。主页(main.jsp):系统主页,包含<yhbbs:footer />、<yhbbs: AllAnnounce />、<yhbbs: AllOnLine />、<yhbbs: NewEliteCom/>、<yhbbs: ForumList />、<yhbbs: IndexMain />、<yhbbs:footer />等大部分的标签登录页(index.jsp):系统为注册的用户提供一个进入系统并使用系统功能的入口。登出页(reg.jsp):用户注册页面。帖子列表页(forum.jsp):系统为游客或用户提供查看帖子功能。发帖页(article.jsp):系统为注册用户提供发表帖子功能。回复页(post.jsp):系统为注册用户回复帖子功能。提示错误信息页面(error.jsp):所有操作错误的提示信息页面。6.1.2 设计控制层根据系统要实现的功能,构成此论坛系统的各个控制层动作类如表6-1所示。通过此表,可以从宏观上了解各个控制层动作类的功能。表6-1 控制层的动作类表ActionFormAction功能描述loginFormLoginAction处理用户登陆的动作类postFormPostAction处理用户评论动作类article FormArticle Action处理用户发帖相关的动作类userFormUserAction处理用户管理动作类FileAction处理文件上传,下载操作类ArticleManageAction处理管理帖子的动作类在web.xml配置文件中配置struts作为前端控制器,部分代码如下:<servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value></init-param><load-on-startup>1</load-on-startup> </servlet>6.1.3 数据访问层数据访问层使用Hibernate来实现,根据数据库表和对象模型之间的对应关系,使用MyEclipse可以自动生成数据访问层的DAO类和XX