基于BS架构的网络论坛设计与实现毕业论文.doc
《基于BS架构的网络论坛设计与实现毕业论文.doc》由会员分享,可在线阅读,更多相关《基于BS架构的网络论坛设计与实现毕业论文.doc(35页珍藏版)》请在冰点文库上搜索。
....
基于B/S架构的网络论坛设计与实现毕业论文
第一章论坛系统开发背景及意义
1.系统开发背景
论坛又名网络论坛BBS,全称为BulletinBoardSystem(电子公告板)或者BulletinBoardService(公告板服务)。
是Internet上的一种电子信息服务系统。
它提供一块公共电子白板,每个用户都可以在上面书写,可发布信息或提出看法。
它是一种交互性强,容丰富而即使的Internet电子信息服务系统。
用户在专题论坛上可以获得各种信息服务,发布信息,进行讨论,聊天等等。
论坛的发展也如同网络,雨后春笋般的出现,并迅速的发展壮大。
现在的论坛几乎涵盖了我们生活的各个方面,几乎每一个人都可以找到自己感兴趣或者需要了解的专题性论坛,而各类,综合性门户或者功能性专题也都青睐于开设自己的论坛,以促进网友之间的交流,增加互动性和丰富的容。
而专题论坛只是其中的一类。
此类论坛是相对于综合类论坛而言,专题类的论坛,能够吸引真正志同道合的人一起来交流探讨,有利于信息的分类整合和搜集,专题性论坛对学术科研教学都起到重要的作用,例如军事类论坛,情感倾诉类论坛,电脑爱好者论坛,动漫论坛,这样的专题性论坛能够在单独的一个领域里进行版块的划分设置。
在本文中,主要介绍使用JSP和Servlet技术来实现论坛建设。
通过基于Internet互联网的动态WEB数据库技术,可以解决远程的数据传输与读取,远程的客户终端(Client)可以通过WEB页面提交请求,查询远端的数据服务器上的信息,同时还可以向远端数据服务器的数据库中存储信息,以实现信息的共享,同时利用Internet技术可以降低软件的开发和部署成本,只要在服务器端安装WEB应用就可以使每个客户端都能浏览使用。
目前,通过专题论坛系统可随时取得各种自己需要最新的信息;也可以通过专题论坛系统来和别人讨论计算机软件、硬件、Internet、多媒体、程序设计以及人文、地理等等各种有趣的话题;还可以利用本系统来发布一些“问题”、“廉价转让”、“招聘人才”及“求职应聘”等启事;更可以召集亲朋好友到聊天室高谈阔论……这个精彩的天地就在你我的身旁,只要您拥有一台可以访问互联网的计算机,就可以通过这个交流平台,来享用它的种种服务。
2.系统开发意义
当今网络技术逐渐渗入社会生活各个层面,以前上的专题论坛管理系统要用户登陆以后才能进行相关访问及互动。
而随着网络互联技术的进步,现在投票只需打开网页就可进行论坛留言。
专题论坛对象是很多的,各个层次都可进行论坛访问,大至国家领导,小至一个普通干部,访问和留言从到指定用户进行表格到现在通过网络直接点击相应就可进行。
专题论坛管理系统可解决游客访问及留言,致使现在几乎各个都有各种类型的专题论坛管理系统,用户可选择自己的看法。
同时为分散于五湖四海的人们提供一个共同交流、学习、倾吐心声的平台,实现来自不同地方的用户极强的信息互动性,用户在获得自己所需要的信息的同时也可以广交朋友,拓宽自己的视野和社交面[2]。
通过网友的发帖中,能得到有益的教诲和启发。
网友通过发出关于国家,社会的有益的观点,能被有关部门采纳,而不是网友空自评论,自艾自叹,自喜自悲。
一些论点能做到各方观点正确公平的显示,具有参考价值。
专题论坛应具有知识性,趣味性,公平性,和谐性等优点。
专题论坛给天下的网民都提供了交流的平台,为网络的互动性作出了巨大的贡献,通过专题论坛,网民们得以更方便的交流,更便捷的发表自己的观点,而且发布信息都是通过有记录的文字来进行,所以这样也避免了精华容的流失。
通过专题论坛来征得自己想要的信息,有更高的效率和时效性。
也最节约成本和资源,在专题论坛的交流过程中,无论喜怒哀乐都是在虚拟的环境中进行,也避免的正面的尴尬和冲突等,在专题论坛中,可以演变成任何角色,变换多种身份,因为网络的特征,使得人民更加依赖于论坛中的交流。
.参考资料.
第二章系统分析
1.技术可行性分析
1.1开发语言综述
本系统是基于面向对象思想的JAVA语言中J2EE平台进行编写,J2EE平台具有以下优点:
(1)简化结构:
J2EE平台支持简化的、基于组件开发模型,由于J2EE基于Java编程语言和J2SE平台,它提供了编写一次,随处运行的可移植性,遵循J2EE标准的所有服务器都支持该模型。
EJB组件使编写应用程序更为简单。
尽管EJB体系结构复杂,但应用程序开发人员一般都必再编写访问系统服务的代码,EJB容器会实现系统级的服务,例如,事务、安全性等。
另外,J2EE还支持异构环境。
基于J2EE的应用程序不依赖任何特定操作系统、中间件或硬件,因此,设计合理的基于J2EE的程序只需开发一次就可以部署到各种平台,这在典型的异构企业算环境中是十分关键的。
J2EE标准还允许客户订购与J2EE兼容的第三方的现成组件,把其部署到异构环境中,节省了由自己制订整个方案所需的费用[1]。
(2)提高开发效率:
由于组件技术的使用,可以按照开发人员的技能对应用程序开发进行分工,并行开发,提供整体开发效率。
例如:
图形设计师创建JSP模板,商业逻辑由该领域的专家完成,JSP页面和EJB由Java工程师完成,应用程序的装配和部署由团队中其他的成员完成,其中许多工作可以同时进行,有助于加速应用程序的开发。
(3)可移植性强:
除了Java语言固有的可移植性外,EJB体系结构在Bean和支持该Bean的容器之间提供了一套标准化的应用程序编程接口,这使开发人员能够将Bean从一种操作环境移植到另一种操作环境,而无需重新编写其源代码。
(4)重用性好:
由于在EJB模型中,各个软件组件都是严格分离的,因此,可以从现有的软件组件装配出服务器端应用程序,这与从现有的JavaBean可以装配出客户端应用程序一样,使软件能够重用。
(5)易于维护:
基于组件的设计简化了应用程序的维护。
由于组件可以被独立地更新和替代,通过更新应用程序中特定的组件,新的功能可以被很容易地增加。
(6)可伸缩性:
企业必须要选择一种服务器端平台,以便满足那些在它们系统上进行商业动作大批新客户。
基于J2EE平台的应用程序可被部署到各种操作系统上,例如,可被部署到高端UNIX或其他的大型机系统上。
J2EE领域的供应商提供了更为广泛的负载平衡策略,能消除系统中的瓶颈,允许多台服务器集成部署,实现可高度伸缩的系统,满足未来商业应用的需要。
(7)被广泛接受:
主要的IT供应用商都采纳EJB体系结构,不同供应商的产品只要符合EJB体系结构,就都是可互操作的。
1.2MySQL数据库的选用
MySQL是现在流行的关系数据库中其中的一种,相比其它的数据库管理系统(DBMS)来说,MySQL具有小巧、功能齐全、查询迅捷等优点,关键的是它是免费的,可以在Internet上免费下载到,并可免费使用,对于一般中小型,甚至大型应用都能够胜任
MySQL具有以下优点:
(1)首先是速度。
对于MySQL来说,速度是他们追求的主要目标之一,基于这个原因,MySQL在以前的文档中也曾经说过并不准备支持事务和触发器。
但是在最新的文档中,我们看到MySQL4.0.2-alpha已经开始支持事务,而且在MySQL的TODO中,对触发器、约束这样的注定会降低速度的功能也列入了日程。
但是,仍然有理由相信,MySQL将有可能一直保持速度的优势。
(2)MySQL更流行,流行对于一个商业软件来说,也是一个很重要的指标,流行意味着更多的用户,意味着经受了更多的考验,意味着更好的商业支持、意味着更多、更完善的文档资料。
(3)MySQL更适宜在Windows环境下运行。
MySQL作为一个本地的Windows应用程序运行(在NT/Win2000/WinXP下,是一个服务),在Windows运行中,MySQL更加的稳定。
(4)MySQL使用了线程,在不同线程之间的环境转换和访问公用的存储区域显然要比在不同的进程之间要快得多。
(5)MySQL可以适应24/7运行。
在绝大多数情况下,你不需要为MySQL运行任何清除程序。
(6)MySQL在权限系统上更为完善。
MySQL允许你定义一整套的不同的数据级、表级和列级的权限。
对于列级的权限。
MySQL还允许你指定基于主机的权限。
(7)由于MySQL4.0.2-alpha开始支持事务的概念,因此事务对于MySQL不再仅仅成为劣势。
相反,因为MySQL保留无事务的表类型。
这就为用户提供了更多的选择。
(8)MySQL的MERGE表提供了一个独特管理多个表的方法。
(9)MySQL的myisampack可以对只读表进行压缩,此后仍然可以直接访问该表中的行。
1.3S.S.H框架的优点
S.S.H框架是J2EE应用中struts+spring+hibernate三大免费开源框架的结合使用,它可以看成工具,也是中间件。
他是用来提高我们的开发效率,提高我们软件产品的可维护性、可扩展性乃至敏捷性的。
他们里面有很多优秀的设计理念及模式应用。
比如,struts属于MVC框架,关键是要了解MVC的概念及大致原理;而hibernate属于ORM系统,属于持久层的解决方案,同样需要对ORM的概念及原理有一个总体的了解。
而spring属于应用程序框架,其核心是IOC容器以及AOP,Spring中还集成了很多适用东西,比如对JDBC的封装、自己的MVC、对动态语言的简洁访问等。
它由以下3个框架构成:
(1)Struts框架
Struts是Apache组织的一个开放源码项目。
Struts是一个比较好的MVC框架,提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP和Customtaglibrary。
其基本构成如图2-1所示。
图2-1Struts框架工作流程
(2)Spring框架
Spring的核心是个轻量级(Lightweight)的容器(Container),它是实现IoC(InversionofControl)容器、非侵入性(Nointrusive)的框架,并提供AOP(Aspect-orientedprogramming)概念的实现方式,提供对持久层(Persistence)、事务(Transaction)的支持,提供MVCWeb框架的实现,并对一些常用的企业服务API(ApplicationInterface)提供一致的模型封装,是一个全方位的应用程序框架(Applicationframework),除此之外,对于现存的各种框架(Struts、JSF、Hibernate等),Spring也提供了与它们相整合的方案。
Spring框架由以下7个部分组成,如图2-2所示。
图2-2Spring框架构成
(3)Hibernate框架
Hibernate是一个开放源码的ORM持久层框架。
作为优秀的持久层框架实现,Hibernate框架提供了强大、高性能的对象到关系型数据库的持久化服务,开发人员可以使用面向对象的设计进行持久层开发。
简单的说,Hibernate只是一个将持久化类与数据库表相映射的工具,每个持久化类实例均对应于数据库表中的一个数据行而已。
用户只需直接使用面向对象的方法操作此持久化类实例,即可完成对数据库表数据的插入、删除、修改、读取等操作。
Hibernate框架结构如图2-3所示。
图2-3Hibernate框架
1.4系统层次设计
系统很据S.S.H框架的特点,决定使用四层结构,这样做的优点是
(1)可以分层开发,访问数据库与业务逻辑实现能够分开。
(2)提高代码的复用。
系统层次如图2-4所示。
图2-4系统的分层结构
1.5技术可行性综述
综上所述,这些成熟的框架和优秀的设计思想,为系统建设提供了技术条件。
计算机等基础设施的更新换代也紧跟潮流的发展,这就为开发系统提供了坚实基础。
2.系统需求分析
2.1系统开发运行环境
鉴于系统的开发语言和数据库,采用如下的开发环境:
开发环境:
Windows2000NTTomCat6.0JDK1.5
硬件实现:
PentiumⅣ2.4G1G存80G硬盘
开发语言:
Java
数据库:
MySQL
开发工具:
MyEclipse5.1
预期成果:
一个可扩展的基于MVC模式的BBS论坛。
2.2业务描述
对于访问论坛的用户,可分为注册会员和为注册的临时用户,这两种用户有着不同的权限,比如临时用户只能对帖子进行查看,而注册会员除了查看帖子之外,还可以发帖,回复,查找用户,并且可以对自己的注册资料进行修改等等[3]。
系统的用例图如图2-5所示。
图2-5系统用例图
2.3系统功能概述
本系统是一套网上交流的BBS软件,根据用户的需要和实际的管理条件,应由用户功能实现,帖子功能实现和后台管理等几个模块所构成,用户可以对一些数据进行查找和修改,并且注册的用户可以对帖子进行特定的操作,而管理员可以对用户和帖子进行相关的管理。
鉴于本系统的性质,系统应该实现以下功能。
(1)用户的登录
(2)用户的注册
(3)用户的查找
(4)用户资料的修改
(5)帖子的发表
(6)帖子的回复
(7)帖子的查找
(8)用户的管理
(8)帖子的管理
(9)论坛信息的管理
(10)图片的管理
2.4数据流程
本系统是为了提供给广大用户一个网上交流的平台,所以论坛的流程是以用户为中心进行的。
数据流图是一种能全面地描述信息系统逻辑模型的主要工具,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况。
数据流图具有以下两个特性:
(1)抽象性:
表现在它完全舍去了具体的物质,只剩下数据的流动、加工处理与存储。
(2)概括性:
表现在它可以把信息中的各种不同业务处理过程联系起来,形成一个整体。
论坛系统的数据流程图如图2-6所示。
图2-6数据流程图
第三章专题论坛系统设计
1.数据库设计
在对系统数据库进行设计的过程中,通过对系统功能进行需求分析得到系统的基本信息表,绘制系统业务流程图和系统数据流程图,分析得到数据字典;在概率结构设计阶段通过对需求阶段得到的用户需求抽象得到数据库关系模型的E-R图;在逻辑结构设计阶段得到数据库的关系模式并绘制信息表。
1.1数据库需求分析
需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。
综合以上分析,要实现上面的所有功能模块,数据库共要设计八个表,它们分别是:
(1)用户表(user):
用户ID、用户名、密码、性别、Email、QQ、类型、发帖数、头像地址、注册日期、积分。
(2)版主(master):
版主ID、板块ID。
(3)管理员表(admin):
管理员ID、管理员、管理员密码。
(4)板块表(plate):
板块ID、板块名称、帖子数、板块简介、创建日期。
(5)帖子表(posts):
帖子ID、帖子标题、帖子容、发表日期、发表者、所在版块ID、回复数、点击数。
(6)回复容表(reply):
回复ID、回复者、回复帖子ID、回复时间、回复容。
(7)公告表(notice):
公告ID、公告标题、公告容、发布时间。
(8)留言信息表(message):
留言ID、留言标题、留言容、留言时间。
通过参考网上比较出名的论坛和查询相应的资料,大体了解了论坛系统的基本流程,因此设计了前台和后台两个模块的层次流程图。
前台层次图如图3-1所示。
图3-1前台层次图
后台层次图如图3-2所示。
图3-2后台层次图
1.2数据库概念结构设计
概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键,包括概念模型设计和新系统流程两个阶段。
在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好地、更准确地用某一DBMS实现这些需求。
概念数据模型独立于具体的数据处理的细节和数据库管理系统。
这次设计仍采用传统的实体联系图作为概念设计的工具。
再进行优化后,尽量满足结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余。
系统E-R图如图3-3所示。
图3-3系统E-R图
1.3数据库逻辑结构设计
对于关系型数据库,数据库的概念结构设计完毕后,要把E-R图描述的概念数据模型转换为等价的关系模式极其约束。
逻辑设计的基本工作主要包括如下的3个步骤。
该设计以概念结构设计中的E-R图为主要依据,这几出相关的整体逻辑结构。
系统数据流设计如图3-4所示。
图3-4系统数据流设计图
完整性要求用于描述各种信息之间的制约关系,以及关联关系,各个数据项的取值围以及各个数据项是否可以取值。
根据实际需要,采取一定的手段来满足用户的完整性需求。
域完整性约束要求属性值必须在域中。
实体完整性约束要求主键必须唯一且不能为空。
如用户信息表中的用户名设置为主键,并且要求唯一且不能为空。
1.4数据库表设计
用户表如表3-1所示:
表3-1用户信息表(user)
字段名
类型(值)
说明
UserID(主键)
Int(10)
用户ID
UserName
Varchar(20)
用户名
UserPassword
Varchar(20)
用户密码
UserSex
Varchar(4)
用户性别
Email
Varchar(50)
用户Email
Regdate
date
注册日期
Privilege
Int(10)
0:
普通用户;1:
版主
QQ
Varchar(10)
QQ
ImageAddr
Varchar(20)
头像地址
UserPostsCount
Int(255)
用户发帖数
Integral
Int(255)
积分
板块表如表3-2所示:
表3-2板块信息表(plate)
字段名
类型(值)
说明
PlateID(主键)
Int(10)
板块ID
PlateName
Varchar(20)
板块名字
PlateDescribe
Varchar(128)
板块简介
PlateDate
date
创建日期
PostsCount
Int(255)
帖子条数
帖子信息表如表3-3所示:
表3-3帖子信息表(posts)
字段名
类型(值)
说明
postsID(主键)
Int(10)
帖子ID
Title
Varchar(128)
帖子标题
Content
Varchar(10000)
帖子容
PostsDate
datetime
发表日期
UserName
Varchar(20)
发表者
PlateID
Int(10)
所在板块ID
Click
Int(255)
点击次数
ReplyCount
Int(255)
回复次数
回复信息表如表3-4所示:
表3-4回复信息表(reply)
字段名
类型(值)
说明
ReplyID(主键)
Int(10)
ID
ReplyContent
Varchar(5000)
回复容
PostsID
Int(10)
回复帖子ID
UserName
Varchar(20)
回复人
ReplyTime
Datetime
回复时间
版主表如表3-5所示:
表3-5版主表(master)
字段名
类型(值)
说明
userID
Int(10)
版主ID(用户ID)
PlateID
Int(10)
板块ID
公告信息表如表3-6所示:
表3-6公告信息表(notice)
字段名
类型(值)
说明
NoticeID(主键)
Int(10)
公告ID
NoticeContent
Varchar(5000)
公告容
NoticeTime
datetime
发表日期
NoticeTitle
Varchar(128)
公告标题
管理员信息表如表3-7所示:
表3-7管理员信息表(admin)
字段名
类型(值)
说明
ID(主键)
Int(10)
管理员ID
AdminName
Varchar(20)
管理员名字
AdminPassword
Varchar(20)
管理员密码
留言信息表如表3-8所示:
表3-8留言信息表(message)
字段名
类型(值)
说明
MessageID(主键)
Int(10)
留言ID
MessageTitle
Varchar(128)
留言标题
MessageContent
Varchar(5000)
留言容
MessageTime
Datetime
发布时间
2.系统结构设计
2.1页面模块化设计
模块化设计的要求不仅是为了提高代码的重用性,更重要的是为了提高代码的可维护性和稳定性。
一个模块化程度高、结构清晰的应用程序,在程序维护时的便利性是可想而知的。
最初设计方案时,就要规划好哪些模块是可以提出来多次使用,哪些模块虽只使用一次,但提出来之后能使代码更清晰等。
所以把页面中一些常用代码编写为独立的单元,例如页面的头部和尾部、首页各个显示区,这样设计新的页面时如果有重复出现的部分,只需要将编写好的模块用INCLUDE语句来组装就可以了。
专题论坛系统功能模块有以下几部分组成:
(1)用户注册
新用户注册,填写用户信息,检验用户信息的有效性,并将用户信息持久化。
(2)用户登陆
提供用户凭证,验证用户信息是否合法,根据用户角色授权。
(3)用户管理
管理员由系统初始化分配一个,管理员可以对用户信息进行部分更改,主要包括用户角色调整,版主调整,删除用户等。
(4)论坛版块管理
管理员可以添加、删除、修改论坛版块。
(5)帖子管理
管理员可以对所有帖子进行修改、删除等操作,版主可以对本版块帖子进行修改、删除等操作。
(6)帖子发表
注册用户可以在感兴趣的版块中发表新帖。
(7)帖子回复
用户可以对自己感兴趣的主题发表回复。
(8)帖子浏览
用户可以浏览所有帖子。
(9)意见建议
用户可以与我们联系,并欢迎提出各种意见和建议。
2.2MVC模式设计(Jsp+Servlet+JavaBean)
MVC(ModelViewController)是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。
使用MVC应用程序被分成三个核心部件:
模型、视图、控制器。
它们各自处理自己的任务。
视图是用户看到并与之交互的界面。
如何处理应用程序的界面变得越来越有挑战性。
MVC一个大的好处是它能为你的应用程序处理很多不同的视图。
JSP页面处于表现层,也就是视力(View即V)的角色。
模型表示企业数据和业务规则。
在MVC的三个部件中,模型拥有最多的处理任务。
由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
JavaBean则负责数据的处理,也就是模型(Model即M)的角色。
控制器接受用户的输入并调用模型和视图去完成用户的需求。
所以当单击Web页面中的超和发送HTML表单时,控制器本身不输出任何东西和做任何处理。
它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。
Servlet用来处理请求的事务,充当控制器(Controller即C)的角色,Servlet负责响应用户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户。
初始的请求由Servlet来处理,Servlet调用商业逻辑和数据处理代码,并创建Bean来表示相应的