基於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>");                                                      }                                         %>
相關文章
相關標籤/搜索