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

本文转自: 程序员之家论坛  
 

 
前言
 
        当今,随着网络的迅速发展,制做BBS论坛的技术和方法也愈来愈多。本文主要讲述利用Java Web的相关技术来制做一个简单论坛。经过实际制做,实现了BBS论坛系统应有的一些基本功能,如:登录功能,经过在登录界面输入用户名和密码来实现会员的登陆,用户只有登陆成功了才能进行一系列的操做;注册功能,用户首次登录,须要先注册,注册时须要用户填写我的信息;找回密码功能,当用户忘记密码时能够经过此功能找回密码,找回密码时须要用户记得注册时填写的我的信息。除此以外,还有浏览帖子、发表帖子、回复贴子以及删除帖子等等功能。制做本论坛所用的前台软件是MyEclipse,后台数据库是MySQL,运行时所用的服务器是Tomcat,综合运用了HTML、JSP以及JavaScript语言。
全文先对用到的软件进行了简单的介绍,而后依次对系统的应用进行需求分析、整体设计、详细设计;最后简要介绍了系统的发布和测试。
 
做为一个BBS论坛,它应该具备BBS全部的一些基本功能,包括:用户登录功能,用户取回密码功能,用户浏览帖子的功能以及用户发表、回复、修改和删除帖子的功能等。接下来,我将详细阐述一下这些功能。
(一)、 用户登陆和注册功能
进入登陆页面后,对于第一次登录的用户来讲,首先须要注册,单击“新用户注册”按钮便可进入注册界面,注册完成后返回登陆界面。而后,在对应的地方分别输入用户名和密码,点击“登陆”按钮,系统即将用户名和密码发送到网络服务器上,与保存在服务器数据库中的信息进行核对。若核对正确,则进入帖子浏览的界面,若不正确,则从新返回登陆界面。
注意:若用户名(或者密码)为空时,点击了“登陆”按钮,则系统会弹出一个对话框提示你用户名(或密码)为空,请从新输入,点击对话框的“肯定”按钮,便可从新回到登陆界面。
注册界面以下所示:
 
 
 
(二)、用户找回密码功能
      在有些时候,咱们可能会忘记登陆密码,这时就用到了密码找回功能,经过正确的回答当初注册时的一些信息便可取回密码。
(三)、用户帖子的浏览
  当用户登陆成功后便进入该页面,在该页面能够浏览他人已经发表的主题帖子,
(四)、用户帖子的发布/修改/删除功能

用户成功登录后,能够进行一些操做,如发表帖子、删除本身发表的帖子等。
 
 
(五)、用户回复他人帖子

打开他人的帖子,点击“我要回复”按钮(如图4-6所示)即可对该贴进行回复,如要想对其余回复此贴的人进行回复,能够点击回复人后面的“回复XX楼”按钮(如图4-7)对其进行回复。
 
(六)、管理员对帖子的查看/发表/删除功能

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

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

一、 管理员删除帖子

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

部分代码:
 

一、翻页功能的实现

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

功能的实现:首先肯定每页所能容纳帖子的最大数目,在这里我设定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>
二、浏览帖子的实现

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

要显示出来的帖子,下面就是将它们显示在页面上的程序:
<%
                                                     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>");                                                      }                                         %>
相关文章
相关标签/搜索