加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

基于Java Web技术开发的BBS论坛系统

(2011-04-20 08:49:17)
标签:

bbs

javaweb

项目

论坛

web

it

分类: Java
基于Java Web技术开发的BBS论坛系统(原创+源码+论文)

      [关键字: Java ,Web,BBS,论坛系统]


前言:
当今,随着网络的迅速发展,制作BBS论坛的技术和方法也越来越多。本文主要讲述利用Java Web的相关技术来制作一个简单论坛。通过实际制作,实现了BBS论坛系统应有的一些基本功能,如:登陆功能,通过在登陆界面输入用户名和密码来实现会员的登录,用户只有登录成功了才能进行一系列的操作;注册功能,用户首次登陆,需要先注册,注册时需要用户填写个人信息;找回密码功能,当用户忘记密码时可以通过此功能找回密码,找回密码时需要用户记得注册时填写的个人信息。除此之外,还有浏览帖子、发表帖子、回复贴子以及删除帖子等等功能。制作本论坛所用的前台软件是MyEclipse,后台数据库是MySQL,运行时所用的服务器是Tomcat,综合运用了HTML、JSP以及JavaScript语言。
全文先对用到的软件进行了简单的介绍,然后依次对系统的应用进行需求分析、总体设计、详细设计;最后简要介绍了系统的发布和测试。
 

作为一个BBS论坛,它应该具有BBS所有的一些基本功能,包括:用户登陆功能,用户取回密码功能,用户浏览帖子的功能以及用户发表、回复、修改和删除帖子的功能等。接下来,我将详细阐述一下这些功能。

(一)、用户登录和注册功能

进入登录页面后,对于第一次登陆的用户来说,首先需要注册,单击“新用户注册”按钮即可进入注册界面,注册完成后返回登录界面。然后,在对应的地方分别输入用户名和密码,点击“登录”按钮,系统即将用户名和密码发送到网络服务器上,与保存在服务器数据库中的信息进行核对。若核对正确,则进入帖子浏览的界面,若不正确,则重新返回登录界面。

注意:若用户名(或者密码)为空时,点击了“登录”按钮,则系统会弹出一个对话框提示你用户名(或密码)为空,请重新输入,点击对话框的“确定”按钮,即可重新回到登录界面。


注册界面如下所示:
 http://www.phome.asia/upload/fck/image/200912/20091221171238233.jpgWeb技术开发的BBS论坛系统" />
 
(二)、用户找回密码功能

     在有些时候,我们可能会忘记登录密码,这时就用到了密码找回功能,通过正确的回答当初注册时的一些信息即可取回密码。


http://www.phome.asia/upload/fck/image/200912/20091221171316499.jpgWeb技术开发的BBS论坛系统" />
     (三)、用户帖子的浏览
 当用户登录成功后便进入该页面,在该页面可以浏览他人已经发表的主题帖子,


http://www.phome.asia/upload/fck/image/200912/2009122117141130.jpgWeb技术开发的BBS论坛系统" />
 
(四)、用户帖子的发布/修改/删除功能


用户成功登陆后,可以进行一些操作,如发表帖子、删除自己发表的帖子等。
 
 
(五)、用户回复他人帖子

打开他人的帖子,点击“我要回复”按钮(如图4-6所示)便可对该贴进行回复,如要想对其他回复此贴的人进行回复,可以点击回复人后面的“回复XX楼”按钮(如图4-7)对其进行回复。


 
(六)、管理员对帖子的查看/发表/删除功能

1、管理员查看或发表帖子

管理员查看或发表帖子与普通用户的一样。

1、 管理员删除帖子

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


部分代码:
 
1、翻页功能的实现

在这里可以实现翻页功能,根据你的实际需求进行选择。

功能的实现:首先确定每页所能容纳帖子的最大数目,在这里我设定MaxNum=10;然后连接数据库查询帖子的总数,从而判断总的页数,即lastPage,接着根据请求的页码pageNO判断出该页码是否合法,若pageNO<1则改正为pageNO=1,若pageNO>lastPage,即所求的页码超出了最大页数,则改正pageNO=lastPage,然后确定要显示的第一个帖子的标识码firstNum和最后一个帖子的标识码lastNum,最后连接数据库将标识码在firstNum和lastNum之间的帖子的信息查询出来。

程序为:

<%

                    int MaxNum = 10;//每页容纳的主题论文的最大数目

                    int count = 0, firstPage = 1, lastPage, firstNum, lastNum, prePage, nextPage, pageNO;

                    //firstPage表示首页,lastPage表示末页,pageNO表示第几页,

                    //firstNum表示该页的起始贴的ID,lastNum表示该页的末帖的ID,

                    //prePage表示前一页,nextPage表示后一页

                    sql = "select * from discuss";

                    rs = stm.executeQuery(sql);

                    while (rs.next())

                           count++;

                    if (request.getParameter("pageNO") == null)

                           pageNO = 0;

                    else

                           pageNO = Integer.parseInt(request.getParameter("pageNO"));

                    lastPage = (int) Math.ceil((double) count / MaxNum);

                    if (pageNO == 0)

                           pageNO = 1;

                    if (pageNO > lastPage)

                           pageNO = lastPage;

                    firstNum = (pageNO - 1) * MaxNum + 1;

                    lastNum = pageNO * MaxNum;

                    if (pageNO == 1)

                           prePage = 1;

                    else

                           prePage = pageNO - 1;

                    if (pageNO == lastPage)

                           nextPage = pageNO;

                    else

                           nextPage = pageNO + 1;

                    sql = "select * from discuss where id between " + firstNum

                                  + " and " + lastNum;

                    rs = stm.executeQuery(sql);

             %>

页面的制作:

      <form action=discuss.jsp method=post>

                    <table border=0>

                           <tr>

                                  <td>

                                         目前页数:

                                         <font color=red><%=pageNO%></font>

                                  </td>

                                  <td>

                                         总页数:

                                         <font color=red><%=lastPage%></font>

                                  </td>

                                  <td>

                                         <a href=discuss.jsp?pageNO= <%=firstPage%>>【第一页】</a>

                                  </td>

                                  <td>

                                         <a href=discuss.jsp?pageNO= <%=prePage%>>【上一页】</a>

                                  </td>

                                  <td>

                                         <a href=discuss.jsp?pageNO= <%=nextPage%>>【下一页】</a>

                                  </td>

                                  <td>

                                         <a href=discuss.jsp?pageNO=<%=lastPage%>>【最后一页】</a>

                                  </td>

                                  <td>

                                         输入页次:

                                         <input type=text size=3 name=pageNO value=1>

                                  </td>

                                  <td>

                                         <input type=submit name=send value="送出">

                                  </td>

                           </tr>

                    </table>

             </form>

2、浏览帖子的实现

每幅帖子都有三部分组成:主题、作者和时间,通过上述分页功能选出了需

要显示出来的帖子,下面就是将它们显示在页面上的程序:

<%

                           String name, email, subject, content, time;

                           int reply, id;

                           while (rs.next()) {

                                  name = rs.getString(1);

                                  email = rs.getString(2);

                                  subject = rs.getString(3);

                                  content = rs.getString(4);

                                  time = rs.getString(5);

                                  id = rs.getInt(7);

                                  out.print("<tr bgcolor=yellow><td><a href=delete.jsp?id="+id+"&replyid=0><img src=Pictures/delete.bmp width=20 height=20></a></td><td width=300><a href=detail.jsp?id="+ id + ">" + subject + "</a></td>");

                                  out.print("<td width=200>" + name + "</td>");

                                  out.print("<td width=200>" + time + "</td></tr>");

                           }

                    %>

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有