?
前言:
?
當(dāng)今,隨著網(wǎng)絡(luò)的迅速發(fā)展,制作BBS論壇的技術(shù)和方法也越來(lái)越多。本文主要講述利用Java Web的相關(guān)技術(shù)來(lái)制作一個(gè)簡(jiǎn)單論壇。通過(guò)實(shí)際制作,實(shí)現(xiàn)了BBS論壇系統(tǒng)應(yīng)有的一些基本功能,如:登陸功能,通過(guò)在登陸界面輸入用戶名和密碼來(lái)實(shí)現(xiàn)會(huì)員的登錄,用戶只有登錄成功了才能進(jìn)行一系列的操作;注冊(cè)功能,用戶首次登陸,需要先注冊(cè),注冊(cè)時(shí)需要用戶填寫個(gè)人信息;找回密碼功能,當(dāng)用戶忘記密碼時(shí)可以通過(guò)此功能找回密碼,找回密碼時(shí)需要用戶記得注冊(cè)時(shí)填寫的個(gè)人信息。除此之外,還有瀏覽帖子、發(fā)表帖子、回復(fù)貼子以及刪除帖子等等功能。制作本論壇所用的前臺(tái)軟件是MyEclipse,后臺(tái)數(shù)據(jù)庫(kù)是MySQL,運(yùn)行時(shí)所用的服務(wù)器是Tomcat,綜合運(yùn)用了HTML、JSP以及JavaScript語(yǔ)言。
?
全文先對(duì)用到的軟件進(jìn)行了簡(jiǎn)單的介紹,然后依次對(duì)系統(tǒng)的應(yīng)用進(jìn)行需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì);最后簡(jiǎn)要介紹了系統(tǒng)的發(fā)布和測(cè)試。
?
?
?
?
?
?
?
?
?
注冊(cè)界面如下所示:
?
用戶成功登陸后,可以進(jìn)行一些操作,如發(fā)表帖子、刪除自己發(fā)表的帖子等。
打開他人的帖子,點(diǎn)擊“我要回復(fù)”按鈕(如圖4-6所示)便可對(duì)該貼進(jìn)行回復(fù),如要想對(duì)其他回復(fù)此貼的人進(jìn)行回復(fù),可以點(diǎn)擊回復(fù)人后面的“回復(fù)XX樓”按鈕(如圖4-7)對(duì)其進(jìn)行回復(fù)。
1、管理員查看或發(fā)表帖子
管理員查看或發(fā)表帖子與普通用戶的一樣。
1、 管理員刪除帖子
管理員刪除帖子與普通用戶的區(qū)別在于,他可以刪除任何人發(fā)表的貼子,另外他還有一項(xiàng)特權(quán),就是可以刪除任何人回復(fù)的垃圾帖子。
部分代碼:
1、翻頁(yè)功能的實(shí)現(xiàn)
在這里可以實(shí)現(xiàn)翻頁(yè)功能,根據(jù)你的實(shí)際需求進(jìn)行選擇。
功能的實(shí)現(xiàn):首先確定每頁(yè)所能容納帖子的最大數(shù)目,在這里我設(shè)定MaxNum=10;然后連接數(shù)據(jù)庫(kù)查詢帖子的總數(shù),從而判斷總的頁(yè)數(shù),即lastPage,接著根據(jù)請(qǐng)求的頁(yè)碼pageNO判斷出該頁(yè)碼是否合法,若pageNO<1則改正為pageNO=1,若pageNO>lastPage,即所求的頁(yè)碼超出了最大頁(yè)數(shù),則改正pageNO=lastPage,然后確定要顯示的第一個(gè)帖子的標(biāo)識(shí)碼firstNum和最后一個(gè)帖子的標(biāo)識(shí)碼lastNum,最后連接數(shù)據(jù)庫(kù)將標(biāo)識(shí)碼在firstNum和lastNum之間的帖子的信息查詢出來(lái)。
程序?yàn)椋?
<%
int MaxNum = 10;//每頁(yè)容納的主題論文的最大數(shù)目
int count = 0, firstPage = 1, lastPage, firstNum, lastNum, prePage, nextPage, pageNO;
//firstPage表示首頁(yè),lastPage表示末頁(yè),pageNO表示第幾頁(yè),
//firstNum表示該頁(yè)的起始貼的ID,lastNum表示該頁(yè)的末帖的ID,
//prePage表示前一頁(yè),nextPage表示后一頁(yè)
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);
%>
?頁(yè)面的制作:
<form action=discuss.jsp method=post>
<table border=0>
<tr>
<td>
目前頁(yè)數(shù):
<font color=red><%=pageNO%></font>
</td>
<td>
總頁(yè)數(shù):
<font color=red><%=lastPage%></font>
</td>
<td>
<a href=discuss.jsp?pageNO= <%=firstPage%>>【第一頁(yè)】</a>
</td>
<td>
<a href=discuss.jsp?pageNO= <%=prePage%>>【上一頁(yè)】</a>
</td>
<td>
<a href=discuss.jsp?pageNO= <%=nextPage%>>【下一頁(yè)】</a>
</td>
<td>
<a href=discuss.jsp?pageNO=<%=lastPage%>>【最后一頁(yè)】</a>
</td>
<td>
?輸入頁(yè)次:
<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>");
}
%>
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

