姓名:XX学号:05125016 专业:信息与计算科学
指导老师:XXX
摘 要:
为了方便信息的交流,在结合动态服务网页(JSP)和SQL2000 技术之下开发了这个界面友好的小型论坛系统。论坛使用动态服务网页(JSP)技术建设论坛的骨干框架,使用SQL2000制作系统的数据库,利用了Struts、Spring、Hibernate三大框架技术的部分知识点,还结合使用了AJAX技术,通过这些实现了一个功能相对齐全的论坛系统。
该论坛为网友们提供了一个交流的平台,在这里注册用户可以自由地发表自己的观点和对论坛的主题帖子发表意见,还可以及时的解决网友提出的问题,获取对自己有用的知识。该论坛还有一些特殊的功能,强大的搜索功能等。
关键词:动态服务网页;论坛;SQL2000;AJAX;
I
Small BBS Forum System
Abstract:
In order to exchange the information expediently, the small forum is developed under the technologies of JSP and SQL2000. The main frames of the forum system is built by the technologies of JSP and SQL2000 database, part of the three instructions of Struts, Spring, Hibernate and AJAX, All of those above is to provide a relatively complete functions of the forum system.
The forum system provides a platform of communication, herein, the users who have registered ahead can express their ideas freely and give some advice about the subjects, moreover, you can solve the questions asked by online friends and obtain useful knowledge for yourself from the forum. By the way, the some other especial functions is also added, such as the powerful search engineering.
Keywords: Java Server Pages; BBS; SQL2000; AJAX;
II
目 录
1 2
前 言 ............................................................................................................. 1 系统技术及运行环境 ..................................................................................... 3 2.1 JSP技术简介 ............................................................................................... 3 2.2 JAVABEAN技术简介 ................................................................................. 3 2.3 其它的一些技术 .......................................................................................... 3 2.4 运行环境 ...................................................................................................... 3 3
系统需求分析说明 ......................................................................................... 5 3.1 系统介绍 ...................................................................................................... 5 3.2 功能需求 ...................................................................................................... 5 4
总体设计 ......................................................................................................... 6 4.1 总体结构和模块设计 .................................................................................. 6 4.2 处理流程 ...................................................................................................... 6 5
数据库设计 ..................................................................................................... 8 5.1 数据库结构属性图 ...................................................................................... 8 5.2 数据库表格设计 .......................................................................................... 9 6
系统详细设计 ............................................................................................... 11 6.1 前台页面 .................................................................................................... 12 6.2 后台页面 .................................................................................................... 17 6.3 系统设计主要代码及配置文件 ................................................................ 20 7
测试 ............................................................................................................... 26 7.1 测试方法 .................................................................................................... 26 7.2 测试范围 .................................................................................................... 26 7.3 测试报告 .................................................................................................... 26 8
总结与展望 ................................................................................................... 27
参考文献...................................................................................... 错误!未定义书签。 致 谢...................................................................................................................... 28
1 前 言
进入21世纪,计算机技术迅速向着网络化的、集成化方向发展。传统的单机版应用软件正在逐渐退出舞台,取而代之的是支持网络、支持多种数据信息(多媒体)的新一代网络版应用软件,而目前网络版软件中似乎存在着两种不同的趋势,一种是称为客户端——服务器的C/S结构应用系统,这类软件具有结构严谨,运行效率高,服务器端压力小,安全性好等优点,被广泛运用于局域网中。另一种,也是本毕业设计所采用的,是称为浏览器——服务器的B/S结构应用系统,它的特点是在客户端直接采用了功能强大的浏览器软件作为界面,其优点在于软件开发效率高,客户端不受操作平台的限制、也不受地域的限制,网络传输量少,即适用于局域网,更适用于Internet,而且投资小、见效快,用户可以不必进行服务器方面的投资,而是去租用,甚至是免费使用ISP的服务器资源,因而受到越来越多中小型单位的青睐。
本论文就是基于B/S结构实现的。论坛也常被简称为BBS(Bulletin Board System)[1]。1978年在美国芝加哥开发出一套基于8080芯片的CBBS/Chicago(Computerized Bulletin Board System/Chicago),此乃最早的一套BBS系统[2]。BBS发展至今,目前世界上业余的BBS网络除了FidoNet(惠多网)以外,几个较具知名度的还有EggNet、AlterNet和RBBS-Net等等。由于这些网络和FidoNet之间的信息交流不成问题,这就实现了所谓的跨网。大约是从1991年开始,国内开始了第一个BBS站。经过长时间的发展,直到1995年,随着计算机及其外设的大幅降价,BBS才逐渐被人们所认识。1996年更是以惊人的速度发展起来。国内的BBS站,按其性质划分,可以分为两种:一种是商业BBS站,如新华龙讯网;另一种是业余BBS站,如天堂资讯站。由于使用商业BBS站要交纳一笔费用,而商业站所能提供的服务与业余站相比,并没有什么优势,所以其用户数量不多。多数业余BBS站的站长,基于个人关系,每天都互相交换电子邮件,渐渐地形成了一个全国性的电子邮件网络China FidoNet(中国惠多网)。于是,各地的用户都可以通过本地的业余BBS站与远在异地的网友互通信息。这种跨地域电子邮件交流正是商业站无法与业余站相抗衡的根本因素。由于业余BBS站拥有这种优势,所以使用者都更乐意加入。这里“业余”2字,并不是代表这种类型的BBS站的服务和技术水平是业余的,而是指这类BBS站的
1
性质。一般BBS站都是由志愿者开发的。他们付出的不仅是金钱,更多的是精力。其目的是为了推动中国计算机网络的健康发展,提高广大计算机用户的应用水平[3]。BBS是互联网一种人与人之间交互的必备工具,特别是做网站必备。以前我们一直用留言本形式,但是随着您的网站的大规模化,越来越多的迫切需要一种可以易于维护和易于交流的平台,那就要用BBS。BBS可以通过WEB浏览器访问,并且实现上传文件等诸多功能。网民们便逐步开始接受这种使用方便快捷、功能日渐强大的系统。在它上面网民们可以张贴和发布各种各样的信息,讨论各式话题 。
随着中国网络的普及和计算机及其外设的大幅度降价,Internet这个概念逐渐深入人心。中国网民的数量呈几何级数量增长,BBS的普及程度也直追Email。每个网站几乎都拥有自己的BBS或者BBS链接,BBS社区提供给用户的服务是全面而且非常友好的,用户在社区中可以根据自己的喜好设置不同的显示风格,根据自己的需求定制各种服务[4]。通过论坛更加快捷的了解企业员工的信息,而建立会员服务的基础是建系论坛管理系统!通过应用该系统可以实现用户与用户间的交流、企业与企业间的信息交互,利用网络经济而又快捷地与外界进行各种信息沟通,取得更有用的信息资源。
论坛系统服务已经是互联网站一种极为常见的互动交流服务。论坛可以向网友提供开放性的分类专题讨论区服务,可以在此发表自己的某些观感、交流某些技术、经验乃至人生的感悟与忧欢,亦可以做为网友们之间的交流渠道,网站亦可在此回答网友们提出的问题或发布某些消息。通过论坛的方式,增强个人与个人,团体与团体,个人与团体之间的交流联系,在Internet上实现信息的传递,提高办事效率[5]。因此论坛建设在Internet应用上的地位显而易见,它已成为现代人沟通和获取信息的重要组成部分,从而倍受人们的重视。
本文利用JSP和SQL Server 2000做一个在线论坛系统。该系统以Internet为平台,前台可使任何人注册、登陆在论坛上进行发贴及讨论,版主可以进行一部分管理。而管理员也可以在后台进行相关的管理。
2
2 系统技术及运行环境
2.1 JSP技术简介
JSP是服务器端的脚本语言,是以SERVLET为基础开发而成的动态网页生成技术,它的底层实现是JAVA SERVLET。JSP(JAVA SERVER PAGES)由HTML代码和潜入其中的JAVA代码所组成[6]。服务器在页面被客户端请求以后对这些代码进行处理,然后将生产的HTML页面返回客户端的浏览器JSP的特点是面向对象、 跨平台、 和SERVLET一样稳定、 可以使用SERVLET提供的API,同时克服了SERVLET的缺点。在使用JSP时一般和JAVABEANS结合使用,从而将界面表现和业务逻辑分离[7]。 2.2 JAVABEAN技术简介
JAVABEAN是基于JAVA的组建模型,有点类似于MICROSOFT的COM组建。
在JAVA平台中,可以无限扩充JAVA程序的功能,通过JAVABEAN的组合可以快速生产新的应用程序。对于程序员来说,最好的一点就是JAVABEAN可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。JAVABEAN 通过JAVA虚拟机(JAVA VIRTUAL MACHINE)执行,运行JAVABEAN最小的需求是JDK1.1或者以上的版本。JAVABEAN传统的应用在于可视化的领域,如AWT下的应用。自从JSP诞生后,JAVABEAN更多的应用在了非可视化领域,在服务器端应用方面表现出了越来越强的生命力[8]。 2.3 其它的一些技术
本系统还使用了一些其它的技术,如Struts[9],Hibernate[10],Spring[11],AJAX等。这些都会在后面的代码处作相应的介绍。
2.4 运行环境
为了保证BBS论坛管理系统运行的高效性和可靠性,服务器应具有较高的软硬件配置,客户端的要求不是很高。此应用程序可广泛运行于国际互联网即Internet,也可适用于内部的局域网。其运行要求如下:
软件环境:
客户端: Windows95/98/2000/XP,Internet Explorer(IE6.0及其以上版本)等。
3
服务器端:Windows NT/Windows2000,Tomcat 5.0[12],JDK 1.5及其以上版本,IE6.0及其以上版本等;
数据库:采用SQL2000,运行于服务器端。 硬件环境:
服务器 CPU:PIII 500以上 ,内存:512M以上。 客户机 CPU:P200MMX以上,内存:32M以上。
4
3 系统需求分析说明
3.1 系统介绍
本系统是基于B/S结构的一个小型论坛,主要基于Windows平台,通过这个论坛,用户之间可以实现互动交流。 3.2 功能需求
通过对网上的一些著名论坛的认识,该论坛至少应该实现以下功能: (1) 注册管理:能够对用户名,密码的简单验证,能够防止利用页面刷新重复注册,已经存在的用户名称不能重复注册。
(2) 浏览帖子:可以根据作者或内容等为关键字搜索帖子,分论坛版块显示帖子,显示帖子详情,浏览帖子时不要求用户登录,但回复帖子前用户必须登录。
(3) 发表及回复帖子:只有登录用户才可以发表和回复帖子,并且对帖子的字数有限制。
(4) 用户个人信息管理:登陆用户可以编辑注册后的个人资料,如修改密码等,但是不可以修改用户名称。也可以对自己发表的帖子进行操作:如修改,删除。
(5) 回复管理:各论坛版块的版主可以对自己管理的版块的帖子的回复的帖子进行管理,可以屏蔽回复。
(6) 论坛版块管理:只有管理员有该权限,管理员可以添加,删除版块,也可以修改版块资料,如版块名称,上级版块,版主。
(7) 用户管理:只有管理员有该权限,管理员可以禁用,启用用户,进行用户密码重置。
(8) 公告管理:只有管理员有该权限,管理员可以添加,删除公告。 (9) 帖子管理:各论坛版块的版主可以对自己管理的版块的帖子进行管理,可以屏蔽和删除帖子。
5
4 总体设计
本系统采用B/S模式设计,方便系统的维护和使用。采取MVC设计模式与多层架构的基于J2EE平台的设计[13],使系统拥有良好的扩展性,在满足当前使用需求同时还兼顾系统以后可能的功能扩充。系统分成几个相对独立的模块,但这些模块都进行集中式管理。
4.1 总体结构和模块设计
该系统可分为前台和后台两个部分,前台是提供给一般用户和版主使用的,后台是提供给管理员进行一些系统维护的。
功能结构图如下:
小型BBS论坛管理系统 前台功能 后台功能 浏览搜索用户登陆发表回复个人资料帖子管理 用户管理 论坛版块公告管理
图3.1 系统功能结构图
4.2 处理流程
对于本系统的使用者来说,可以分为以下几类:未注册的用户,已注册的用户。已注册的用户又可以分为一般用户、版主、管理员三类。根据用户角色的不同,用户拥有的权限也会不同。根据这个来分析该系统的业务流程。
系统的业务流程如图3.2所示:
6
图3.2 业务流程图
7
5 数据库设计
在建设网站系统之前,必须对系统所用到的数据进行大致的分类和具体的结构设计,既要做到清晰明了,又要能适应系统各项功能的调用,而不至于产生结构上的逻辑混乱,保证关键数据在意外情况下不会被破坏,可以说数据库是系统的重中之重。
数据库设计要遵循一些规则,一个好的数据库满足一些严格的约束和要求。尽量分离各实体对应的表,一个实体对应一个表,分析该实体有哪些属性,对应有些什么字段,以及各实体之间的联系。实体、属性与联系是进行概念设计时要考虑的三个元素,也是一个好的数据库设计的核心[14]。
从实际出发,经过仔细地设计,得到各表的设计如下所示。
5.1 数据库结构属性图
图4.1 数据库结构属性图
8
5.2 数据库表格设计
表4.1: UserInfo 用户信息表
列名 uid username password head sign roleid active
表4.2: Topic 帖子表
列名 tid title content authorid time sortid
表4.3: Reply 回复表
列名 id title content authorid time topicid
说明 主键 帖子主题 帖子内容 作者 发表时间 回复的帖子编号
类型 Int(4) Varchar(50) Varchar(1000)
Int(4) datetime Int(4)
备注 自增 Not null Not null Not null Not null Not null
说明 主键 帖子主题 帖子内容 作者 发表时间 所属的论坛版块
类型 Int(4) Varchar(50) Varchar(1000)
Int(4) datetime Int(4)
备注 自增 Not null Not null Not null Not null Not null
说明 主键 用户名称 密码 头像 个人签名 角色 状态
类型 Int(4) Varchar(20) Varchar(20) Varchar(20) Varchar(200) Int(4) Int(4)
备注 自增 Not null Not null Not null Not null Not null Not null
9
表4.4: Sort 论坛版块分类表
列名 sid parentid sortname master
表4.5: Role 角色表
列名 rid description
表4.6: Notice 公告表
列名 nid content
说明 主键 公告内容
类型 Int(4) Varchar(100)
备注 自增 Not null
说明 主键 角色描述
类型 Int(4) Varchar(10)
备注 自增 Not null
说明 主键 上级版块 版块名称 版主名称
类型 Int(4) Int(4) Varchar(50) Varchar(20)
备注 自增 Not null Not null 允许为null
10
6 系统详细设计
前台和后台页面设计采用的技术是JSP。之所以选择它是因为JSP技术具有下面的特点:
1)Write Once Run Anywhere
JSP技术继承了JAVA先天性的先进概念“Write Once Run Anywhere”这种概念正越来越深远的影响着互连网行业的交互式、WEB设计的理念。JSP Pages 可以非常容易的开平台跨WEB服务器软件来是设计和开放源代码。
2)支持多种动态网页格式
目前对使用JSP技术设计出来的网页应该采取什么样的格式还没有一个明确的标准。一般来说JSP技术即可以支持HTML/DHTML的传统浏览器文件格式,又可以支持应用与无线通讯设备例如移动电话、PDA等设备进行网页浏览器的VML文件格式,还可以支持其它一些B2B应用的XML格式。与以往的其它WEB应用技术相比较JSP技术有它很鲜明的特点。
3)JSP 标签可扩充性
尽管JSP与ASP都使用标签与脚本技术来制造动态WEB网页,但是JSP技术能够使开发者扩展JSP标签,使得应用JSP的开发者能定制标签库所以网页制作者可以充分利用与XML兼容的标签技术,大大减少了对脚本语言的依赖。由于指定标签库技术使得网页制作者降低了制作网页和想多个网页扩充关键功能的复杂程度[15]。
4)JSP跨平台的可重用性
JSP的开发人员在开发过程中一直关注可重用性,JSP足见、企业JavaBean或制定的标签都是跨平台可重用的。企业JavaBean可以访问传统的数据库并能并能已分布式系统模式工作于UNIX和WINDOWS平台,JSP标签可扩充功能为开发人员提供简便的与XML兼容的接口,即共享网页的打包功能使其完全的工业标准化。这种基于组建的模式能够有效的提高应用程序的开发效率。因为这种模式能够使开发人员利用快捷的子组建快速创建模板应用程序。然后再整和一些附加功能将其打包成一个JAVABEAN组建。
5)易于维护性
基于JSP技术的应用程序比基于ASP的应用程序更易于维护和管理。脚本
11
语言都很好服务于小的应用程序但不能适宜大型的复杂的应用程序,因为JAVA是结构化的,它比较比较容易创建和维护庞大的组建化的应用程序。
6.1 前台页面
6.1.1 登录进入论坛首页页面
图5.1 论坛登录页面
在此页面中,用户如果点击“浏览进入”这个超链接,即以相当于游客的身份进入论坛,进入的是论坛的首页(图5.2所示),那么就只拥有浏览和搜索帖子的权限。如果用户输入了正确的用户名称和密码,就会以用户的身份进入论坛的首页。该用户就可以拥有更多的权限,可以浏览和搜索帖子,修改个人资料,删除和修改自己发表的主题帖子,发表和回复帖子。如果用户输入了不正确的信息,则系统阻止进入论坛的首页,还是会跳转到该登录页面。如果用户点击了“注册”这个超链接,则会进入注册页面(图5.3所示)。
6.1.2 论坛首页
12
图5.2 论坛首页
在该页面中,显示了很多信息。主要是各个版块的详细信息,包括版块的名称,版主,发表于该版块下的主题帖子总数,以及最新发表的帖子的信息。若有发表的帖子,则显示该帖子的主题,作者,和发表时间,并且提供了帖子主题的超链接,点击后会进入显示该帖子的详细信息页面。若无发表的帖子,则显示暂无。该页面上还显示了公告的信息,即公告栏显示的内容。页面上还提供了搜索帖子的功能,可以根据作者名称来精确查找和根据帖子内容来模糊查找。如果用户是经过登录验证后进入该页面的,页面会提供“个人中心”的超链接,点击此链接会进入个人信息中心页面(如图5.6所示)。如果用户是通过浏览进入该页面的,则不会提供该超链接。 6.1.3 注册页面
13
图5.3 注册页面
用户可以在该页面中输入注册资料,包括用户名,密码,个性签名和头像。 用户名,密码,个性签名都是必填的,头像是默认选择第一个,用户也可以重新选择。在用户提交之前,对所填的信息都作了验证,包括用户名非空并且不可重复,密码非空,密码长度必须大于或等于4,两次输入的密码必须一致,个性签名非空,且长度小于50。在对用户名称的唯一性验证时,使用了AJAX技术,当用户输入完用户名,该文本框失去焦点时,会检查数据库中是否存在该用户名,
如果不存在,则在文本框后用蓝色字体显示“Ok,你可以用这个名称!”,如果存在,则在文本框后用红色字体显示“No,这个名称已占用!”。提交成功后,跳转到登录页面。
在这里简单介绍一下AJAX技术。AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。它使浏览器可以为用户提供更为自然的浏览体验。在Ajax之前,Web站点强制用户进入提交/等待/重新显示范例,用户的动作总是与服务器的“思考时间”同步。Ajax提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来。借助于Ajax,可以在用户单击按钮时,使用JavaScript和
14
DHTML立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用JavaScript和CSS来相应地更新UI,而不是刷新整个页面。最重要的是,用户甚至不知道浏览器正在与服务器通信:Web站点看起来是即时响应的。
6.1.4 发表帖子
图5.4 发表页面
用户可以在该页面中填写帖子的资料,包括标题和内容。提交之前也作了验证:标题非空且长度小于50,帖子内容非空且长度小于2000。为提示用户控制输入,通过JavaScript实现了动态显示用户输入的字符数目。为避免重复提交,提供了验证码,只有输入了正确的验证码后才会提交。
6.1.5 显示帖子及回复
15
图5.5 显示贴子与回复页面
在该页面中,显示了帖子的详细信息和回复的帖子的详细信息。并且实现了分页功能,每页显示5个回复帖子。只有对登录用户才显示“回复帖子”和“发表话题”两个按钮,以及回复帖子的表格的显示。对于没有登录的用户,则不会显示。如果登录的用户的身份是版主,而该帖子又是位于该用户管理的论坛版块下,则会在主题帖子后提供“屏蔽此帖”和“删除”两个超链接。分别实现屏蔽帖子和删除帖子的功能。另外在回复的帖子后提供“屏蔽此回复”超链接,实现对回复的帖子的屏蔽操作。
16
6.1.6 显示个人中心页面
图5.6 个人中心页面
在该页面中,显示了用户的个人资料和发表的帖子的信息。当用户点击“编辑个人资料”的超链接后,会进入修该个人资料的页面,实现对个人信息的修改。另外页面上分页显示了用户发表的主题帖子,用户可以这些帖子进行修改和删除操作。
6.2 后台页面
用户要进入后台管理页面,必须先进入后台管理的登录页面,使用了Filter来实现过滤。只有登录成功后,才能进入管理页面。
6.2.1 后台登录页面
17
图5.7 后台页面
登录成功后跳转到后台管理页面,登录失败后还是跳转到本页面。 6.2.2 后台管理页面
图5.8 后台管理页面
进入到后台管理后,首先显示的是如上图5.8所示的页面。 6.2.3 用户管理页面
18
图5.9 用户管理页面
点击后台管理页面的左边导航栏的“用户详细信息”超链接即可进入到该页面。该页面分页显示了用户的部分资料,包括用户名,用户角色,是否禁用。还对每个用户提供了“启用”,“禁用”,“密码重置”操作按钮。管理员可以进行与之相对应的操作。这些操作是通过AJAX实现的。
6.2.4 公告管理页面
图5.10 公告管理页面
点击后台管理页面的左边导航栏的“公告详细信息”超链接即可进入到该页面。该页面分页显示了公告的详细信息,包括公共编号,公共内容。管理员可以
19
添加公告,删除公告。点击页面上的添加图标即可进入到添加公告页面。点击某个公告后的删除图标即可删除选定的某个公告。
6.2.5 论坛版块管理页面
图5.11 论坛管理页面
点击后台管理页面的左边导航栏的“论坛详细信息”超链接即可进入到该页面。该页面分页显示了各个论坛板块的详细信息,包括论坛版块名称,上级版块名称,版主。管理员可以对论坛版块进行添加,修改,删除操作。点击页面上的添加图标即可进入到添加论坛版块的页面,完成添加功能。点击某个版块后面的修改图标即可进入修改版块信息的页面,在修改页面中可以修改该版块的名称,上级版块,版主。修改成功后跳转到显示所有论坛版块的页面。点击某个版块后面的删除图标即可删除选中的论坛版块,如果删除成功就跳转到显示所有论坛版块的页面,如果删除失败就跳转到显示删除失败信息的页面。
6.3 系统设计主要代码及配置文件 6.3.1 分页的JavaBean
系统中的大部分JSP页面需要使用分页技术,因此使用一个JavaBean来专门完成分页的功能。以下是此类的关键代码:
public class PageModel {
20
//所有的记录数 private int totalRecords; //查询的结果集 private List list; //第几页
private int pageNo; //每页多少条数据 private int pageSize; }
//提供各成员属性的get,set方法 public int getTotalPages() { if (totalRecords == 0) return 1;
return (totalRecords + pageSize -1)/pageSize; } }
6.3.2 生成验证码的代码 try{
BufferedImage bf=new
BufferedImage(70,25,BufferedImage.TYPE_INT_RGB);
Graphics2D g2=bf.createGraphics(); g2.setPaint(new Color(0,0,255)); g2.fillRect(0,0,70,25);
g2.setPaint(new Color(255,255,255)); String str=request.getParameter(\"num\"); session.setAttribute(\"num\",str);
g2.setFont(new Font(\"Arial\",Font.BOLD,24)); g2.drawString(str,7,20); for(int i=0;i<10;i++){
int r=(int)(Math.random()*255);
21
}
int g=(int)(Math.random()*255); int b=(int)(Math.random()*255); g2.setPaint(new Color(r,g,b)); int x1=(int)(Math.random()*80); int y1=(int)(Math.random()*30); int x2=(int)(Math.random()*80); int y2=(int)(Math.random()*30); g2.drawLine(x1,y1,x2,y2);
g2.dispose();
ImageIO.write(bf,\"jpg\",response.getOutputStream());
}catch(Exception e){ }
System.out.println(e);
6.3.3 系统的配置文件 1) Web.xml
主要配置的是Tomcat启动时要加载的配置文件。其中有Struts的配置文件Struts-config.xml,Spring的配置文件即与applicationContext-*.xml匹配的文件,另外还配置了Spring中Filter设置了字符集。此外还配置了与AJAX技术相关的DWR的详细配置信息。 2) Struts-config.xml
对于本系统为什么选择使用Struts技术,下面列举的这些理由是显而易见的:首先,它是建立在MVC这种公认的好的模式上的,Struts在M、V和C上都有涉及,但它主要是提供一个好的控制器和一套定制的标签库上,也就是说它的着力点在C和V上,因此,它天生就有MVC所带来的一系列优点,如:结构层次分明,高可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分工,提供集中统一的权限控制、校验、国际化、日志等等;其次,经受了实战的检验,使其功能越来越强大,体系也日臻完善;最后,是它对其他技术和框架显示出很好的融
22
合性[16]。
该系统的Struts的配置文件中主要内容是ActionForm,DispatchAction的详细信息,以及各页面的跳转路径的控制信息。 3) Hibernate.cfg.xml
本系统中对数据库操作的DAO是通过Hibernate来实现的,该层的事务处理都交给Hibernate来处理,下面简单的来介绍一下Hibernate。
Hibernate是一种Java语言下的对象关系映射解决方案。它用来把对象模型表示的对象映射到基于SQL 的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。Hibernate 不仅管理Java 类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL 和JDBC 处理数据的时间。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。 4) 与Spring有关的三个配置文件
在本系统中,利用Spring的依赖注入机制来实现了DAO对象的依赖注入,这样一来不用自己来创建对象实例。
在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。
以下是与系统有关的三个Spring的配置文件 (1) applicationContext-common.xml
在该文件中定义了哪些类的哪些方法参与事务,配置了SessionFactory,事务管理器,事务的传播特性。
(2) applicationContext-beans.xml
23
在该配置文件中配置了各个模块的DAO层的详细信息。 (3) applicationContext-actions.xml
在该配置文件中配置了各个DispatchAction中DAO对象的注入信息。 6.3.4 注册时的验证代码(用到了AJAX技术)
此处是通过DWR框架来实现的,页面中的关键代码如下:
25
7 测试
7.1 测试方法
由于本系统的设计人员和测试人员都是本人,很了解系统的内部结构和处理过程,所以测试方式采用的是动态测试方法中的白盒测试。 7.2 测试范围
用户的登录;帖子的添加、删除、修改、查询;用户的个人信息编辑;管理员对用户、论坛版块、公告的管理。 7.3 测试报告 测试项目 测试目的 测试结果 不敢肯定系统一定安全 添加不成功 原因 解决情况 仍在解决 已解决 用户登录 确保系统的安全性 确保帖子准确无误的添加 确保帖子信息都删除 确保帖子信息准确的修改 确保查出要求的信息 存在一些其它的因素 有些属性没有进行正确性检查 帖子的添加 帖子的删除 程序运行正常 帖子的修改 程序运行正常 帖子的查询 没有达到要求 SQL语句有误 已解决 个人信息编确保个人信息成功辑 用户管理 的修改 确保对用户的管理都能操作成功 确保对论坛的管理都能操作成功 确保对公告的管理都能操作成功 程序运行正常 程序运行正常 论坛管理 程序运行正常 公告管理 程序运行正常 26
8 总结与展望
在计算机网络飞速发展的今天,BBS已经成为人们网上交流的重要平台,因此对BBS论坛的研究是十分必要的。设计和开发了一个最基本的基于WEB的BBS系统,可扩展性很大,科学的开发过程也极有利于系统的扩充与扩展。系统现在采用的是SQL2000数据库,视需要可以移植到SQL2005或者其它大中型数据库系统环境下,只需改动少数几个JSP功能模块文件。系统的分析与定义都结合了现在流行的面向对象方法以及传统的结构分析与设计方法。
严格按工程的方法来设计系统相当重要,不能认为基于Web的数据库管理的BBS系统很小,可以无需花太多的时间来做系统分析,甚至可以无需经过系统定义而直接进入系统编码阶段。系统分析过于简单,系统定义过于抽象,则在系统设计与编码阶段遇到的困难就越多,特别是其中若不得不做一些功能性甚至系统结构性方面的变动,将面对许多重复性的工作。在设计开发BBS论坛过程中重复工作过多,将会极大地影响系统开发的积极性,进而影响整个系统的质量。系统分析越充分,系统定义越具体,那么后续的系统设计与开发工作就越有效率,且系统的质量也越有保障。
对于本论坛来说,实现了现在流行论坛的大部分功能,但也存在很多需要改进的方面。首先是界面不是很美观,排版布局都是要进过进一步美化的。其次是对用户使用的友好提示做的还不够,对于某些操作没有成功的话,应该给出相应的错误信息提示。还有就是可以加入一些功能,如设置精华帖子[17],设置置顶帖子。还可以对发表帖子和回复帖子的提交处理时对一些不文明信息进行限制输入[18]。由于时间的关系,又因为本文的题目是小型论坛系统,故只实现了本文中所列的那些功能,其它的功能有待后续实现。
回顾设计开发BBS论坛的开发过程,总结起来那就是,软件的开发是相当辛苦的,但成功以后的喜悦也是非常美妙的,其中投入的心血越多,成功以后你所获得的快乐与充实感也更多更强。
27
致 谢
经过近两个月的忙碌和学习,本次毕业设计已经接近尾声,作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起学习的同学们的支持,想要完成这个设计是难以想象的。
在这里首先要感谢我的导师XXX老师。武老师平日里工作繁多,但在我做毕业设计的每个阶段,从外出实习到查阅资料,开题报告的修改,中期检查,后期详细设计等整个过程中都给予了我悉心的指导。她严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。在此谨向武老师致以诚挚的谢意和崇高的敬意!
感谢我的室友们,从遥远的家来到这个陌生的城市里,是你们和我共同维系着彼此之间兄弟般的感情,维系着寝室那份家的融洽。四年了,仿佛就在昨天。四年里,我们没有红过脸,没有吵过嘴,没有发生上大学前所担心的任何不开心的事情。在此次论文设计过程中,你们给了提了很多有建设性的意见也给了我很多帮助。谢谢你们!
感谢我的爸爸妈妈,养育之恩,无以回报,你们健康快乐是我最大的心愿。 同时也感谢学院为我提供良好的做毕业设计的环境。
最后再一次感谢所有在毕业设计中曾经帮助过我的良师益友和同学,以及在设计中被我引用或参考的论著的作者。
28
因篇幅问题不能全部显示,请点此查看更多更全内容