1、I摘 要当今,随着网络的迅速发展,制作 BBS 论坛的技术和方法也越来越多。本文主要讲述利用 Java Web 的相关技术来制作一个简单论坛。通过实际制作,实现了 BBS 论坛系统应有的一些基本功能,如:登陆功能,通过在登陆界面输入用户名和密码来实现会员的登录,用户只有登录成功了才能进行一系列的操作;注册功能,用户首次登陆,需要先注册,注册时需要用户填写个人信息;找回密码功能,当用户忘记密码时可以通过此功能找回密码,找回密码时需要用户记得注册时填写的个人信息。除此之外,还有浏览帖子、发表帖子、回复贴子以及删除帖子等等功能。制作本论坛所用的前台软件是MyEclipse,后台数据库是 MySQL,
2、运行时所用的服务器是 Tomcat,综合运用了HTML、JSP 以及 JavaScript 语言。全文先对用到的软件进行了简单的介绍,然后依次对系统的应用进行需求分析、总体设计、详细设计;最后简要介绍了系统的发布和测试。关键词:BBS 论坛; JSP 技术; 登陆;注册; 找回密码;浏览贴子; 发表帖子; 回复贴子; 删除帖子II目 录第一章 引 言.1第二章 需求分析2第三章 总体设计4第四章 详细设计与实现7第五章 系统测试.15结 论 .16参考文献.16大连交通大学软件实践1第一章 引 言BBS 的英文全称是 Bulletin Board System,翻译为中文就是“电子公告板”。B
3、BS最早是用来公布股市价格等类信息的,当时 BBS 连文件传输的功能都没有,而且只能在苹果计算机上运行。早期的 BBS 与一般街头和校园内的公告板性质相同,只不过是通过电脑来传播或获得消息而已。一直到个人计算机开始普及之后,有些人尝试将苹果计算机上的 BBS 转移到个人计算机上,BBS 才开始渐渐普及开来。BBS 最初是为了给计算机爱好者提供一个互相交流的地方。70 年代后期,计算机用户数目很少且用户之间相距很远。因此,BBS(当时全世界一共不到一百个站点)提供了一个简单方便的交流方式,用户通过 BBS 可以交换软件和信息。到了今天,BBS 的用户才扩展到各行各业,花样非常多。BBS 论坛是一
4、种比较好的交流平台,他能方便人们进行即时在线交流,发表各种信息,实现网络资源的共享。而且,也能促使人们敞开心扉去学习知识、追求进步,以至于能更好的利用网络资源。 鉴于 BBS 的这些优点,又加之制作 BBS 的一些基本知识我曾学习过,如Java 程序设计、JSP 网页制作以及MyEclipse6.0 基础教程这些书我都看过或自学过。考虑到个人喜好,所以最后我决定选择 Java Web 开发BBS 论坛制作,这个题目作为我毕业论文,同时也能积累一点开发 Java 小项目的经验,达到锻炼自己在这方面能力的目的。我将采用基于 JSP 网页技术的方法进行简单的 BBS 论坛制作。我所用的开发软件是My
5、Eclipse6.0,它是一款可以做基础 Java 项目开发的工具;JDK1.6,当前进行 Java 开发的最新版本;数据库是 MySQL,它是一款当前比较流行的进行中小量数据开发的中小型数据库;服务器是 Tomcat6.0,它也是一款当前比较流行的软件,主要用于网络服务器的开发。这些东西对一个搞 Java 开发的人来说应该是很普遍的。因此,无论在技术还是软件上都应该可以实现的。大连交通大学软件实践2第二章 需求分析作为一个 BBS 论坛,它应该具有 BBS 所有的一些基本功能,包括:用户登陆功能,用户取回密码功能,用户浏览帖子的功能以及用户发表、回复、修改和删除帖子的功能等。接下来,我将详细
6、阐述一下这些功能。(一)、用户登录和注册功能进入登录页面后,对于第一次登陆的用户来说,首先需要注册,单击“新用户注册”按钮即可进入注册界面,注册完成后返回登录界面。输入用户名和密码,点击“登录”按钮,系统即将用户名和密码发送到网络服务器上,与保存在服务器数据库中的信息进行核对。若核对正确,则进入帖子浏览的界面,若不正确,则重新返回登录界面。(二)、用户找回密码功能在有些时候,我们可能会忘记登录密码,这时就用到了密码找回功能,通过正确的回答当初注册时的一些信息即可取回密码。(三)、用户帖子的浏览当用户登录成功后便进入该页面,在该页面可以浏览他人已经发表的主题帖子,1、 帖子的总览在主题页面中主要
7、有两部分组成,一是用户的个人信息,再就是他人已经发表的主题帖子,每个帖子都包含了一些简单信息:主题、作者和时间。鼠标单击主题便进入了下一页面该帖的详细内容页面。2、查看特定帖的详细信息详细内容页面主要包含了该帖的详细内容和他人对此帖的回复,点击“我要回复”便可回复此贴。(四)、用户帖子的发布/修改/删除/回复功能用户成功登陆后,可以进行一些操作,如发表帖子、删除自己发表的帖子、回复他人或自己的帖子等。1、 帖子的发布大连交通大学软件实践3登陆成功进入主题页面后,点击“发表新的主题文章”按钮后,便可进入发表帖子的界面。在该页面中填写完信息,点击“发送新的主题” ,点击“我要回复”按钮便可对该贴进
8、行回复,如要想对其他回复此贴的人进行回复,可以点击回复人后面的“回复 XX 楼”按钮对其进行回复。2、帖子的删除在主题帖子页面中,每幅帖子的最左面都有一个 删除按钮,点击此按钮便可删除你所发表的帖子。每个用户(除管理员外)只可删除自己的帖子。(五)、管理员对帖子的查看/发表/删除功能1、管理员查看或发表帖子管理员查看或发表帖子与普通用户的一样。2、 管理员删除帖子管理员删除帖子与普通用户的区别在于,他可以删除任何人发表的贴子,另外他还有一项特权,就是可以删除任何人回复的垃圾帖子。大连交通大学软件实践4第三章 总体设计(一)、系统结构设计本 BBS 论坛系统共分为三大功能模块:(1) 登陆管理功
9、能系统;(2) 注册功能系统;(3) 找回密码功能系统。登陆管理功能系统,又包括四个子模块:单纯的用户登录模块,用户发表帖子模块,用户回复他人帖子模块和用户删除自己所发表的帖子模块。1、 各个页面的功能及示意图有两个页面用于基本功能的实现,被其它页面所调用:页面名称 主要功能Opendata.jsp 打开数据库链接用于实现基本功能 Convert.jsp 用于字符的转换其余的页面如下表所示:各个模块 页面名称 页面功能开始登陆的界面Login.html 系统启动时的首页Enter.jsp 用于判断用户名和密码是否正确MainForm.jsp 登陆成功后转入该页面Discuss.jsp 浏览主题
10、帖子的页面,在这可以查看各类帖子Person.jsp 显示个人信息的页面NewTitle.jsp 发表新的主题帖子的页面SaveNewTitle.jsp 将新发表的帖子存入数据库表 Discuss 中Detail.jsp 用于显示帖子的内容及回复该帖的内容SaveRevert.jsp 将回复内容存入数据库表 Reply 中登录管理功能系统Delete.jsp 用于删除帖子大连交通大学软件实践5Register.jsp 该界面用于新用户注册注册功能系统SaveRegister.jsp 保存新用户注册信息到数据库表 Student 中找回密码功能系统GetPassword.jsp 用于用户找回密码
11、2、各个页面之间的调用关系各个页面之间的调用关系如下图所示:注意:其中有两个基本页面(Convert.jsp 和 Opendata.jsp)被其它的页面所引用,在此图中并没有包含这两个页面。(二)、数据库设计根据本 BBS 论坛功能的要求以及功能模块的划分,本信息数据库可存放在三个表中,它们是,用户信息数据库表 Student、发表的帖子的数据库表 Discuss 和回复的帖子的数据库表 Reply,数据库表的具体设计如下所示:1、用户信息表 Student表名:Student用户信息表 Student 包括八个字段:即,ID(用户的标识符)、USERNAME(用户名)、PASSWORD(用户
12、密码)、SEX(性别)、AGE(年龄)、BIRTH(生日)、TELEPHONE(联系电话)、EMAIL(电子邮箱)等。2、存储帖子所用的信息表 DISCUSS表名:DISCUSS大连交通大学软件实践6信息表 DISCUSS 包括七个字段:即,NAME(发帖人的昵称)、EMAIL(电子邮箱)、SUBJECT(帖子的主题)、CONTENT(帖子的内容)、TIME(发帖的时间)、USERNAME(用户名)、ID(帖子的标识)等。3、 存储回复帖子的信息表 REPLY表名:REPLY信息表 REPLY 包括五个字段:即,NAME(回帖人的昵称)、CONTENT(回帖的内容)、TIME(回帖的时间)、R
13、EPLY(所回复的主贴的标识符)、ID(回复贴的标识符)等。大连交通大学软件实践7第四章 详细设计与实现(一)、建立数据库及数据库表建立一个数据库 Test 和三个数据库表(STUDENT、DISCUSS 和 REPLY)。首先在 MyEclipse6.5 软件里配置 MySQL5.0,配置完成后在 MyEclipse 界面里建立名为“Test”的数据库,然后再建立三个数据库表(STUDENT、DISCUSS 和 REPLY)。创建表 student:stmt.executeUpdate(“create table student(id int not null auto_increment,
14、“ +“username varchar(20) unique,“ +“password varchar(20) not null,“ +“sex varchar(8) not null,“+“age varchar(4) ,“+“birth varchar(20) not null,“+“telephone varchar(12),“+“email varchar(40) not null,“ +“primary key (id)“);创建表 discuss:stmt.executeUpdate(“create table discuss(name char(20) not null,“+“
15、email char(40) not null,“+“subject char(60) not null,“+“content text not null,“+“time char(40),“+“username char(20),“+“id int not null auto_increment,primary key (id)“);创建表 reply:stmt.executeUpdate(“create table reply(name char(20) not null,“+“content text not null,“+“time char(40),reply int,“+“id i
16、nt not null auto_increment,“+“primary key (id)“);(二)、用户登录功能的实现1、 登陆功能的实现大连交通大学软件实践8通过 Login.html 界面传递参数 username 和 password 给 Enter.jsp 界面,然后查询数据库,判断用户名和密码是否正确。若判断正确则为用户建立一个 session,并进入了用户主界面。(三)、浏览主题帖子功能的实现1、翻页功能的实现在这里可以实现翻页功能,根据你的实际需求进行选择。程序为:lastPage)pageNO = lastPage;firstNum = (pageNO - 1) * Ma
17、xNum + 1;lastNum = pageNO * MaxNum;if (pageNO = 1)prePage = 1;elseprePage = pageNO - 1;if (pageNO = lastPage)nextPage = pageNO;elsenextPage = pageNO + 1;sql = “select * from discuss where id between “ + firstNum+ “ and “ + lastNum;rs = stm.executeQuery(sql);%(四)、主题帖子详细内容页面的制作通过 Discuss.jsp 页面传递参数 ID
18、,然后进行数据库查询获得帖子的详细信息,并显示的页面上。(五)、在帖子详细内容页面里实现回复功能在 Detail.jsp 页面里实现回复功能,让用户可以在同一页面实现浏览贴子、回复帖子和浏览别人回复的帖子的功能:1、 SaveRevert.jsp 页面中的代码:此页面的功能保存由Detail.jsp页面传来的回帖信息,保存次信息到Reply数据库表中:(六)、用户发表新帖子页面的制作1、SaveNewTitle.jsp 页面用于保存由 NewTitle.jsp 页面传来的数据信息首先将传递来的数据进行转换,然后将其插入数据库 Discuss 中:(七)、新用户注册功能的实现大连交通大学软件实践
19、12SaveRegister.jsp 用于保存新用户的信息,这些信息是由 Register.jsp 页面传递而来,首先判断用户名是否已被注册过了,若被注册过则提示已注册。提示信息:out.println(“);%(八)、用户取回密码功能的实现大连交通大学软件实践13GetPassword.jsp 页面用于取回密码,给该页面传递一些用户填写的信息,将该用户注册时的对应信息与此信息进行比较,当该信息与用户注册时填写的一样时,便能取回密码,否则不能:提示信息:“+ errmsg + password + “);out.println(“); else String errmsg = “对不起,你暂时
20、还不能取回你的密码,原因是你没能正确的填写信息!“;out.println(“提示信息:“+ errmsg + “);out.println(“);%(九)、用户和管理员删除帖子功能的实现大连交通大学软件实践14Delete.jsp 页面用于删除帖子,在此页面获得两个参数 id 和 replyid。其中 id为帖子的标识符,replyid 为是否是回帖,当 replyid0 时表示要删除的是回复贴,否则,当 replyid 0) /当 replyid0 时表示要删除的是回复贴if (session.getValue(“username“).equals(“TongYong“) sql = “u
21、pdate reply set content=此回复已被删除!“+ “ where reply=“ + id + “ and id=“ + replyid;stm.executeUpdate(sql);response.sendRedirect(“detail.jsp?id=“ + id); else /否则,当 replyid=0 时表示要删除主帖sql = “select * from discuss where username=“+ session.getValue(“username“) + “;rs = stm.executeQuery(sql);if (rs.next()| s
22、ession.getValue(“username“).equals(“TongYong“) sql = “delete from discuss where id=“ + id;stm.executeUpdate(sql);sql = “alter table discuss drop id “;stm.executeUpdate(sql);sql = “alter table discuss add id int not null auto_increment primary key“;stm.executeUpdate(sql); response.sendRedirect(“discu
23、ss.jsp“);%大连交通大学软件实践15第五章 系统测试MyEclipse 支持发布 Web, EJB 和 Enterprise Application 项目到任何MyEclipse 支持的服务器上。它支持散包和打包发布。目前来说 Tomcat 和 JBoss 都是支持散包发布的。散包发布一般是开发时候来使用,MyEclipse 会把所有的文件按照 Java EE 规定的目录结构放在服务器的发布目录下。在这种情况下,MyEclipse 还会自动把修改过的文件,例如 JSP 文件,类文件等等复制过去,实现自动同步功能,这时修改了 JSP 页面不需要重新发布就能在浏览器里刷新后看到新的结果。这
24、样对开发来说是非常方便的。本论坛的发布测试分三步完成:(1) 散包发布 BBSTalk 项目BBSTalk 项目文件夹下包含了类库文件及资源文件。其中 src 文件夹下包含一个 Java 文件 JDBC_BBS.java,用于创建数据库表;WebRoot 文件夹下存放了所有的 jsp 页面,其下的 Pictures 文件夹存放了页面制作所需的图片。(2) 启动 Tomcat 服务器在 MyEclipse 界面下点击 按钮,在下拉菜单中选择 Tomcat5.x 服务器并单击“开始”按钮启动服务器,若启动成功显示以下信息:(3) 打开 IE 浏览器进行测试BBSTalk 发布完且 Tomcat 服
25、务器开启后,再打开 IE7.0(或以上版本)浏览器,在其地址栏中输入:http:/localhost:8080/BBSTalk/login.html(其中 localhost 为本地主机 IP 地址,8080 为 Tomcat 服务器端口号,BBSTalk 我项目名称)按回车即可进入 BBS 论坛首页登录界面。对于第一次登陆的用户来说,首先需要注册,单击“新用户注册”按钮即可进入注册界面, 注册成功即可登陆论坛。登陆后浏览帖子,发帖,删帖等一系列功能都可正常运行,起初不能识别中文的问题,也通过修改参数得到了解决。大连交通大学软件实践16结 论此次 BBS 论坛制作的界面效果比较粗糙,功能也不是
26、很强大,但幸好一些基本的功能都还有,比如,用户(或管理员)登陆,发表新的帖子,查看已存在的帖子,回复别人发表的帖子(也叫跟帖)以及管理员删除垃圾帖子或着垃圾的跟帖等等。但是像一些高级功能,比如,搜寻或查找帖子的功能,上传图片或文件的功能,个人空间的功能等。由于本人所学知识以及能力地限制,并没能将其实现。参考文献1刘长炯.MyEclipse 6 Java 开发中文教程DK.北京:2007:1-992郑阿奇.MySQL 实用教程M.北京:电子工业出版社,2009:1-2184萨师煊,王珊.数据库系统概论M.北京:高等教育出版社,2002:56-1105谷雨,阎隽,高春蓉等译.JSP 从入门到精通M.北京:电子工业出版社,2002:1-1046李迎秋,姜仲.JSP 实用教程M.大连:大连理工大学出版社,2007:1-2007赵明昌译.JSP 数据库编程指南M.北京:北京希望电子出版社,2001:37-488葛蒙,程显峰.JavaScript 实践与提高M.北京:中国电力出版社,2002:108-2289黄嘉辉.Java 网络程序设计M.北京:清华大学出版社,2002:445-47010李绪成.Java Web 开发教程入门与提高篇M.北京:清华大学出版社,2009:1-198http:/11舒红平.Web 数据库编程:JavaM.西安:西安电子科技大学出版社,2006:1-185