JSP课程设计__基于JSP技术开发的BBS论坛系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JSP程序设计-课程设计
基于JSP技术开发的BBS论坛系统
院系:
专业班级:
组长:
2010年 12 月 15 日
摘要
当今,随着网络的迅速发展,制作BBS论坛的技术和方法也越来越多。

本文主要讲述利用Java Web的相关技术来制作一个简单论坛。

通过实际制作,实现了BBS论坛系统应有的一些基本功能,如:登陆功能,通过在登陆界面输入用户名和密码来实现会员的登录,用户只有登录成功了才能进行一系列的操作;注册功能,用户首次登陆,需要先注册,注册时需要用户填写个人信息;找回密码功能,当用户忘记密码时可以通过此功能找回密码,找回密码时需要用户记得注册时填写的个人信息。

除此之外,还有浏览帖子、发表帖子、回复贴子以及删除帖子等等功能。

制作本论坛所用的前台软件是MyEclipse,后台数据库是MySQL,运行时所用的服务器是Tomcat,综合运用了HTML、JSP以及JavaScript语言。

关键词:BBS 论坛; JSP 技术; 登陆;注册; 找回密码;浏览贴子; 发表帖子; 回复贴子; 删除帖子
目录
一、概论 0
(一)、BBS历史背景 0
(二)、BBS制作目的 0
(四)、BBS制作的局限性 (1)
二、相关软件、技术介绍及开发环境的选择 (1)
(一)、开发环境介绍 (1)
(二)、JDK(Java Development Kit) (1)
(三)、MyEclipse6.5软件的简单介绍 (2)
(四)、MySQL数据库介绍 (2)
(五)、JSP(Java Server Pages)网页设计技术介绍 (2)
(六)、Tomcat5.5服务器介绍 (2)
三、应用需求分析 (2)
(一)、用户登录和注册功能 (3)
(二)、用户找回密码功能 (3)
(三)、用户帖子的浏览 (4)
(五)、用户回复他人帖子 (5)
(六)、管理员对帖子的查看/发表/删除功能 (5)
四、系统总体设计 (6)
(一)、系统结构设计 (6)
(二)、数据库设计 (7)
五、系统详细设计 (9)
(一)、建立数据库及数据库表 (9)
(二)、用户登录功能的实现 (10)
(三)、用户发表新帖子页面的制作 (12)
一、概论
当前形势下,BBS论坛种类繁多,通过BBS可随时取得国际最新的软件及信息,也可以通过BBS来和别人讨论计算机软件、硬件、Internet、多媒体、程序设计以及医学等等各种有趣的话题,更可以利用BBS来刊登一些“征友”、“廉价转让”及“公司产品”等启事。

只要您拥有1台计算机、1只调制解调器和1条电话线,就能够进入这个“超时代”的领域。

(一)、BBS历史背景
BBS的英文全称是Bulletin Board System,翻译为中文就是“电子公告板”。

BBS 最早是用来公布股市价格等类信息的,当时BBS连文件传输的功能都没有,而且只能在苹果计算机上运行。

早期的BBS与一般街头和校园内的公告板性质相同,只不过是通过电脑来传播或获得消息而已。

一直到个人计算机开始普及之后,有些人尝试将苹果计算机上的BBS转移到个人计算机上,BBS才开始渐渐普及开来。

近些年来,由于爱好者们的努力,BBS的功能得到了很大的扩充。

(二)、BBS制作目的
BBS论坛是一种比较好的交流平台,他能方便人们进行即时在线交流,发表各种信息,实现网络资源的共享。

而且,也能促使人们敞开心扉去学习知识、追求进步,以至于能更好的利用网络资源。

(三)、BBS制作的可行性
随着计算机软件的迅速发展,BBS的界面效果越来越美观,功能、作用和范围也得到了迅速扩大。

与此同时,制作BBS论坛的方法和所用的软件种类也越来越多了。

而在这里,我将采用基于JSP网页技术的方法进行简单的BBS论坛制作。

我所用的开发软件是MyEclipse6.5,它是一款可以做基础Java项目开发的工具;JDK1.6,当前进行Java 开发的最新版本;数据库是MySQL,它是一款当前比较流行的进行中小量数据开发的中小型数据库;服务器是Tomcat5.5,它也是一款当前比较流行的软件,主要用于网络服务器的开发。

基于JSP技术开发的BBS论坛系统
(四)、BBS制作的局限性
此次BBS论坛制作的界面效果比较粗糙,功能也不是很强大,但幸好一些基本的功能都还有,比如,用户(或管理员)登陆,发表新的帖子,查看已存在的帖子,回复别人发表的帖子(也叫跟帖)以及管理员删除垃圾帖子或着垃圾的跟帖等等。

但是像一些高级功能,比如,搜寻或查找帖子的功能,上传图片或文件的功能,个人空间的功能等。

由于本人所学知识以及能力地限制,并没能将其实现。

二、相关软件、技术介绍及开发环境的选择
(一)、开发环境介绍
1、硬件环境与软件环境要求
2、制作工具
JDK1.6用于Java程序的解释执行,MyEclipse6.5提供了一个良好的开发界面,MySQL5.0用于数据库的连接,Tomcat5.5 Web服务器用于运行此项目。

(二)、JDK(Java Development Kit)
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。

自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。

1
(三)、MyEclipse6.5软件的简单介绍
MyEclipse 6.5集中了开源和商业软件的开发支持的大多数框架,方便易用,功能强大,获得了广大开发人员的喜爱。

它支持开发调试基于Spring, Hibernate,Struts, JSF, JPA, EJB, Web Service 等 Java EE 技术的项目。

(四)、MySQL数据库介绍
MySQL是一个小型关系型数据库管理系统,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

(五)、JSP(Java Server Pages)网页设计技术介绍
JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。

JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。

(六)、Tomcat5.5服务器介绍
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器, Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

三、应用需求分析
作为一个BBS论坛,它应该具有BBS所有的一些基本功能,包括:用户登陆功能,用户取回密码功能,用户浏览帖子的功能以及用户发表、回复、修改和删除帖子的功能等。

接下来,我将详细阐述一下这些功能。

基于JSP技术开发的BBS论坛系统
(一)、用户登录和注册功能
进入登录页面后,对于第一次登陆的用户来说,首先需要注册,单击“新用户注册”按钮即可进入注册界面,注册完成后返回登录界面。

然后,在对应的地方分别输入用户名和密码,点击“登录”按钮,系统即将用户名和密码发送到网络服务器上,与保存在服务器数据库中的信息进行核对。

若核对正确,则进入帖子浏览的界面,若不正确,则重新返回登录界面。

注册界面如下所示:
图4-1用户登录界面
(二)、用户找回密码功能
在有些时候,我们可能会忘记登录密码,这时就用到了密码找回功能,通过正确的回答当初注册时的一些信息即可取回密码。

图4-2 密码找回
3
(三)、用户帖子的浏览
当用户登录成功后便进入该页面,在该页面可以浏览他人已经发表的主题帖子,
图4-3 帖子浏览
在主题页面中主要有两部分组成,一是用户的个人信息,再就是他人已经发表的主题帖子,每个帖子都包含了一些简单信息:主题、作者和时间。

(四)、用户帖子的发布/修改/删除功能
登陆成功进入主题页面后,点击“发表新的主题文章”按钮后,便可进入发表帖子的界面。

在该页面中填写完信息,点击“发送新的主题”即可。

基于JSP技术开发的BBS论坛系统
图4-4发表新话题
(五)、用户回复他人帖子
打开他人的帖子,点击“我要回复”便可对该贴进行回复,如要想对其他回复此贴的人进行回复,可以点击回复(如图4-6)对其进行回复。

图4-6 帖子回复
(六)、管理员对帖子的查看/发表/删除功能
1、管理员查看或发表帖子
管理员查看或发表帖子与普通用户的一样。

5
2、管理员删除帖子
管理员删除帖子与普通用户的区别在于,他可以删除任何人发表的贴子,另外他还有一项特权,就是可以删除任何人回复的垃圾帖子。

四、系统总体设计
(一)、系统结构设计
本BBS论坛系统共分为三大功能模块:
(1)登陆管理功能系统;
(2)注册功能系统;
(3)找回密码功能系统。

登陆管理功能系统,又包括四个子模块:单纯的用户登录模块,用户发表帖子模块,用户回复他人帖子模块和用户删除自己所发表的帖子模块。

1、各个页面的功能及示意图
有两个页面用于基本功能的实现,被其它页面所调用:
其余的页面如下表所示:
(二)、数据库设计
1、用户信息表Student
表名:Student
用户信息表Student包括八个字段:即,ID(用户的标识符)、USERNAME(用户名)、PASSWORD(用户密码)、SEX(性别)、AGE(年龄)、BIRTH(生日)、TELEPHONE(联系电话)、EMAIL(电子邮箱)等。

STUDENT表的属性如下图所示:
STUDENT表的内容如下图所示:
2、存储帖子所用的信息表DISCUSS
表名:DISCUSS
信息表DISCUSS包括七个字段:即,NAME(发帖人的昵称)、EMAIL(电子邮箱)、SUBJECT(帖子的主题)、CONTENT(帖子的内容)、TIME(发帖的时间)、USERNAME(用户名)、ID(帖子的标识)等。

表的属性:
表的内容:
3、存储回复帖子的信息表REPLY
表名:REPLY
信息表REPLY包括五个字段:即,NAME(回帖人的昵称)、CONTENT(回帖的内容)、TIME(回帖的时间)、REPLY(所回复的主贴的标识符)、ID(回复贴的标识符)等。

表的属性:
表的内容:
五、系统详细设计
(一)、建立数据库及数据库表
建立一个数据库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," +
"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,"+
"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 int not null auto_increment,"+
"primary key (id))");
(二)、用户登录功能的实现
1、登陆界面的制作
(1)JavaScript标记语言判断输入的用户名和密码是否为空:
<script type=text/javascript>
// 验证输入不为空的脚本代码
function checkForm(form) {
if(ername.value == "") {
alert("用户名不能为空!");
ername.focus();
return false;
}
if(form.password.value == "") {
alert("密码不能为空!");
form.password.focus();
return false;
}
return true;
}
</script>
(2)登陆界面的制作:
<table border=0>
<form action="enter.jsp" method="post" onsubmit="return checkForm(this);">
<tr>
<td><h2>用户名:</td><td><h3><input type="text" name="username"></td>
</tr>
<tr>
<td><h2>密码:</td><td><h3><input type="password" name="password"></td> </tr>
<tr>
<td><input type="submit" value="登录" name="submit1" ></td>
<td><input type="reset" value="重置" name="reset1"></td>
</tr>
</form>
<tr>
<td>
<form action="getPassword.jsp" method=post >
<input type="submit" value="取回密码" name="getpass">
</form>
</td>
<td>
<form action="register.jsp" method=post >
<input type="submit" value="新用户注册" name="regist">
</form>
</td>
</tr>
</table>
2、登陆功能的实现
通过Login.html界面传递参数username 和 password 给Enter.jsp界面,然后查询数据库,判断用户名和密码是否正确。

若判断正确则为用户建立一个session,并进入了用户主界面。

<%
String username = request.getParameter("username");//参数传递,用户名
String password = request.getParameter("password");//参数传递,密码
PreparedStatement pstmt = null;// 数据库表达式
sql = "select * from Student where username = ? and password= ?";
// SQL语句
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
rs = pstmt.executeQuery();
if (rs.next()) {//
request.getSession(true);//创建session
//保存登录用户到session中
session.putValue("username", username);
session.putValue("password", password);
session.putValue("userIP", request.getRemoteAddr());
session.putValue("enter", "true");
//登录成功主题页面
response.sendRedirect("MainForm.jsp");
} else
response.sendRedirect("login.html");//登陆失败转向登录页面
%>
(三)、用户发表新帖子页面的制作
1、NewTitle.jsp页面发表新的主题文章
此界面提供用户输入功能,输入完成后“发表心得主题”按钮便可提交数据给SaveNewTitle.jsp页面:
<form action=saveNewTitle.jsp?pageNO=1 method=post onsubmit="return checkForm(this);"> <table border=2>
<tr bgcolor=yellow>
<td><pre><center>姓名</td><td><input type=text size=20 name=name></td>
</tr>
<tr bgcolor=yellow>
<td><pre><center>E-mail</td><td><input type=text size=40 name=email></td>
</tr>
<tr bgcolor=yellow>
<td><pre><center>主题</td><td><input type=text size=60 name=subject></td>
</tr>
<tr valign=top bgcolor=yellow>
<td><pre><center>内容</td><td><textarea rows=10 cols=60 name=content></textarea></td>
</tr>
<tr align=center>
<td colspan=2><input type=submit value=发送新的主题name=send ><input type=reset value=清除重写></td>
</tr>
</table>
<hr>
<a href=discuss.jsp?pageNO=1>返回主页</a>
</form>
2、SaveNewTitle.jsp页面用于保存由NewTitle.jsp页面传来的数据信息
首先将传递来的数据进行转换,然后将其插入数据库Discuss中:
<%
String name = request.getParameter("name");
String email = request.getParameter("email");
String subject = request.getParameter("subject");
String content = request.getParameter("content");
int year, month, day, hour, minute, second;
String time;
GregorianCalendar calendar;
calendar = new GregorianCalendar();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH) + 1;
day = calendar.get(Calendar.DAY_OF_MONTH);
hour = calendar.get(Calendar.HOUR_OF_DAY);
minute = calendar.get(Calendar.MINUTE);
second = calendar.get(Calendar.SECOND);
time = year + "年" + month + "月" + day + "日" + hour + ":" + minute
+ ":" + second;
name = convert(name);
subject = convert(subject);
content = convert(content);
content = Replace(content);
String username = session.getValue("username").toString();
sql = "insert into discuss ( name, email, subject, content, time, username) values( '"+ name +"','"
+ email + "','" + subject + "','" + content + "','" + time + "','" + username + "')";
stm.executeUpdate(sql); //插入数据库中
response.sendRedirect("discuss.jsp");
%>
(六)参考文献:
[1]刘长炯.《MyEclipse 6 Java 开发中文教程》[DK].北京:2007:1-99
[2]郑阿奇.《MySQL实用教程》[M].北京:电子工业出版社,2009:1-218
[3]孙卫琴.《Tomcat与Java Web开发技术详解(第2版)》[M].北京:电子工业出版社,2009:1-220
[4]萨师煊,王珊.《数据库系统概论》[M].北京:高等教育出版社,2002:56-110
[5]谷雨,阎隽,高春蓉等译.《JSP从入门到精通》[M].北京:电子工业出版社,2002:1-104
[6]李迎秋,姜仲.《JSP实用教程》[M].大连:大连理工大学出版社,2007:1-200
[7]赵明昌译.《JSP数据库编程指南》[M].北京:北京希望电子出版社,2001:37-48
[8]葛蒙,程显峰.《JavaScript实践与提高》[M].北京:中国电力出版社,2002:108-228
[9]黄嘉辉.《Java网络程序设计》[M].北京:清华大学出版社,2002:445-470
[10]李绪成.《Java Web开发教程——入门与提高篇》[M].北京:清华大学出版社,2009:1-198
[11]舒红平.《Web数据库编程:Java》[M].西安:西安电子科技大学出版社,2006:1-185。

相关文档
最新文档