《毕业设计论文基于JSP技术的FlyBBS论坛系统.doc》由会员分享,可在线阅读,更多相关《毕业设计论文基于JSP技术的FlyBBS论坛系统.doc(24页珍藏版)》请在三一办公上搜索。
1、河北师范大学附属民族学院河北师范大学附属民族学院 学生毕业论文(设计)题目 基于Jsp技术的FlyBBS论坛系统 作者姓名 系 别 专 业 班 级 指导教师 完成日期 2010 年 5 月 30 日 河北师范大学附属民族学院教务处编制基于JSP技术的FlyBBS论坛系统*系* 班 * *号 指导教师:*摘要:当今,随着网络的迅速发展,制作BBS论坛的技术和方法也越来越多。本文主要讲述利用Java Web的Jsp及相关技术来制作一个简单论坛。通过实际制作,实现了BBS论坛系统应有的一些基本功能,如:登陆功能,通过在登陆界面输入用户名和密码来实现会员的登录,用户只有登录成功了才能进行一系列的操作;
2、注册功能,用户首次登陆,注册时需要用户填写个人信息;除此之外,还有浏览帖子、发表帖子、回复贴子以及删除帖子等等功能。制作本论坛所用的前台软件是MyEclipse,后台数据库是MySQL,运行时所用的服务器是Tomcat,综合运用了HTML、JSP以及JavaScript语言。全文先对用到的软件进行了简单的介绍,然后依次对系统的应用进行需求分析、总体设计、详细设计;最后简要介绍了系统的发布和测试。关键词 FlyBBS论坛 JSP技术 登录 注册 发帖 回帖 浏览 删帖目 录1、绪论1.1 BBS历史背景及制作目的1.2 BBS的可行性及局限性2、相关软件及技术的概述2.1 MyEclipse7.
3、5、MySQL数据库、TOMCAT服务器简介2.2 JSP技术介绍3、应用需求分析3.1 用户登录3.2 用户注册3.3 用户浏览贴子3.4 用户回复帖子及投票3.5 发表帖子及删除帖子回复、发起投票3.6 用户之间的留言4、系统总体设计4.1 页面的功能4.2 数据库设计4.3 系统用例5、系统详细设计5.1 建立数据库及数据表5.2 用户登录功能的设计及实现5.3 新用户注册功能的实现5.4 用户浏览帖子功能的实现5.5 用户发帖、回复帖子功能的实现5.6 用户删除回复本贴功能的实现5.7 用户之间的联络6、论坛的发布测试7、参考文献1、绪论1.1 BBS历史背景及制作目的当前形势下,BB
4、S论坛种类繁多,通过BBS可随时取得国际最新的软件及信息,也可以通过BBS来和别人讨论计算机软件、硬件、Internet、多媒体、程序设计以及医学等等各种有趣的话题。 BBS的英文全称是Bulletin Board System,翻译为中文就是“电子公告板”。BBS最早是用来公布股市价格等类信息的,当时BBS连文件传输的功能都没有,而且只能在苹果计算机上运行。早期的BBS与一般街头和校园内的公告板性质相同,只不过是通过电脑来传播或获得消息而已。一直到个人计算机开始普及之后,有些人尝试将苹果计算机上的BBS转移到个人计算机上,BBS才开始渐渐普及开来。BBS最初是为了给计算机爱好者提供一个互相交
5、流的地方。70年代后期,计算机用户数目很少且用户之间相距很远。因此,BBS(当时全世界一共不到一百个站点)提供了一个简单方便的交流方式,用户通过 BBS可以交换软件和信息。到了今天,BBS的用户才扩展到各行各业,花样非常多。BBS论坛是一种比较好的交流平台,他能方便人们进行即时在线交流,发表各种信息,实现网络资源的共享。而且,也能促使人们敞开心扉去学习知识、追求进步,以至于能更好的利用网络资源。因此,BBS的普及已经是人们交流各方面知识的首选,而且越来越多的BBS论坛需要提供给用户。1.2 BBS的可行性及局限性随着计算机软件的迅速发展,BBS的界面效果越来越美观,功能、作用和范围也得到了迅速
6、扩大。与此同时,制作BBS论坛的方法和所用的软件种类也越来越多了。当前比较流行的,一个是基于JSP网页技术,一个是基于ASP.net网页技术,还有一个是基于PHP网页技术。此次BBS论坛制作的界面效果比较粗糙,功能也不是很强大,但一些基本的功能都还有,比如,用户登陆,发表新的帖子,查看已存在的帖子,回复别人发表的帖子(也叫跟帖)以及管理员删除垃圾跟帖等等。但是像一些高级功能,比如,搜寻或查找帖子的功能,上传图片或文件的功能,个人空间的功能等。由于本人所学知识以及能力地限制,并没能将其实现。2、相关软件及技术的概述2.1 MyEclipse7.5、MySQL数据库、TOMCAT服务器简介MyEc
7、lipse7.5是现今国内企业流行的基于Eclipse的商业开发工具 MyEclipse的当前比较新版本。MyEclipse 7.5集中了开源和商业软件的开发支持的大多数框架,方便易用,功能强大,获得了广大开发人员的喜爱。它支持开发调试基于Spring, Hibernate,Struts, JSF, JPA, EJB, Web Service 等 Java EE 技术的项目。MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是
8、开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,它是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件
9、开发商的认可,成为目前比较流行的Web 应用服务器。Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。2.2 JSP技术介绍JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页
10、技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。Java Servlet
11、是JSP技术的基础,JSP本身就是预先被编译成Servlet,然后再运行的,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成,Servlet这个名称大概源于Applet,现在国内的翻译方式很多,本文为了避免误会,本文直接采用Servlet这个名称而不做任何翻译,读者如果愿意,可以称之为“小服务程序”。Servlet其实和传统的CGI程序和ISAPI、NSAPI等Web程序开发工具的作用是相同的,在使用Java Servlet以后,用户不必再使用效率低下的CGI方式,也不必使用只能在某个固定Web服务器平台运行的API方式来动态生成Web页面。许多Web服务器都支持
12、Servlet,即使不直接支持Servlet的Web服务器也可以通过附加的应用服务器和模块来支持Servlet。得益于Java的跨平台的特性,Servlet也是平台无关的,实际上,只要符合Java Servlet规范,Servlet是完全平台无关且是Web服务器无关的。由于Java Servlet内部是以线程方式提供服务,不必对于每个请求都启动一个进程,并且利用多线程机制可以同时为多个请求服务,因此Java Servlet效率非常高。但Java Servlet也不是没有缺点,和传统的CGI、ISAPI、NSAPI方式相同,Java Servlet是利用输出HTML语句来实现动态网页的,如果用J
13、ava Servlet来开发整个网站,动态部分和静态页面的整合过程简直就是一场噩梦。这就是为什么SUN还要推出Java Server Pages的原因。3、应用需求分析作为一个BBS论坛,它应该具有BBS所有的一些基本功能,包括:用户登陆功能,新用户注册功能,用户浏览帖子的功能以及用户发表、回复、修改和删除帖子,用户之间的交流功能等。接下来,我将详细阐述一下这些功能。3.1 用户登录进入登录页面后,对于第一次登陆的用户来说,首先需要注册,单击“新用户注册”按钮即可进入注册界面,注册完成后返回登录界面。然后,在对应的地方分别输入用户名和密码,点击“登录”按钮,系统即将用户名和密码发送到服务器,与
14、保存在服务器数据库中的信息进行核对。若核对正确,则进入帖子浏览的界面,若不正确,则重新返回登录界面。3.2 用户注册注册新用户前,用户需要先阅读相关规定并且只有在接受相关规定,才能继续注册。注册界面如图所示:3.3 用户浏览贴子 用户登陆后,即可浏览所有帖子,亦可察看某一特定帖子。 3.4 用户回复帖子及投票用户登陆后,并且可以查看相应帖子,并留言(该功能只能是登陆用户才能享有)。另外,用户还可以对他人发起的投票进行投票。3.5 发表帖子及删除帖子回复、发起投票 用户登录后,可在自己的版面下发表新帖,并且删除一些垃圾跟帖。用户还可以对自己感兴趣的问题及热点发起投票。3.6 用户之间的留言 用户
15、之间如果想要交流并且不被他人知道,则可以通过短信息留言及QQ等方式进行交流。4、系统总体设计4.1 页面的功能论坛的首页、分类页面、登陆、注册、帖子详细页面回复帖子页面、发帖页面、个人信息修改页面、会员列表页面等。4.2 数据库设计主要包括论坛帖子实体(bbs)、论坛分类实体(classtype)、投票实体(vote)、在线用户实体(online)、好友实体(friend)、子论坛信息实体(board)、论坛公告表(bbsnews)等。登陆4.3 系统用例查看分类改资料看公告注册普通用户看帖子发帖回复帖子修改帖子系统设置管理员管理公告管理分类存放数据数据访问层控制器层视图页面 JSP页面 se
16、rvlet JDBC 数据库5、系统详细设计5.1 建立数据库及数据表 5.1.1 建立数据库的语句 create database if not exists bbs; 5.1.2 建立所用到的个数据表语句 /建立bbs数据表 CREATE TABLE bbs ( AnnounceID int(11) NOT NULL auto_increment, ParentID int(11) NOT NULL default 0, Child int(11) NOT NULL default 0, BoardID int(11) NOT NULL default 0, UserName varcha
17、r(50) NOT NULL default , UserEmail varchar(255) NOT NULL default , Topic varchar(255) NOT NULL default , Title varchar(50) NOT NULL, Body longtext NOT NULL, DateAndTime varchar(30) NOT NULL default 0000-00-00 00:00:00, hits int(11) NOT NULL default 0, ip varchar(20) NOT NULL default , Expression var
18、char(255) NOT NULL default , istop int(11) NOT NULL default 0, islock int(11) NOT NULL, isgood int(11) NOT NULL default 0, isvote int(11) NOT NULL, heart varchar(30) NOT NULL, type varchar(30) NOT NULL, lastre varchar(30) default NULL, state int(1) default NULL, PRIMARY KEY (AnnounceID), KEY boardbb
19、s1 (BoardID) ENGINE=MyISAM AUTO_INCREMENT=130 DEFAULT CHARSET=gbk;/建立bbslink数据表CREATE TABLE bbslink ( id int(11) NOT NULL auto_increment, boardname varchar(50) NOT NULL default , readme varchar(255) NOT NULL default , url varchar(150) NOT NULL default , KEY id (id) ENGINE=MyISAM AUTO_INCREMENT=3 DEF
20、AULT CHARSET=gbk;/建立bbsnews数据表CREATE TABLE bbsnews ( id int(11) NOT NULL auto_increment, boardid int(11) NOT NULL default 0, title varchar(50) NOT NULL default , content mediumtext NOT NULL, username varchar(50) NOT NULL default , addtime varchar(30) NOT NULL default 0000-00-00 00:00:00, KEY bbsnews
21、boardid (boardid), KEY id (id) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=gbk;/建立board数据表CREATE TABLE board ( boardid int(11) NOT NULL default 0, BoardType varchar(50) NOT NULL default , classType int(11) NOT NULL default 0, readme varchar(255) NOT NULL default , moderid int(4) default NULL, Boa
22、rdMaster varchar(50) default , lockboard int(11) NOT NULL default 0, Forumlogo varchar(255) NOT NULL default , indexIMG varchar(255) NOT NULL default , lastrootid int(11) default NULL, lasttitle varchar(255) default , boarduser mediumtext, lastposttime varchar(255) default NULL, PRIMARY KEY (boardid
23、) ENGINE=MyISAM DEFAULT CHARSET=gbk;/建立bookmark数据表CREATE TABLE bookmark ( id int(11) NOT NULL auto_increment, username varchar(50) NOT NULL default , url varchar(100) default NULL, topic varchar(100) default NULL, addtime varchar(19) default NULL, KEY bookmarkUserName (username), KEY id (id) ENGINE=
24、MyISAM DEFAULT CHARSET=gbk;/建立classtype数据表CREATE TABLE classtype ( id int(10) NOT NULL default 0, classType varchar(50) NOT NULL default ) ENGINE=MyISAM DEFAULT CHARSET=gbk;/建立config数据表CREATE TABLE config ( ForumName varchar(20) NOT NULL default , ForumURL varchar(100) NOT NULL default , CompanyName
25、 varchar(40) NOT NULL default , HostUrl varchar(100) NOT NULL default , SystemEmail varchar(50) NOT NULL default , Logo varchar(100) NOT NULL default , IpFlag int(11) NOT NULL default 0, guestuser int(11) NOT NULL default 0, ads1 mediumtext NOT NULL, ads2 mediumtext NOT NULL, Copyright varchar(255)
26、NOT NULL default , Version varchar(255) NOT NULL default , TitleFlag tinyint(3) unsigned NOT NULL default 0, uploadFlag tinyint(3) unsigned NOT NULL default 0, wealthReg int(11) NOT NULL default 0, wealthAnnounce int(11) NOT NULL default 0, wealthReannounce int(11) NOT NULL default 0, wealthDel int(
27、11) NOT NULL default 0, wealthLogin int(11) NOT NULL default 0, epReg int(11) NOT NULL default 0, epAnnounce int(11) NOT NULL default 0, epReannounce int(11) NOT NULL default 0, epDel int(11) NOT NULL default 0, epLogin int(11) NOT NULL default 0, cpReg int(11) NOT NULL default 0, cpAnnounce int(11)
28、 NOT NULL default 0, cpReannounce int(11) NOT NULL default 0, cpDel int(11) NOT NULL default 0, cpLogin int(11) NOT NULL default 0, Maxonline int(11) NOT NULL default 0, MaxonlineDate varchar(50) NOT NULL default ) ENGINE=MyISAM DEFAULT CHARSET=gbk;/建立friend数据表CREATE TABLE friend ( F_id int(11) NOT
29、NULL auto_increment, F_username varchar(50) default NULL, F_friend varchar(50) default NULL, F_addtime varchar(19) default NULL, KEY F_id (F_id) ENGINE=MyISAM DEFAULT CHARSET=gbk;/建立log数据表CREATE TABLE log ( l_id int(11) NOT NULL auto_increment, l_username varchar(50) default NULL, l_content varchar(
30、50) default NULL, l_url varchar(255) default NULL, l_addtime varchar(19) default NULL, KEY l_id (l_id) ENGINE=MyISAM DEFAULT CHARSET=gbk;/建立message数据表CREATE TABLE message ( id int(11) NOT NULL auto_increment, sender varchar(50) default NULL, incept varchar(50) default NULL, title varchar(100) defaul
31、t NULL, content mediumtext, flag int(11) default 0, sendtime varchar(19) default NULL, delR int(11) default 0, delS int(11) default 0, isSend int(11) default 0, PRIMARY KEY (id), KEY id (id) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=gbk;/建立online数据表CREATE TABLE online ( id int(4) NOT NULL auto_
32、increment, username varchar(50) NOT NULL default , bbstype int(4) NOT NULL, ip varchar(50) NOT NULL default , startime varchar(30) NOT NULL default 0000-00-00 00:00:00, browser varchar(100) NOT NULL default , state int(1) default NULL, PRIMARY KEY (id) ENGINE=MyISAM AUTO_INCREMENT=71 DEFAULT CHARSET
33、=gbk;/建立user数据表CREATE TABLE user ( UserID int(11) NOT NULL auto_increment, UserName varchar(50) NOT NULL default , nickName varchar(50) default NULL, UserEmail varchar(255) default NULL, Article int(11) default 0, UserPassword varchar(11) NOT NULL default , sign mediumtext, Sex varchar(10) default N
34、ULL, homepage varchar(255) default NULL, addDate varchar(30) default 0000-00-00 00:00:00, logins int(11) default 0, face varchar(255) default NULL, width int(11) default 0, height int(11) default 0, qq varchar(50) default NULL, lastlogin varchar(30) default 0000-00-00 00:00:00, bbstype int(11) defau
35、lt 0, lockuser int(11) default 0, userWealth int(11) default 0, userEP int(11) default 0, userCP int(11) default 0, PRIMARY KEY (UserID), KEY UserName (UserName) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=gbk;/建立vote数据表CREATE TABLE vote ( voteid int(11) NOT NULL auto_increment, announceid int(1
36、1) NOT NULL default 0, vote mediumtext NOT NULL, votenum int(11) NOT NULL, voteuser mediumtext NOT NULL, votetype int(30) NOT NULL, PRIMARY KEY (voteid), KEY voteid (voteid) ENGINE=MyISAM AUTO_INCREMENT=153 DEFAULT CHARSET=gbk;5.2 用户登录功能的设计及实现login.jsp页面完成登陆功能,将用户输入的用户名和密码提交给user action 处理,如果内容与数据库中
37、的数据正确匹配,则跳转到主题列表页面;如果内容不匹配,则给出错误信息。控制代码:else if (login.equals(path) / 登录论坛Message message = new Message();user.setUserName(request.getParameter(userName);user.setUserPassword(request.getParameter(userPassword);List list = userbiz.searchById(2, user);MessageBiz messagebiz = new MessageBiz();message.s
38、etIncept(user.getUserName();List listMess = messagebiz.searchById(2, message);if (list.size() 0) user = (User) list.get(0);session.setAttribute(user, user);/ 记录登录后的用户信息session.setAttribute(userName, user.getUserName();/ 记录用户名/ session.setAttribute(news, user.getLockuser();session.setAttribute(news,
39、listMess.size();session.setAttribute(bbstype, user.getBbstype();Online online = new Online();online = (Online) session.getAttribute(online);online.setUsername(user.getUserName();online.setBbstype(user.getBbstype();String t_onlineid = session.getAttribute(onlineid).toString();if (t_onlineid != null)
40、int onlineid = cutils.strToInt(t_onlineid);online.setId(onlineid);onlinebiz.update(online);session.setAttribute(online, online);String type = request.getParameter(type);if (!admin.equals(type)tourl = index.jsp;elsetourl = manager/admin_main.jsp; else request.setAttribute(title, 登录失败 );request.setAtt
41、ribute(info, 用户名密码不正确 !);request.setAttribute(url, login.jsp);5.3 新用户注册功能的实现addReg.jsp页面用于完成新用户的注册功能。在该页面中用户需要输入用户名、密码、确认密码,并可以选择注册名的性别、头像,填写自己的QQ号码以及邮箱、个性签名。完成用户注册的代码:public boolean add(User user) String sql = insert into user(UserName,nickName,UserEmail,Article,UserPassword,sign,Sex,homepage,addDa
42、te,logins,face,width,height,qq,lastlogin,bbstype,lockuser,userWealth,userEP,userCP) values(+ user.getUserName()+ ,+ user.getNickName()+ ,+ user.getUserEmail()+ ,+ user.getArticle()+ ,+ user.getUserPassword()+ ,+ user.getSign()+ ,+ user.getSex()+ ,+ user.getHomepage()+ ,+ user.getAddDate()+ ,+ user.getLogins()+ ,+ user.getFace()+ ,+ user.getWidth()+ ,+ user.getHeight()+ ,+ user.getQq()+ ,+ user.getLastlogin()+ ,+ user.getBbstype()+ ,+ user.getLockuser()+ ,+ user.getUse