BBS論壇開發(fā)經(jīng)驗(yàn)總結(jié)
BBS論壇開發(fā)經(jīng)驗(yàn)總結(jié)
1引言
1.1編寫目的
總結(jié)完成本項(xiàng)目所獲得的經(jīng)驗(yàn)和不足,為我們以后的開發(fā)項(xiàng)目和進(jìn)一步的學(xué)習(xí)提供了良好的素材。本文檔的編寫目的是:詳細(xì)定義的總體功能,詳細(xì)說明系統(tǒng)功能,劃分程序基本結(jié)構(gòu),各程序名稱和功能,以便于系統(tǒng)詳細(xì)設(shè)計(jì)和編程。
1.2背景
現(xiàn)實(shí)生活中的交流存在時(shí)間和空間上的局限性,交流人群范圍狹小以及間斷的交流不能保證信息的準(zhǔn)確性和可取性。因此,用戶需要通過網(wǎng)上論壇的交流擴(kuò)大交流面,同時(shí)可以從多方面獲得自己所需要的最及時(shí)的信息。論壇又叫BBS,全稱是BulletinBoardSystem,中文意思是“電子公告板”,它是Internet上的一種交互性極強(qiáng)的、網(wǎng)友喜聞樂見的電子信息服務(wù)系統(tǒng)。它為網(wǎng)民提供一塊公共的電子白板,每個(gè)用戶都可以在上面書寫、發(fā)布自己的信息或提不同的意見,以便與其他用戶進(jìn)行交流和討論。所開發(fā)軟件名稱:BBS管理系統(tǒng)
論壇的名稱:BBS管理系統(tǒng)項(xiàng)目類型:大學(xué)論壇
項(xiàng)目開發(fā)時(shí)間:201*年3月18號(hào)201*年6月15號(hào)
1.3定義
游客
所有訪問論壇,尚未登錄的人。會(huì)員
申請(qǐng)注冊(cè)并提交成功的人。版主
具有發(fā)布版塊公告,管理版內(nèi)帖子,刪除帖子/跟帖的權(quán)利。系統(tǒng)管理員
具有宣布論壇開放/關(guān)閉注冊(cè),帖子的批量刪除,版塊管理,用戶管理權(quán)利的總版主。用戶
此“用戶”泛指所有的會(huì)員和游客。管理人員
此“管理人員”泛指版主和系統(tǒng)管理員。注冊(cè)
游客訪問論壇按系統(tǒng)規(guī)則申請(qǐng)注冊(cè)。登錄
會(huì)員按系統(tǒng)規(guī)則登錄論壇。退出
已登錄用戶退出登錄狀態(tài)。瀏覽主題
游客及登錄的用戶通過此業(yè)務(wù)按系統(tǒng)規(guī)則瀏覽論壇上各版塊的主題
用戶(包括所有會(huì)員或游客)通過此操作可以瀏覽自身權(quán)限許可范圍內(nèi)的論壇的板塊列表,主題列表,以及每一個(gè)主題。發(fā)布主題
會(huì)員通過此業(yè)務(wù)按系統(tǒng)規(guī)則進(jìn)行主題的發(fā)布。回復(fù)主題
會(huì)員/游客通過此業(yè)務(wù)按系統(tǒng)規(guī)則進(jìn)行主題的回復(fù)。修改個(gè)人資料
會(huì)員通過此業(yè)務(wù)按系統(tǒng)規(guī)則修改自已在注冊(cè)新用戶時(shí)所填寫的個(gè)人資料或是已經(jīng)通過此業(yè)務(wù)修改過的個(gè)人資料。管理版內(nèi)帖子
版主通過此業(yè)務(wù)按系統(tǒng)規(guī)則在自已管理的版塊內(nèi)對(duì)帖子進(jìn)行鎖定,解鎖,置頂,取消置頂,加為精華,解除精華,刪除帖子等操作。刪除帖子
管理人員通過此業(yè)務(wù)按系統(tǒng)規(guī)則在自已權(quán)限內(nèi)對(duì)不良帖子進(jìn)行刪除操作。禁用會(huì)員
管理人員通過此業(yè)務(wù)按論壇的規(guī)則對(duì)于屢次違反規(guī)定且拒不改悔的一般會(huì)員進(jìn)行禁用操作,禁用后該用戶無法正常登錄。查詢主題
會(huì)員和管理人員通過此業(yè)務(wù)按關(guān)鍵字對(duì)帖子進(jìn)行查找。帖子的批量刪除
管理人員通過此業(yè)務(wù)按系統(tǒng)規(guī)則對(duì)于不符合規(guī)定的帖子進(jìn)行批量的刪除或者對(duì)于發(fā)錯(cuò)版塊的帖子進(jìn)行轉(zhuǎn)移等操作。版塊管理
系統(tǒng)管理員通過此業(yè)務(wù)按系統(tǒng)規(guī)則對(duì)版塊/版主進(jìn)行管理(版主審核,更換),如版塊的增加,重新命名,刪除,關(guān)閉等操作。
1.4參考資料
《軟件工程導(dǎo)論》
《BBS開發(fā)指南》
《BBS系統(tǒng)概要設(shè)計(jì)說明書》
2實(shí)際開發(fā)結(jié)果
2.1產(chǎn)品
最終制成的產(chǎn)品是:BBS網(wǎng)站。
該基于Web開發(fā)的網(wǎng)站供四種用戶使用:網(wǎng)頁瀏覽者(即游客)、會(huì)員、版主、管理員。游客可以瀏覽帖子、回復(fù)帖子,但無權(quán)發(fā)帖,即不能進(jìn)入add_article.aspx頁。會(huì)員登錄后可以瀏覽帖子內(nèi)容,可以發(fā)帖、回復(fù)帖子。版主登錄后,跳轉(zhuǎn)至版主后臺(tái)管理頁面,版主可以刪除帖子和刪除回復(fù)。管理員登錄后跳轉(zhuǎn)至管理員后臺(tái)管理界面,管理員有權(quán)管理版塊、管理版主、管理公告板、管理用戶和刪除圖片。2.2主要功能和性能
該BBS網(wǎng)站具有了一般BBS所有的功能,如用戶注冊(cè)、用戶信息管理、發(fā)帖功能、帖子管理、主題詞查詢。
對(duì)照項(xiàng)目概要設(shè)計(jì),“問卷調(diào)查”和“群組”功能沒有實(shí)現(xiàn),未完全達(dá)到原定的開發(fā)目標(biāo)。
2.3基本流程
用圖給出本程序系統(tǒng)的實(shí)際的基本的處理流程。網(wǎng)站總體架構(gòu)圖:
網(wǎng)站面向的用戶:
2.4進(jìn)度
實(shí)際進(jìn)度與原定計(jì)劃進(jìn)度相比,實(shí)際進(jìn)度延遲了。究其原因,是在項(xiàng)目實(shí)現(xiàn)階段卡殼,代碼編寫能力有限,耽誤時(shí)間太多。
3開發(fā)工作評(píng)價(jià)
3.1對(duì)技術(shù)方法的評(píng)價(jià)
用DreamWeaver制作靜態(tài)網(wǎng)頁,輔以Photoshop修改圖片。數(shù)據(jù)庫用的是SQLServer201*,對(duì)于一個(gè)小型網(wǎng)站已經(jīng)足夠用。開發(fā)環(huán)境是VisualStudio201*,用C#語言。
在制作靜態(tài)網(wǎng)頁時(shí),用的是HTML語言和CSS搭建框架,用CSS的好處是可以將網(wǎng)頁設(shè)計(jì)中的HTML代碼和CSS代碼分離開,一個(gè)CSS文件可以供多個(gè)網(wǎng)頁鏈接使用,有效減少代碼量。
在SQLServer201*中連接數(shù)據(jù)庫時(shí)用“SQLServer身份驗(yàn)證”,幫數(shù)據(jù)庫多加了一層保護(hù)。
在index.aspx頁顯示整個(gè)論壇版塊信息時(shí),用Repeater綁定數(shù)據(jù),為了排版的美觀,在標(biāo)簽之間添加,這樣既利用了有序列表在橫著排列數(shù)據(jù)時(shí)的優(yōu)勢(shì),又結(jié)合了表格固定布局的方便,使整個(gè)網(wǎng)頁的排版美觀又人性化。3.4出錯(cuò)原因的分析
1.錯(cuò)誤提示:
MicrosoftOLEDBProviderforODBCDrivers錯(cuò)誤"80004005"
[Microsoft][ODBC驅(qū)動(dòng)程序管理器]未發(fā)現(xiàn)數(shù)據(jù)源名稱并且未指定默認(rèn)驅(qū)動(dòng)程序
/myforum/bbsconn.asp,行4
做檢測昵稱中的check.asp這個(gè)文件時(shí),
,用了SSI,IE提示了這個(gè)錯(cuò)誤!
這個(gè)錯(cuò)誤提示是在刷新的三次才出來的,也就是說,如果IE不提示錯(cuò)誤,注意多刷新幾次,也許提示信息就出來了。2.錯(cuò)誤提示:
ADODB.Recordset錯(cuò)誤"800a0cc1"
項(xiàng)目在所需的名稱或序數(shù)中未被發(fā)現(xiàn)。
/myforum/baychoice.asp,行47
這個(gè)錯(cuò)誤的原因是:沒有建立一個(gè)rs記錄集.3錯(cuò)誤提示:
這里面的%和>一定不能分開要寫在一塊,要不會(huì)出錯(cuò)的
4經(jīng)驗(yàn)與教訓(xùn)
這次項(xiàng)目開發(fā)培養(yǎng)了我們?cè)诂F(xiàn)有技術(shù)環(huán)境下的溝通信息、分工協(xié)作、自主創(chuàng)新的能力,經(jīng)過一個(gè)學(xué)期的開發(fā)讓我們學(xué)到了很多知識(shí)和技能是要結(jié)合的。而且,這次項(xiàng)目開發(fā)還培養(yǎng)了我們那種的面對(duì)問題時(shí)團(tuán)結(jié)一致,積極向上的團(tuán)隊(duì)精神。設(shè)計(jì)的過程環(huán)環(huán)相扣,從分工到協(xié)作,從設(shè)計(jì)到運(yùn)行,嚴(yán)格的團(tuán)對(duì)項(xiàng)目開發(fā)模式讓我們受益頗多。
在這個(gè)過程中教訓(xùn)也很多。要想更好完成項(xiàng)目設(shè)計(jì)任務(wù),我們應(yīng)該做好分工協(xié)作的工作,明確我們每一個(gè)項(xiàng)目設(shè)計(jì)流程中的職責(zé)和目標(biāo),這樣才能更好的做到從分工到協(xié)作的跨越和融合,從而更好的完成項(xiàng)目開發(fā)的目標(biāo)。經(jīng)過這次項(xiàng)目開發(fā),我們也認(rèn)識(shí)到我們的自主設(shè)計(jì)開發(fā)能力還很欠缺,程序設(shè)計(jì)的知識(shí)很匱乏,代碼編寫能力的不足,這也為我們以后的學(xué)習(xí)和實(shí)踐提供了方向和動(dòng)力。相信,在這次項(xiàng)目開發(fā)的考驗(yàn)下,在已有的經(jīng)驗(yàn)和教訓(xùn)的指導(dǎo)下,我們會(huì)更有動(dòng)力去充實(shí)和完善自己項(xiàng)目開發(fā)的知識(shí)和技能,更有信心做好明天軟件設(shè)計(jì)的工作。
擴(kuò)展閱讀:BBS論壇開發(fā)總結(jié)
BBS論壇開發(fā)總結(jié)
[前言:]
在201*年10月28日,16:24:15我開始開發(fā)BBS論壇。開始時(shí)準(zhǔn)備把ATM系統(tǒng)用web開發(fā)出來,使用Struct技術(shù)。因?yàn)榍捌谟昧艘粋(gè)星期復(fù)習(xí)了Struct2。由于很久沒用,很多技術(shù)都生疏了。要學(xué)好新的技術(shù),還是要實(shí)踐。看到我這里一個(gè)BBS系統(tǒng)用Struct1開發(fā)的,就想把它改成Struct2。正好復(fù)習(xí)學(xué)的Struct2。由于BBS論壇是在一個(gè)已經(jīng)開發(fā)好的系統(tǒng)上修改的。界面原型都有,不用擔(dān)心界面的美觀問題。今天是201*-11-14完成這個(gè)作品。記下這個(gè)開發(fā)中學(xué)到的東西。[正文:]系統(tǒng)分為前臺(tái)功能和后臺(tái)管理。(第一次用VISO畫系統(tǒng)結(jié)構(gòu)圖,有點(diǎn)不清楚。)
BBS系統(tǒng)前臺(tái)功能后臺(tái)管理用戶登入用戶注冊(cè)發(fā)帖瀏覽帖回帖欄目管理專區(qū)管理回帖管理用戶管理
[代碼分析:]
首頁index.jsp。下圖是首頁的組成圖:
用戶已登入top2.jsp首頁歡迎用戶沒有登入top.jsp首頁Inde.jsp標(biāo)簽論壇專區(qū)信息底部,論壇開發(fā)商信息footer.jsp
頁面頭上的歡迎信息和頁面底部的開發(fā)商信息在前臺(tái)每個(gè)網(wǎng)頁上都是一樣的。所以后面不再介紹了。后面基本頁面發(fā)生改都是在中間部分發(fā)生變化。
首頁歡迎,使用JavaScript獲取當(dāng)前的時(shí)間,且每200ms更新一次。JavaScript代碼如下:
functionclockon(bgclock){varnow=newDate();varyear=now.getYear();varmonth=now.getMonth();vardate=now.getDate();varday=now.getDay();varhour=now.getHours();varminu=now.getMinutes();varsec=now.getSeconds();varweek;month=month+1;if(month
順序畫的估計(jì)有錯(cuò),這種UML的圖很少畫,要練練。用戶登入信息請(qǐng)求通過表單發(fā)送的dologin.action。dologin.action。根據(jù)struts.xml配置文件跳轉(zhuǎn)頁面。
請(qǐng)求如下:
maxlength="20"/>
publicclassDoLoginextendsActionSupport{@OverridepublicStringexecute(){if(LoginDAO.login(login.getUsername(),ActionContext.getContext().getSession().put("name",login.getUsername());ActionContext.getContext().getSession().put("islogin",returnSUCCESS;ActionContext.getContext().getSession().put("islogin",this.addFieldError("userlogin","你輸入的用戶名或密碼錯(cuò)誤,privateLoginlogin=newLogin();login.getPassword())){1);}else{0);請(qǐng)重新輸入");returnERROR;}publicvoidsetLogin(Loginlogin){}this.login=login;publicLogingetLogin(){}returnlogin;}}
struts.xml配置如下:
index.jspindex.jsp
這是使用struts2最基本也是最經(jīng)典的方式。后面的差不多是這種。
在寫Index.jsp頁面的時(shí)候還學(xué)到2點(diǎn),1學(xué)會(huì)了使用標(biāo)簽。
2學(xué)會(huì)了如何從Struct棧中取值。怎么取的session中的值:代碼如下:
3:自定義標(biāo)簽
發(fā)現(xiàn)了自定義標(biāo)簽的好處,使用自定義表情,可以很多需要在JSP頁面寫的代碼都在標(biāo)簽文件中寫好,這樣就很好的把代碼和標(biāo)簽分離。我想這也是struts2定義那么多標(biāo)簽的原因吧。
自定義標(biāo)簽的方法如下:DisplayTag.java標(biāo)簽文件
publicclassDisplayTagextendsTagSupport{out.println("");out.println("");if(i%2==0){}elseout.println("");out.println("");out.println("");out.println("科技公司出版的["+(f.getForumnname())+"]語言類專區(qū)");out.println(""+f.getCreatetime()+"");out.println("");out.println("");out.println("
1.01.2ApplicationTagLibrary-example-1.0ThistaglibrarycontainsfunctionalityfortheAddressbookStrutsSampleApplication.Withsmallmodifications,theycanbeusedasgenerictags.displaycom.bbs.struts.tl.DisplayTagempty論壇版塊
在web.xml文件中配置
:8080/BBSStruct2/app.tld/WEB-INF/app.tld
用戶注冊(cè)register.jsp模式和index.jsp類似
不過在這里使用了和標(biāo)簽
首頁上一頁下一頁尾頁
后面的分頁方式也基本如此。分頁主要是控制了MySQL每次查詢記錄的條數(shù)。使用limt()
回帖:response.jsp
瀏覽帖子的回復(fù)和回帖顯示在一個(gè)頁面上。使用標(biāo)簽組合成一個(gè)頁面;緦(shí)現(xiàn)在當(dāng)前頁回復(fù)的顯示,在當(dāng)前的帖子能顯示。使用了Struct+json+AJAX。
使用AJAX的異步交互,使用JSON顯示返回的數(shù)據(jù)。DoResponse.jsp處理請(qǐng)求的代碼如下:
publicclassDoResponseextendsActionSupport{}returnSUCCESS;privateResponserp=newResponse();privateStringresult;//返回的JSON數(shù)據(jù)publicStringexecute(){Stringname=(String)"name");ActionContext.getContext().getSession().get(rp.setAuthor(name);ResponseDAO.InsertResponseRecord(rp);Loginuser=null;try{}Mapmap=newHashMap();map.put("content",rp.getContent());map.put("xq",rp.getXq());map.put("author",rp.getAuthor());map.put("submittime",Time.getCurrentTime());if(name==null){}JSONObjectjo=JSONObject.fromObject(map);//構(gòu)成JSON格式result=jo.toString();map.put("email","");map.put("tx","0.gif");map.put("qq","");map.put("email",user.getEmail());map.put("tx",user.getTx());map.put("qq",user.getOicq());user=LoginDAO.getRecordForUser(name);}catch(SQLExceptione){}else{AJAX的JavaScript函數(shù)如下:
functionsubm(){//提交請(qǐng)求vartitle=$("#title").val();varxq=getRadioBoxValue("xq");//獲取單選按鈕的值varcontent=$("#text").val();vartopicname=$("#topicname").val();vartopicid=$("#topicid").val();$.post("doResponse.action",{"rp.title":title,"rp.xq":xq,"rp.confunction(data){tent":content,"rp.topicname":topicname,"rp.topicid":topicid},varrs=eval(data);//包數(shù)據(jù)解析為json格式varrp2=rs.result;varrp=eval("("+rp2+")")//把數(shù)據(jù)解析為JSON格式$("#02").append(""+""+rp.email+""+valign="baseline">"+rp.qq+""+valign="baseline">"+rp.submittime+""+""+""+rp.content+""+"作者:"+rp.author+""+""+}functiongetRadioBoxValue(radioName){varobj=document.getElementsByName(radioName);//這個(gè)是以標(biāo)簽的name來取控件for(i=0;i struct.xml中的配置如下: 后臺(tái)管理adminindex.jsp 使用HTML的frameset。組成管理頁面。這是一種比較常用的方式。左邊框架顯示功能,右邊框架顯示主要內(nèi)容。但是存在一個(gè)很大的問題。Struct2的struct.xml不支持HTMl的框架。頁面請(qǐng)求的信息如果直接跳轉(zhuǎn)Frameset的框架頁面里面的子頁面接收不到參數(shù), 如果直接跳轉(zhuǎn)到子頁面頁面就沒有那個(gè)效果,如何解決這個(gè)問題呢?看了網(wǎng)上不少解決方法,發(fā)現(xiàn)只有一種解決方法,就是把需要傳送的變量存在Session里面。 個(gè)人覺得存在把值存在session中是一種非常浪費(fèi)服務(wù)器資源的。特別如果要顯示的數(shù)據(jù)是批量的數(shù)據(jù),是ArrayList,更是非常浪費(fèi)資源。而且ArrayList也不能存在cookie里面。 所以在這時(shí)我放棄了Struct2很多遍歷。 欄目管理:main.jsp 因?yàn)閙ain.jsp的版塊少。所以這里我沒有做分頁處理。 但是這樣也有一個(gè)亮點(diǎn)點(diǎn)擊彈出對(duì)話框;緦(shí)現(xiàn)原理是,在頁面載入的是時(shí)候?qū)⒛硨佑安,在點(diǎn)擊某按鈕或超鏈接觸發(fā)事件的時(shí)候顯示。主要通過CSS+div+JavaScriptdiv源碼如下:初始時(shí)隱藏狀態(tài)。 論壇名稱:版主:保存 JavaScript代碼如下: 撤銷varObj=""document.onmouseup=MUpdocument.onmousemove=MMovefunctionMDown(Object){Obj=Object.id;document.all(Obj).setCapture();pX=event.x-document.all(Obj).style.pixelLeft;pY=event.y-document.all(Obj).style.pixelTop;}functionMMove(){if(Obj!=""){document.all(Obj).style.left=event.x-pX;document.all(Obj).style.top=event.y-pY;}}functionMUp(){if(Obj!=""){ 修改和提交的形式使用的是Struct經(jīng)典模式,不再介紹。 document.all(Obj).releaseCapture();Obj="";}}//顯示窗口的方法functionshowwin(){varwinNode=$("#massage_box");winNode.css("visibility","visible");}//隱藏窗口的方法functionhide(){varwinNode=$("#massage_box");winNode.css("visibility","hidden");} 專區(qū)管理:topicmanager.jsp Struct2的struct.xml不支持HTMl的框架。我放棄了Struct2的優(yōu)越性,在遍歷顯示版塊主題的時(shí)候。我沒有使用標(biāo)簽。而是自己開發(fā)了標(biāo)簽。開發(fā)方式已介紹。不再重復(fù)。 連分頁操作都是在JSP頁面直接寫Java代碼。有些違背MVC的意思,但是為了實(shí)習(xí)功能只能出此下策。代碼如下: 首頁上一頁下一頁尾頁在后面的后臺(tái)管理中分頁基本是按照這種顯示實(shí)現(xiàn)的。 回帖管理:responsetopic.jsp和topicList.jsp基本類似,不再介紹。用戶管理:userManager.jsp有個(gè)特別之處,查找用戶。 顯示查找出來的會(huì)員不需要分頁,更好的處理邏輯關(guān)系。查找用戶還另外寫了一個(gè)頁面searchuser.jsp處理。 需注意的是:使用Strcut的方式提交在本頁面顯示。URL地址是XXX.action如果則會(huì)鏈接到XXX.action#中。調(diào)用不了本地JSP頁面的JavaScript函數(shù)。(最后一天為了這個(gè)小問題糾結(jié)了很久。) 解決方法是:超鏈接直接提交。不通過AJAX異步提交了。代碼如下: 刪除 最后介紹下攔截其知識(shí)。在后臺(tái)管理模塊中。管理員所有的操作都比現(xiàn)在已經(jīng)登入的條件下。所有配置攔截器很必要。 附上一個(gè)講好的攔截器控制登入的struct.xml的配置 //配置攔截器//配置攔截器棧//保護(hù)默認(rèn)攔截器//將配置的攔截器設(shè)置為默認(rèn)攔截器//設(shè)置全局的結(jié)果。/index.jsp [結(jié)束]: 以上是BBS論壇開發(fā)的全過程和主要學(xué)到和用到的知識(shí)點(diǎn)。主要是使用Struct+AJAX+JSON+CSS 通過這次的開發(fā),開始明白了MVC模式的意義了。以后的代碼會(huì)更多的注意MVC模式。更多的注意低耦合高內(nèi)聚。依賴抽象。 BBS論壇比較簡單。開發(fā)過程也比較簡單。以后要養(yǎng)成這種總結(jié)的習(xí)慣。下一步Spring3.0+Struct2.0+Hribetate3.5+AJAX(Jquery)。 友情提示:本文中關(guān)于《BBS論壇開發(fā)經(jīng)驗(yàn)總結(jié)》給出的范例僅供您參考拓展思維使用,BBS論壇開發(fā)經(jīng)驗(yàn)總結(jié):該篇文章建議您自主創(chuàng)作。 來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請(qǐng)聯(lián)系我們及時(shí)刪除。
《BBS論壇開發(fā)經(jīng)驗(yàn)總結(jié)》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請(qǐng)保留原作者信息,謝謝!
鏈接地址:http://www.weilaioem.com/gongwen/673093.html