基于WEB的易語言論壇系統(tǒng)的設計與實現(xiàn)_第1頁
基于WEB的易語言論壇系統(tǒng)的設計與實現(xiàn)_第2頁
基于WEB的易語言論壇系統(tǒng)的設計與實現(xiàn)_第3頁
基于WEB的易語言論壇系統(tǒng)的設計與實現(xiàn)_第4頁
基于WEB的易語言論壇系統(tǒng)的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

畢業(yè)設計(論文)任務書畢業(yè)設計(論文)題目:基于Web的易語言論壇系統(tǒng)的設計與實現(xiàn)畢業(yè)設計(論文)要求及原始數(shù)據(jù)(資料):1.綜述國內JavaEEWEB應用開發(fā)技術的現(xiàn)狀;2.了解JavaEEWEB項目開發(fā)的相關技術;3.掌握JavaEEWEB項目開發(fā)的基礎知識與基本能力;4.掌握SpringMVC與Hibernate兩大框架技術;5.掌握使用框架技術開發(fā)JavaEEWEB項目的能力;6.設計并實現(xiàn)一個基于WEB的論壇系統(tǒng)項目;7.總結通過此次項目實戰(zhàn)在知識與技能方面的收獲;8.訓練檢索文獻資料和利用文獻資料的能力;9.訓練撰寫技術文檔與學位論文的能力。畢業(yè)設計(論文)主要內容:1.描述國內網上論壇系統(tǒng)的現(xiàn)狀;2.綜述國內JavaEEWEB應用開發(fā)技術的概況;3.簡單介紹JavaEEWEB項目開發(fā)的相關技術;4.描述框架技術在JavaEEWEB項目開發(fā)的重要性;5.描述本項目開發(fā)環(huán)境的配置與項目運行的部署;6.分析本項目需要的功能并做出相應的設計;7.實現(xiàn)本項目的所有功能并保證足夠的健壯性;8.總結通過本項目所獲得的知識與技能的提升;學生應交出的設計文件(論文):1.內容完整、層次清晰、敘述流暢、排版規(guī)范的畢業(yè)設計論文;2.包括畢業(yè)設計論文、源程序等內容在內的畢業(yè)設計電子文檔及其它相關材料。主要參考文獻(資料):[1]孫鑫.JavaWeb開發(fā)詳解[M].電子工業(yè)出版社,2006[2]孫衛(wèi)琴,李洪成.Tomcat與JavaWeb開發(fā)技術詳解[M].電子工業(yè)出版社,2003[3]袁建洲.JavaScript編程寶典.人民郵電出版社,2007[4]李剛.基于J2EE的AJAX寶典.電子工業(yè)出版社,2007[5]耿祥義.JSP基礎編程[M].清華大學出版社,2004[6]林信良.JSP&Servlet學習筆記[M].清華大學出版社,2012,5[7]孫衛(wèi)琴.精通hibernate[M].電子工業(yè)出版社,2005,4[8]林寒超,張南平.Hibernate技術的研究[J].計算機技術與發(fā)展,2006,16(11)[9]畢建信.基于MVC設計模式的Web應用研究與實現(xiàn)[D].武漢理工大學,2006,5[10]威爾德,斯尼德等著,趙利通譯.SpringFramework2入門經典[M].清華大學出版社,2009[11]CraigWalls,RyanBreidenBach.SpringInAction[M].ManningPublications,2006[12]AmuthanG.SpringMVC:Beginner'sGuide[M].PacktPublishing,2014[13]DataflowanalysisandtestingofJSP-basedWebapplications[J].Informationandsoftwaretechnology,2006.48(12)專業(yè)班級:軟件工程1102班學生姓名:胡詩瑞要求設計(論文)工起止日期:2015年3月23日~2015年7月3日指導教師簽字:日期:2015年3月23日教研室主任審查簽字:日期:系主任批準簽字:日期:基于Web的易語言論壇系統(tǒng)的設計與實現(xiàn)摘要論壇,是Internet上的一種電子信息服務系統(tǒng)。它提供一塊公共電子黑板,每個用戶都可以在上面寫東西,可以提出看法或發(fā)布信息。它是一種交互性比較強,內容比較及時而豐富的Internet電子信息類型的服務系統(tǒng),用戶在BBS站點上,可以獲得各種信息服務、可以發(fā)布信息、可以進行討論、可以聊天等等。貼吧,是一種基于關鍵詞而存在的主題交流社區(qū),它與搜索功能緊密結合,能準確把握用戶需求,為興趣而生。貼吧的使命就是讓志同道合的人相聚在一起。貼吧的組建依靠的是搜索引擎關鍵詞,不論是小眾話題還是大眾話題,都能夠精準地聚集大批的同好網友,它為人們提供一個交流和表達思想的自由網絡空間,并以此來匯集志同道合的網友。本系統(tǒng)借鑒貼吧基于關鍵詞交流的思想,擴大了論壇的現(xiàn)有功能,使之不僅僅局限于定義好的的關鍵詞。用戶可以創(chuàng)建原本不存在的關鍵詞主題站,可以針對任何感興趣的主題在相應的主題站里發(fā)表帖子,瀏覽帖子,參與討論,擴寬了獲取信息的渠道,真正做到了信息共享。系統(tǒng)采用了JSP、Ajax、Servlet以及SpringMVC與Hibernate兩大框架技術實現(xiàn),實現(xiàn)了預期的功能。關鍵詞:論壇;貼吧;MVC;JSPDesignandImplementationforBBSSystembasedonWebAbstractTheforum,isanelectronicinformationservicesystembasedonInternet.Itprovidesapublicelectronicwhiteboard,eachusercanwriteonandreleaseorviewsinformation.Itisakindofinteractiveinternetelectronicinformationservicesystemwithrichcontentandtimely,usersontheBBSsitecanobtainavarietyofinformationservices,releaseinformation,discussions,chatandsoontoget.ThePostBar,isaninternetcommunitybasedonkeysubject,itisrelatedtothesearchclosely,grasptheneedsofusersaccurately,bornininteresting.PostBar'smissionistomeetlike-mindedpeople.PostBarreliesonsearchenginekeywordsformation,whetheritisapopulartopicoranichetopic,itcangatheralargenumberofnetizensaccurately,itprovidesafreenetworkspaceforpeopletoexpressionandexchangeideas,andthusbringingtogetherlike-mindedfriends.ThissystemreferencesPostBarkeywordbasedontheideaofcommunication,expandtheexistingfunctionsoftheforum,Letitisnotlimitedtodefinedkeywords.Userscancreatekeywordssubjectstationwhichwasnotexistanduserscanbedirectedtoanyinterestingtopicthecorrespondingsubjectstation,publishandbrowseposts,participateinthediscussion,broadeningthechannelsforobtaininginformation,sharinginformationreally.SystemadoptedJSP、Ajax、ServlettechnologiesandSpringMVC、Hibernateframeworks,realizedtheexpectedfunction.Keywords:TheForum;ThePostBar;MVC;JSP目錄TOC\o"1-3"\h\u195261緒論 1287091.1背景意義 1661.2設計目標 2175832開發(fā)環(huán)境和相關技術 385222.1開發(fā)環(huán)境 3136332.2相關技術 3178482.2.1JavaEEWEB 346552.2.2JSP 4190442.2.3Servlet 4172502.2.4JavaScript 5174762.2.5Ajax 5194522.2.6Hibernate 6276212.2.7Spring 693212.2.8SpringMVC 6148033需求分析 7260213.1需求采集 7253923.1.1功能需求 7225243.1.2性能需求 881963.2功能模塊 8185813.2.1基本功能 9125603.2.2擴展功能 10257344系統(tǒng)設計 1223404.1數(shù)據(jù)庫表設計 1233874.1.1ER圖分析 12241434.1.2數(shù)據(jù)庫表設計 15311024.2功能設計 20187814.2.1登錄注冊 20203284.2.2查看貼吧列表 2137164.2.3查看帖子列表 2117734.2.4查看帖子詳情 22164264.2.5查看提醒信息 2286965系統(tǒng)實現(xiàn) 23136125.1功能實現(xiàn) 23282025.1.1登錄注冊 23220305.1.2查看貼吧列表 26260365.1.3查看帖子列表 2984445.1.4查看帖子詳情 30122645.1.5查看提醒信息 326465.2系統(tǒng)不足 3519116系統(tǒng)測試 36208546.1登錄測試 36152196.2注冊測試 37282206.3使用測試 37270246.4總結 3719131結束語 3917207參考文獻 411405致謝 421緒論1.1背景意義當今的社會是一個信息高速發(fā)展的社會,在信息的交流和傳遞當中,互聯(lián)網占據(jù)著一個非常重要的位置。隨著Internet技術的不斷發(fā)展,以及用戶群爆炸性地增長,網絡不再僅僅是信息的被動獲取來源,更成為人們探討問題、交換觀點的場所,各種網絡應用應運而生。隨著網絡應用的興起,人們交流的方式也發(fā)生了翻天覆地的變化。網絡聊天、網絡視頻和郵箱系統(tǒng)等網絡應用的出現(xiàn)正在改變著人們彼此之間溝通、交流的方式。此外,為了滿足人們在某一特定主題下的知識獲取和信息發(fā)布的需求,網上論壇順勢誕生了。隨著時間的推移,論壇站點中積存了豐富的信息資源,不但有各類技術資料和新聞文檔,還包含著用戶的判斷和評論,論壇站點己成為Web信息庫的重要組成部分,自網上論壇誕生20多年以來,隨著Web技術的發(fā)展,己經由原來簡單的電子公告板系統(tǒng)發(fā)展為功能豐富的網上論壇和虛擬社區(qū)模式。隨著網絡的迅速發(fā)展,信息幾乎充實在生活工作的方方面面,無論是政界、商界,還是娛樂界,都有各種各樣的論壇?;ヂ?lián)網正在融入我們的生活,網絡提供給我們的不只是一個獲取信息的來源,而且還是一個可以相互交流的空間,網上論壇正是一種供人們進行交流的網絡空間,影響和改變著我們的生活。論壇是一個讓人足不出戶即可了解外界世界,了解他人所想的工具。給天下的網民都提供了交流的平臺,為網絡的互動性作出了巨大的貢獻。人們根據(jù)自己的專業(yè)特長和興趣愛好在論壇上提出自己的問題,即提出主題。而后其他人根據(jù)主題內容可以發(fā)表自己的意見和看法,即回復主題。一千個人有一千個哈姆雷特,論壇集大家之所長,所感,為每一個用戶提供了豐富的知識礦藏。通過論壇,網民們能夠更加方便的交流,更加便捷的發(fā)表自己的觀點,同時發(fā)布信息都是通過能夠被記錄的文字來進行的,所以這樣也能避免精華內容的流失。通過論壇來征得自己想要的信息,有更高的效率和時效性,也最節(jié)約成本和資源。在論壇的交流過程中,參與討論的人可以處于一個平等的位置,且無論喜怒哀樂都是在虛擬的環(huán)境中進行,避免了正面的尷尬和沖突等。在論壇中,人們可以演變成任何角色,變換多種身份,因為網絡的特征,使得人民更加依賴于論壇中的交流。1.2設計目標百度貼吧,是全球最大的主題中文社區(qū),其基于搜索引擎和開放關鍵詞的形態(tài)已變成一種通用的互聯(lián)網產品模式,被中文網站廣為學習采納,產生了大量類似“貼吧”的平臺。而本系統(tǒng)也正是借鑒了百度貼吧開放關鍵詞的特點,在實現(xiàn)了論壇基本功能的基礎上,擴展了論壇系統(tǒng)的現(xiàn)有功能。游客用戶可以查詢貼吧,瀏覽帖子,也可以通過注冊功能獲得系統(tǒng)賬號,從而登錄本系統(tǒng),升級成為登錄用戶,獲得對應的權限。登錄用戶不僅可以查詢貼吧,瀏覽帖子,還可以發(fā)表帖子,回復帖子,查看通知,參與貼吧活動,創(chuàng)建貼吧,管理貼吧等,是本系統(tǒng)的核心用戶。管理員用戶不僅僅具有貼吧的所有權限,同時還肩負著發(fā)展貼吧的重任,是貼吧的核心人物。

2開發(fā)環(huán)境和相關技術2.1開發(fā)環(huán)境操作系統(tǒng):MicrosoftWindows7Ultimate(64-bit)JDK:JavaSEDevelopmentKit7u75開發(fā)工具:EclipseLunaServiceRelease2(4.4.2)數(shù)據(jù)庫:OracleDatabase11gRelease2ExpressEdition(11.0.2)服務器:ApacheTomcat7.0.592.2相關技術本項目是一個動態(tài)WEB項目,系統(tǒng)采用SpringMVC框架實現(xiàn)了頁面的切換和數(shù)據(jù)的傳遞,采用Hibernate框架實現(xiàn)了數(shù)據(jù)的持久化操作,前臺頁面采用JSP技術編寫,其數(shù)據(jù)合法性采用了JavaScript,JQuery和Ajax技術,結合后臺Sertlet進行驗證。現(xiàn)在簡單介紹一下這些技術以及系統(tǒng)詳細設計。2.2.1JavaEEWEBJavaEE(JavaPlatform,EnterpriseEdition)是sun公司(2009年4月20日甲骨文將其收購)推出的企業(yè)級應用程序版本。這個版本以前稱為J2EE。能夠幫助我們開發(fā)和部署可移植、健壯、可伸縮且安全的服務器端Java應用程序。JavaEE是在JavaSE的基礎上構建的,它提供Web服務、組件模型、管理和通信API,可以用來實現(xiàn)企業(yè)級的面向服務體系結構(service-orientedarchitecture,SOA)和Web2.0應用程序。在當今網絡時代,無論是因特網(Internet)、內聯(lián)網、外聯(lián)網都離不開Web技術的應用。隨著網絡技術尤其是Web應用技術的發(fā)展,企業(yè)級應用對系統(tǒng)各方面的性能要求越來越高,特別是速度、安全、可靠性以及分布式應用等方面,在一定程度上決定著系統(tǒng)能否成功。在這些要求的共同作用下,SUN的JavaEE(Java平臺企業(yè)版)規(guī)范利用Java編程語言和企業(yè)API的強大功能,包括EJB技術,提供了一種業(yè)界領先的Web編程技術平臺。JAVAEEWEB編程技術已成為計算機領域中最重要的的技術之一,它是軟件學科中一個不可或缺的分支,是計算機專業(yè)和信息管理專業(yè)一門專業(yè)基礎課,越來越多的人都開始學習JAVAEEWEB編程技術。2.2.2JSPJSP全名為JavaServerPages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計,它[1]是由SunMicrosystems公司倡導、許多公司參與一起建立的一種動態(tài)網頁技術標準。JSP技術有點類似ASP技術,它是在傳統(tǒng)的網頁HTML(標準通用標記語言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件,后綴名為(*.jsp)。用JSP開發(fā)的Web應用是跨平臺的,既能在Linux下運行,也能在其他操作系統(tǒng)上運行。它實現(xiàn)了Html語法中的java擴張(以<%,%>形式)。JSP與Servlet一樣,是在服務器端執(zhí)行的。通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態(tài)網頁的處理邏輯。網頁還能通過tags和scriptlets訪問存在于服務端的資源的應用邏輯。JSP將網頁邏輯與網頁設計的顯示分離,支持可重用的基于組件的設計,使基于Web的應用程序的開發(fā)變得迅速和容易。JSP(JavaServerPages)是一種動態(tài)頁面技術,它的主要目的是將表示邏輯從Servlet中分離出來。JavaServlet是JSP的技術基礎,而且大型的Web應用程序的開發(fā)需要JavaServlet和JSP配合才能完成。JSP具備了Java技術的簡單易用,完全的面向對象,具有平臺無關性且安全可靠,主要面向因特網的所有特點。2.2.3ServletServlet是在服務器上運行的小程序。最早支持Servlet技術的是JavaSoft的JavaWebServer。此后,一些其它的基于Java的WebServer開始支持標準的ServletAPI。Servlet的主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動態(tài)Web內容。這個過程為:1)客戶端發(fā)送請求至服務器端;2)服務器將請求信息發(fā)送至Servlet;3)Servlet生成響應內容并將其傳給服務器。響應內容動態(tài)生成,通常取決于客戶端的請求;4)服務器將響應返回給客戶端。Servlet看起來像是通常的Java程序。Servlet導入特定的屬于JavaServletAPI的包。因為是對象字節(jié)碼,可動態(tài)地從網絡加載,可以說Servlet對Server就如同Applet對Client一樣,但是,由于Servlet運行于Server中,它們并不需要一個圖形用戶界面。從這個角度講,Servlet也被稱為FacelessObject。一個Servlet就是Java編程語言中的一個類,它被用來擴展服務器的性能,服務器上駐留著可以通過“請求-響應”編程模型來訪問的應用程序。雖然Servlet可以對任何類型的請求產生響應,但通常只用來擴展Web服務器的應用程序。2.2.4JavaScriptJavaScript一種直譯式腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態(tài)功能。2.2.5AjaxAJAX即“AsynchronousJavascriptAndXML”(異步JavaScript和XML),是指一種創(chuàng)建交互式網頁應用的網頁開發(fā)技術。AJAX=異步JavaScript和XML(標準通用標記語言的子集)。AJAX是一種用于創(chuàng)建快速動態(tài)網頁的技術。通過在后臺與服務器進行少量數(shù)據(jù)交換,AJAX可以使網頁實現(xiàn)異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。傳統(tǒng)的網頁(不使用AJAX)如果需要更新內容,必須重載整個網頁頁面。2.2.6HibernateHibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數(shù)據(jù)持久化的重任。2.2.7SpringSpring是一個開源框架,Spring是于2003年興起的一個輕量級的Java開發(fā)框架,由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopmentandDesign中闡述的部分理念和原型衍生而來。它是為了解決企業(yè)應用開發(fā)的復雜性而創(chuàng)建的??蚣艿闹饕獌?yōu)勢之一就是其分層架構,分層架構允許使用者選擇使用哪一個組件,同時為J2EE應用程序開發(fā)提供集成的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。Spring的核心是控制反轉(IoC)和面向切面(AOP)。簡單來說,Spring是一個分層的JavaSE/EEfull-stack(一站式)輕量級開源框架。2.2.8SpringMVCSpringMVC屬于SpringFrameWork的后續(xù)產品,已經融合在SpringWebFlow里面。Spring框架提供了構建Web應用程序的全功能MVC模塊。使用Spring可插入的MVC架構,可以選擇是使用內置的SpringWeb框架還可以是Struts這樣的Web框架。

3需求分析需求分析是在軟件開發(fā)的初始階段進行,它對于整個軟件開發(fā)過程以及軟件開發(fā)后質量是舉足輕重的。隨著軟件系統(tǒng)復雜性的提高及規(guī)模的擴大,需求分析在軟件開發(fā)中所處的地位愈加突出。所謂需求,是指用戶對目標軟件系統(tǒng)在功能、行為、性能設計約束等方面的要求。在需求分析的研究中,系統(tǒng)開發(fā)人員必須對用戶的需求進行調查和分析,結合實際環(huán)境的特征,正確定義目標軟件的特征。所謂需求分析,是指對要解決的問題進行詳細的分析,弄清楚問題的要求,包括需要輸入什么數(shù)據(jù),要得到什么結果,最后應輸出什么??梢哉f,在軟件工程當中的“需求分析”就是確定要計算機“做什么”,要達到什么樣的效果。可以說需求分析是做系統(tǒng)之前必做的。3.1需求采集在軟件工程中,需求分析指的是在建立一個新的或改變一個現(xiàn)存的電腦系統(tǒng)時描寫新系統(tǒng)的目的、范圍、定義和功能時所要做的所有的工作。需求分析是軟件工程中的一個關鍵過程。在這個過程中,系統(tǒng)分析員和軟件工程師確定顧客的需要。只有在確定了這些需要后,他們才能夠分析和尋求新系統(tǒng)的解決方法。需求分析階段的任務是確定軟件系統(tǒng)功能。3.1.1功能需求就本系統(tǒng)來說,本系統(tǒng)屬于BBS系統(tǒng),而且結合了百度貼吧開放關鍵詞的設計模式,應該具備如下功能,現(xiàn)在按照游客與會員(登錄用戶)來介紹。游客:是指一些訪問本系統(tǒng)的時候沒有進行過登錄操作的用戶。游客只有查詢的權限,可以訪問本系統(tǒng)包含的所有貼吧,可以瀏覽某個貼吧的所有的帖子,但是游客沒有執(zhí)行任何操作的權限,游客不能創(chuàng)建新的貼吧,不能發(fā)表新的帖子,不能回復已有的帖子。游客可以通過系統(tǒng)提供的注冊頁面來獲得系統(tǒng)承認的賬號,通過賬號登錄本系統(tǒng),以獲得與會員一致的權限。會員:會員是本系統(tǒng)的核心用戶,他們參與在貼吧建設的方方面面。會員在擁有游客的所有權限的同時,還擁有更多與系統(tǒng)進行交互的權限。會員可以更新自己賬號的信息,可以創(chuàng)建暫不存在的貼吧,可以在任何貼吧發(fā)表新的帖子,可以回復任何已存在的帖子。會員們可以通過帖子進行交流,當有會員與你發(fā)生信息交互時,系統(tǒng)會給出相對應的通知,而會員也可以通過查看通知來獲得信息詳情。管理員用戶,即吧主,也是會員,是某一個貼吧的管理者,肩負著壯大該貼吧的責任。會員可以通過創(chuàng)建一個貼吧來成為該貼吧的吧主,擁有該貼吧的最高權限??梢孕薷脑撡N吧的信息,可以管理本吧的帖子。吧主僅僅在屬于其自己的貼吧才是吧主,到了別的貼吧,其權限就會變成普通會員。此外,吧主還擁有著游客和會員的所有權限。3.1.2性能需求本系統(tǒng)是BBS論壇系統(tǒng),為了給用戶較好的體驗,需要本系統(tǒng)響應快速,所以在此對硬件及軟件做了需求分析。硬件環(huán)境:處理器:Inter酷睿i5或更高內存大小:4GB或更高硬盤空間:10GB或更高軟件環(huán)境:操作系統(tǒng):Win7或更高服務器:Tomcat6.0或更高數(shù)據(jù)庫:OracleDatabase10G或更高3.2功能模塊畫功能模塊圖是軟件開發(fā)過程中的一個非常重要的環(huán)節(jié),它將能夠顯示出軟件項目工程所要實現(xiàn)的各種功能,并且能夠分類,然后軟件工程師便能夠根據(jù)畫出來的功能模塊圖來編寫代碼實現(xiàn)具體的每一個功能。功能模塊圖就是將系統(tǒng)的功能進行分解,按功能從屬關系表示的圖表,具體如圖3-1所示:圖3-1貼吧系統(tǒng)用戶類型及對應功能概覽圖3.2.1基本功能通過需求分析,論壇的基本功能可以從眾多的需求中篩選出來。顧名思義,基本功能就是構成論壇系統(tǒng)的必要功能,具備這些功能的Web系統(tǒng)即是論壇。瀏覽帖子。用戶發(fā)表了新的帖子,其他用戶可以查看與回復,可以相互分享自己的經驗和想法。發(fā)表帖子。論壇就是為了相互討論話題而產生的,用戶發(fā)表帖子就是為了表達自己的看法與想法,能夠與他人進行討論,因此發(fā)帖功能是論壇系統(tǒng)最重要的功能。回復帖子。用戶可以瀏覽了他人發(fā)表的帖子,如果想要發(fā)表自己的看法,參與討論,那么用戶就就可以回復這個帖子??傮w來說,瀏覽帖子-發(fā)表帖子-回復帖子這三大最主要的功能周而復始的循環(huán)進行,這就構成了論壇。參與論壇活動的用戶,主要目的就是發(fā)表帖子,查看帖子,回復帖子,參與討論。這三大基本功能之間的相互關系如圖3-2所示:帖子列表發(fā)表帖子帖子列表發(fā)表帖子回復帖子瀏覽帖子回復帖子瀏覽帖子圖3-2貼吧系統(tǒng)基本功能相互關系圖3.2.2擴展功能除了基本功能之外,其他的論壇功能都是擴展功能。注冊登錄。用戶登錄系統(tǒng)之后,用戶信息被系統(tǒng)讀取到,用戶執(zhí)行操作的時候,系統(tǒng)直接獲取這個信息,所以會員的權限比游客高。分板塊瀏覽帖子。其實不同的貼吧就是不同的板塊,在某一個主題為某關鍵詞的貼吧里只討論與該關鍵詞相關的話題。這樣,對某一關鍵詞感興趣的用戶就不會被其他帖子信息干擾,同時也有利于有著相同興趣的用戶相互間的討論,不容易跑題。查看用戶信息。每一個用戶可以查看所有用戶的信息。刪除帖子。如果用戶發(fā)表了的帖子不符合論壇規(guī)則,則管理員需要刪除這些帖子。置頂帖子。帖子是根據(jù)發(fā)表時間的倒序排列的,這樣先發(fā)的帖子就會慢慢地排到列表靠后的位置,如果管理員需要強調某個或某些帖子的重要性,就需要為其設置特殊的等級,將這些帖子排列在列表的最前端,不再按照發(fā)帖時間順序進行排列,但還是要保證其他普通帖子按照創(chuàng)建時間的順序進行排列。精華帖子。如果某個帖子的內容比較優(yōu)秀,管理員可以為其可以打上精華標記,推薦給瀏覽帖子的用戶,用戶可以選擇只看精華帖。搜索帖子。隨著時間的推移,論壇中的帖子數(shù)量越來越多,用戶可能需要從大量的帖子中找到自己所需要的內帖子,這就引出了搜索帖子的功能。設置參數(shù)。論壇一般都有一些初始化信息,比如論壇的名稱,每頁可以顯示的帖子數(shù)量等參數(shù)信息,用戶可以在頁面的底部設置這些信息。查看通知信息。比如說管理員刪帖,刪帖后系統(tǒng)會提醒發(fā)帖用戶。查看回復信息。在用戶發(fā)帖或回帖之后,被其它用戶回帖,系統(tǒng)也會給出相應的提醒信息。查看提到情況。有時候別人發(fā)帖回特別提醒你一下(@用戶),系統(tǒng)也會做出相應的提醒。

4系統(tǒng)設計4.1數(shù)據(jù)庫表設計數(shù)據(jù)庫系統(tǒng)是在文件系統(tǒng)的基礎上發(fā)展而來的,經歷了層次數(shù)據(jù)庫、網狀數(shù)據(jù)庫、關系數(shù)據(jù)庫三個階段。由于關系數(shù)據(jù)庫采用人們比較容易理解和接受的二維表格來組織數(shù)據(jù),發(fā)展迅速,已成為數(shù)據(jù)庫產品的主流。本次系統(tǒng)設計所使用的數(shù)據(jù)庫就是關系數(shù)據(jù)庫Oracle。Oracle數(shù)據(jù)庫管理系統(tǒng)是一項全面完整的數(shù)據(jù)庫與分析產品。Oracle容易學習、使用,介紹、學習資料比較多,Oracle全面支持Web功能的數(shù)據(jù)庫解決方案。與此同時,Oracle11g提供了高性能、伸展性、可用性和安全性,并能更方便地在低成本服務器和存儲設備組成的網絡上運行,相對過往版本而言,Oracle11g具有了于總不同的特性,這也是企業(yè)數(shù)據(jù)庫系統(tǒng)在激烈市場競爭中克敵制勝的關鍵所在。正是由于Oracle和其它的大型數(shù)據(jù)庫相比較,Oracle具有可靠的安全性、較快的存儲速度、高度的兼容性和可擴展性、數(shù)據(jù)的大量性、數(shù)據(jù)保存的持久性、數(shù)據(jù)的共享性、簡單易用等等一系列的特性。因此,我采用了Oracle11g作為后臺的數(shù)據(jù)庫。本系統(tǒng)的數(shù)據(jù)庫暫時包含了7張表,分別為TABLE_MEMBER,TABLE_LEVEL,TABLE_TIEBA,TABLE_TIEZI,TABLE_FLOOR,TABLE_MESSAGE,TABLE_REMIND。他們之間存在一些依賴或包含的關系,系統(tǒng)可以有很多貼吧,每個貼吧下可以有很多帖子,每個帖子下可以有很多層樓,每層樓又可以包含很多個信息。下面將對這幾張表作相應的介紹。4.1.1ER圖分析E-R模型是對現(xiàn)實世界的一種抽象。它的主要組成部分是實體、聯(lián)系和屬性。使用這三部分,我們可以建立許多不同應用環(huán)境的ER模型。在本系統(tǒng)中,對象的實體和屬性的定義如下:圖4-1會員信息實體圖圖4-2貼吧信息實體圖圖4-3帖子信息實體圖圖4-4樓層信息實體圖圖4-5信息信息實體圖圖4-6提心信息實體圖4.1.2數(shù)據(jù)庫表設計TABLE_MEMBER會員表TABLE_MEMBER表是系統(tǒng)用來記錄注冊用戶信息的表,表中定義了用戶對象所具有的各種屬性,以及相對應的具體數(shù)據(jù)。在該表中,字段id_member是主鍵,是由用戶注冊的時間得來的長度為17的數(shù)字。具體信息如“表4-1TABLE_MEMBER”所示:表4-1TABLE_MEMBER會員表字段名類型說明id_memberNUMBER(17)主鍵,會員id,根據(jù)注冊時間得到的17位數(shù)字usernameVARCHAR2(20)用戶名passwordVARCHAR2(32)密碼,MD5加密后為32位字符串phoneVARCHAR2(11)電話emailVARCHAR2(30)郵箱genderVARCHAR2(3)性別,只能為‘男’或‘女’birthdayVARCHAR2(10)生日,格式為‘yyyy-MM-dd’addressVARCHAR2(150)地址qqnumberVARCHAR2(11)QQ賬號signatureVARCHAR2(150)個性簽名experienceNUMBER(10)經驗值roleNUMBER(1)角色,1.普通會員0.吧主,會員在每個吧的角色都不同,進入貼吧會自動更新statusNUMBER(1)狀態(tài),1.正常2.加黑3.封禁(有專門的加黑表,封禁表),會員在每個吧的這些狀態(tài)不同,進入貼吧會自動更新關鍵建表語句CONSTRAINTpk_member_1PRIMARYKEY(id_member)TABLE_TIEBA貼吧表TABLE_TIEBA表是系統(tǒng)用來記錄創(chuàng)建貼吧信息的表,表中定義了貼吧對象所具有的各種屬性,以及相對應的具體數(shù)據(jù)。在該表中,字段id_tieba是主鍵,是由創(chuàng)建貼吧的時間得來的長度為17的數(shù)字,字段id_member就是創(chuàng)建該吧的用戶,也就是該吧的吧主,外鍵引用了TABLE_MEMBER表的id_member。具體信息如“表4-2TABLE_TIEBA”所示:表4-2TABLE_TIEBA貼吧表字段名類型說明id_tiebaNUMBER(17)主鍵,貼吧id,根據(jù)創(chuàng)建時間得到的17位數(shù)字id_memberNUMBER(17)外鍵,吧主id,根據(jù)注冊時間得到的17位數(shù)字nameVARCHAR2(30)貼吧名稱signatureVARCHAR2(150)貼吧簽名statusNUMBER(1)狀態(tài),1可視0不可視關鍵建表語句CONSTRAINTpk_tieba_1PRIMARYKEY(id_tieba),CONSTRAINTfk_tieba_2FOREIGNKEY(id_member)REFERENCEStable_member(id_member)TABLE_TIEZI帖子表TABLE_TIEZI表是系統(tǒng)用來記錄創(chuàng)建帖子信息的表,表中定義了帖子對象所具有的各種屬性,以及相對應的具體數(shù)據(jù)。在該表中,字段id_tieba和id_tiezi構成了聯(lián)合主鍵,分別由創(chuàng)建貼吧的時間和發(fā)表帖子的時間得來的長度為17的數(shù)字,字段id_member就是發(fā)表該貼的用戶,也就是該貼的樓主,外鍵引用了TABLE_MEMBER表的id_member。具體信息如“表4-3TABLE_TIEZI”所示:表4-3TABLE_TIEZI帖子表字段名類型說明id_tiebaNUMBER(17)主鍵,外鍵,貼吧id,根據(jù)創(chuàng)建時間得到的17位數(shù)字id_tieziNUMBER(17)主鍵,帖子id,根據(jù)發(fā)帖時間得到的17位數(shù)字id_memberNUMBER(17)外鍵,會員id,根據(jù)注冊時間得到的17位數(shù)字name_memberVARCHAR2(20)會員用戶名,發(fā)帖用戶statusNUMBER(1)狀態(tài),1可視0不可視titleVARCHAR2(150)帖子標題關鍵建表語句 CONSTRAINTpk_tiezi_12PRIMARYKEY(id_tieba,id_tiezi), CONSTRAINTfk_tiezi_1FOREIGNKEY(id_tieba)REFERENCEStable_tieba(id_tieba), CONSTRAINTfk_tiezi_3FOREIGNKEY(id_member)REFERENCEStable_member(id_member)TABLE_FLOOR樓層表TABLE_FLOOR表是系統(tǒng)用來記錄創(chuàng)建樓層信息的表,表中定義了樓層對象所具有的各種屬性,以及相對應的具體數(shù)據(jù)。在該表中,字段id_tieba、id_tiezi和id_floor構成了聯(lián)合主鍵,分別由創(chuàng)建貼吧的時間、發(fā)表帖子的時間和發(fā)表樓層的時間得來的長度為17的數(shù)字,字段id_member就是發(fā)表該層的用戶,也就是該層的層主,外鍵引用了TABLE_MEMBER表的id_member。具體信息如“表4-4TABLE_FLOOR”所示:表4-4TABLE_FLOOR樓層表字段名類型說明id_tiebaNUMBER(17)主鍵,外鍵,貼吧id,根據(jù)創(chuàng)建時間得到的17位數(shù)字id_tieziNUMBER(17)主鍵,外鍵,帖子id,根據(jù)發(fā)帖時間得到的17位數(shù)字id_floorNUMBER(17)主鍵,樓層id,根據(jù)發(fā)帖時間得到的17位數(shù)字id_memberNUMBER(17)外鍵,會員id,根據(jù)注冊時間得到的17位數(shù)字name_memberVARCHAR2(20)會員用戶名,發(fā)樓用戶statusNUMBER(1)狀態(tài),1可視0不可視關鍵建表語句 CONSTRAINTpk_floor_123PRIMARYKEY(id_tieba,id_tiezi,id_floor), CONSTRAINTfk_floor_12FOREIGNKEY(id_tieba,id_tiezi)REFERENCEStable_tiezi(id_tieba,id_tiezi), CONSTRAINTfk_floor_4FOREIGNKEY(id_member)REFERENCEStable_member(id_member)TABLE_MESSAGE消息表TABLE_MESSAGE表是系統(tǒng)用來記錄創(chuàng)建信息的表,表中定義了信息對象所具有的各種屬性,以及相對應的具體數(shù)據(jù)。在該表中,字段id_tieba、id_tiezi、id_floor和id_message構成了聯(lián)合主鍵,分別由創(chuàng)建貼吧的時間、發(fā)表帖子的時間、發(fā)表樓層的時間和發(fā)表消息的時間得來的長度為17的數(shù)字,字段id_from就是發(fā)表該信息的用戶,字段id_to就是信息目標(該信息的接受者),外鍵引用了TABLE_MEMBER表的id_member。具體信息如“表4-5TABLE_MESSAGE”所示:表4-5TABLE_MESSAGE信息表字段名類型說明id_tiebaNUMBER(17)主鍵,外鍵,貼吧id,根據(jù)創(chuàng)建時間得到的17位數(shù)字id_tieziNUMBER(17)主鍵,外鍵,帖子id,根據(jù)發(fā)帖時間得到的17位數(shù)字id_floorNUMBER(17)主鍵,外鍵,樓層id,根據(jù)發(fā)帖時間得到的17位數(shù)字id_messageNUMBER(17)主鍵,樓層id,根據(jù)發(fā)帖時間得到的17位數(shù)字id_fromNUMBER(17)外鍵,會員id,根據(jù)注冊時間得到的17位數(shù)字name_fromVARCHAR2(20)會員用戶名,信息發(fā)送人id_toNUMBER(17)外鍵,會員id,根據(jù)注冊時間得到的17位數(shù)字name_toVARCHAR2(20)會員用戶名,信息接收人statusNUMBER(1)狀態(tài),1可視0不可視contentVARCHAR2(3000)信息內容關鍵建表語句 CONSTRAINTpk_message_1234PRIMARYKEY(id_tieba,id_tiezi,id_floor,id_message), CONSTRAINTfk_message_123FOREIGNKEY(id_tieba,id_tiezi,id_floor)REFERENCEStable_floor(id_tieba,id_tiezi,id_floor), CONSTRAINTfk_message_5FOREIGNKEY(id_from)REFERENCEStable_member(id_member), CONSTRAINTfk_message_7FOREIGNKEY(id_to)REFERENCEStable_member(id_member)TABLE_REMIND提醒表TABLE_REMIND表是系統(tǒng)用來記錄創(chuàng)建提醒信息的表,表中定義了提醒對象所具有的各種屬性,以及相對應的具體數(shù)據(jù)。在該表中,字段id_remind是主鍵,是創(chuàng)建提醒的時間得來的長度為17的數(shù)字,字段kind就是提醒的類型,可以為系統(tǒng)通知、用戶回復和用戶提到。具體信息如“表4-5TABLE_MESSAGE”所示:表4-6TABLE_REMIND提醒表字段名類型說明kindNUMBER(1)提醒類型,1.通知2.回復3.提到id_remindNUMBER(17)主鍵,提醒id,根據(jù)創(chuàng)建時間得到的17位數(shù)字id_tiebaNUMBER(17)貼吧id,根據(jù)創(chuàng)建時間得到的17位數(shù)字nameVARCHAR2(30)貼吧名稱id_tieziNUMBER(17)帖子id,根據(jù)發(fā)帖時間得到的17位數(shù)字tieleVARCHAR2(150)帖子標題id_floorNUMBER(17)樓層id,根據(jù)發(fā)帖時間得到的17位數(shù)字id_messageNUMBER(17)信息id,根據(jù)創(chuàng)建時間得到的17位數(shù)字id_fromNUMBER(17)外鍵,會員id,根據(jù)注冊時間得到的17位數(shù)字name_formVARCHAR2(20)會員用戶名,提醒發(fā)送人id_toNUMBER(17)外鍵,會員id,根據(jù)注冊時間得到的17位數(shù)字name_toVARCHAR2(20)會員用戶名,提醒接收人statusNUMBER(1)狀態(tài),1.未讀0.已讀contentVARCHAR2(3000)提醒內容關鍵建表語句 CONSTRAINTpk_remind_12PRIMARYKEY(kind,id_remind)4.2功能設計4.2.1登錄注冊登錄與注冊功能幾乎是WEB項目里不可或缺的存在,當然本論壇系統(tǒng)也不例外。在本系統(tǒng)里,登錄注冊模塊完全獨立了出來,單獨設置成了一個JSP頁面,在其他所有頁面里面調用該頁面即可。系統(tǒng)會根據(jù)不同情況在session里面設置不同的參數(shù)以及相對應的數(shù)據(jù),而本JSP頁面則會根據(jù)參數(shù)是否為空來選擇不同的顯示方式。而且本JSP頁面采用浮動技術,會一直固定在頁面的最頂部,不會隨著頁面的滾動而移動。本JSP頁面會顯示貼吧名稱以及貼吧簽名信息,同時還兼具用戶登錄與注冊功能。其通過JQuery與Ajax來做登錄驗證。登錄成功后,會重新加載頁面,這樣很多游客不具備的權限都會隨著用戶的登錄而變得可視或可操作。用戶點擊了注冊按鈕,系統(tǒng)會跳轉到注冊頁面,用戶只需要填寫最關鍵的賬號,密碼,手機,郵箱,通過合法性驗證,即可完成注冊,其他信息可以在注冊之后完善,賬號一經注冊不能修改。同時還會顯示未讀提醒的數(shù)量,點擊之后會跳轉到查看提醒頁面,這個在下面的查看提醒信息里會介紹到。4.2.2查看貼吧列表系統(tǒng)會將已存在的貼吧顯示在貼吧首頁,用戶可以通過點擊每一個貼吧的“進入貼吧”按鈕來跳轉到對應貼吧的貼吧主頁,也可以通過點擊“查看貼吧信息”或“查看吧主信息”來查看用戶感興趣的信息。所有的貼吧按照創(chuàng)建時間從早到晚的順序排列,創(chuàng)建的越早則顯示的位置越靠前。用戶也可以通過在貼吧搜索框里面輸入貼吧名稱的關鍵字(關鍵字可以有多個,中間使用空格來區(qū)分),來查找相應的貼吧,系統(tǒng)會把滿足搜索條件的貼吧全都列出來,顯示在貼吧列表之前,便于用戶查看。若是用戶沒有找到自己想要找的貼吧,也可以通過點擊“創(chuàng)建貼吧”按鈕來創(chuàng)建一個新的貼吧。如果貼吧創(chuàng)建成功,那么該用戶就會成為這個貼吧的吧主,擁有本吧里的最高權限,但是在其他非吧主的貼吧里,該用戶仍然只是普通會員,受該吧吧主的管制。4.2.3查看帖子列表用戶通過點擊“進入貼吧”按鈕,跳轉到某一個貼吧的首頁,該吧的所有的可視的帖子,都會被系統(tǒng)檢索到,然后顯示到這里。帖子的顯示分兩種,一種是置頂帖,一種是普通帖。置頂帖會優(yōu)先顯示到列表最頂端。兩種類型的帖子都會按照時間順序,較新的帖子會顯示在靠前的位置。游客與會員的功能第一次顯現(xiàn)差別,在這里登錄用戶可以直接發(fā)表新的帖子,可以刪除自己發(fā)的帖子,但是游客則沒有這樣的權限,必須得通過登錄系統(tǒng)才可以。4.2.4查看帖子詳情用戶通過點擊帖子列表頁面的任何一個帖子標題,即可進入查看該帖子的詳情。同樣,所有可視的信息都會被系統(tǒng)讀取到,然后顯示出來。在這里游客與登錄用戶的區(qū)別再一次體現(xiàn)了出來,游客只能瀏覽而不能回復,登錄用戶可以發(fā)表一個新的樓層,也可以在某個已有樓層下回復某一個用戶,也可以只回復層主,回復的樓層會顯示在當前帖子的最末樓,回復的信息會顯示在某一樓的最末信息位置。在這里,系統(tǒng)會根據(jù)登錄用戶與帖子的關系以及登錄用戶的權限來顯示不同的操作權限。首先是大前提,用戶不能回復自己,如果信息是樓層的第一條信息,那么不能刪除該信息,而只能刪除該樓層。其次是小限制,吧主擁有大前提下的最高權限,用戶(樓主)在自己發(fā)的貼子里擁有與吧主一致的權限,用戶(層主)在自己發(fā)的樓層里擁有與吧主一致的權限。用戶(發(fā)信息者)只對自己發(fā)的信息擁有與吧主一致的權限。4.2.5查看提醒信息提醒信息總共分為三種類型,通知提醒,回復提醒,提到提醒。通知提醒包括有管理員刪帖,管理員置頂帖,管理員精華帖等?;貜吞嵝丫褪怯袆e人對你的發(fā)言進行了回復后系統(tǒng)發(fā)給你的提醒,提到提醒就是別人發(fā)帖或回帖是特地@到你后體統(tǒng)發(fā)給你的提醒。在本系統(tǒng)中,提醒模塊所包含的內容有:系統(tǒng)通知,回復我的,提到我的,我回復的,我提到的共5部分。

5系統(tǒng)實現(xiàn)5.1功能實現(xiàn)1.本系統(tǒng)的前臺JSP頁面使用如下代碼重新設定了相對路徑。<%Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://"+ request.getServerName()+":"+request.getServerPort()+path+"/";%><basehref="<%=basePath%>">這樣把相對位置設置成了basePath,完美解決了相對位置發(fā)生改變導致頁面找不到的問題。2.本系統(tǒng)的服務器使用了80端口,并配置了如下信息重新設置了訪問地址。<ContextdocBase="Graduation"path=""reloadable="true" source="org.eclipse.jst.jee.server:Graduation"/>這樣只需要一個域名或IP地址就可以訪問到本項目了,不需要加端口號和項目名,設計比較人性化,測試也較為方便。5.1.1登錄注冊登錄:圖5-1未登錄狀態(tài)下位置為首頁的頭文件圖5-2未登錄狀態(tài)下進入貼吧后的頭文件圖5-3已登錄狀態(tài)下進入貼吧后的頭文件圖5-4已登錄狀態(tài)下進入貼吧后的頭文件Login_Servlet.java Membermember=service.login(usernameOrPhoneOrEmail,password); if(member!=null){ out.print("√"); HttpSessionsession=request.getSession(); session.setAttribute("member_",member); Levellevel=service.findLevelByPoint(member.getExperience()); session.setAttribute("level_",level); }else{ out.print("×"); }注冊:圖5-5注冊部分效果展示圖5-6查看用戶信息圖5-7修改用戶信息Controller_Member.java @RequestMapping(value="/insert",method=RequestMethod.GET) publicStringinsert(Modelmodel){ model.addAttribute("member",newMember()); return"/member/insert.jsp"; } @RequestMapping(value="/insert",method=RequestMethod.POST) publicStringinsert(Membermember)throwsException{ service.register(member); return"redirect:/member/select/"+member.getId_member().toString(); }MemberServiceImplement.java if(dao.findMemberByUsername(member.getUsername())!=null){ thrownewException("該用戶名已經被注冊"); } if(dao.findMemberByPhone(member.getPhone())!=null){ thrownewException("該手機號碼已經被注冊"); } if(dao.findMemberByEmail(member.getEmail().toUpperCase())!=null){ thrownewException("該郵箱已經被注冊"); } Longid=DateTime.getDateTimeFormatLongWithSSS(); while(dao.findMemberByMemberId(id)!=null){ id=DateTime.getDateTimeFormatLongWithSSS(); } member.setId_member(id); member.setPassword(MD5.getMD5(member.getPassword())); member.setEmail(member.getEmail().toUpperCase()); dao.saveMember(member);5.1.2查看貼吧列表圖5-8系統(tǒng)首頁圖5-9系統(tǒng)首頁-搜索圖5-10創(chuàng)建貼吧圖5-11查看貼吧信息圖5-12修改貼吧信息 Controller_Tieba.java @RequestMapping(value={"","/"},method=RequestMethod.GET) publicStringlist(Modelmodel,HttpSessionsession)throwsException{ Tiebatieba=newTieba("十度貼吧","全球最大的中文社區(qū)",null); session.setAttribute("tieba_",tieba); List<Tieba>tiebas=service_tieba.findAllTiebas(); model.addAttribute("tiebas",tiebas); return"tieba/list.jsp"; } @RequestMapping(value="/search",method=RequestMethod.POST) publicStringsearch(Stringsearch,Modelmodel,HttpSessionsession) throwsException{ if(search.length()!=0){ String[]keywords=search.split(""); List<Tieba>result=service_tieba.findTiebasByKeywords(keywords); session.setAttribute("result",result); } return"redirect:/tieba"; }5.1.3查看帖子列表圖5-13進入新建的貼吧圖5-14發(fā)表了一個新的帖子圖5-15多個用戶發(fā)表了多個帖子Controller_Tieba.java @RequestMapping(value="/home/{id_tieba}",method=RequestMethod.GET) publicStringhome(@PathVariableStringid_tieba,Modelmodel,HttpSessionsession) throwsException{ Tiebatieba=service_tieba.findTiebaByTiebaId(Long.parseLong(id_tieba)); session.setAttribute("tieba_",tieba); List<Tiezi>tiezis_top=service_tiezi.findAllTopTiezisByTiebaId( Long.parseLong(id_tieba)); List<Tiezi>tiezis_all=service_tiezi.findAllVisibleTiezisByTiebaId( Long.parseLong(id_tieba)); model.addAttribute("tiezis_top",tiezis_top); model.addAttribute("tiezis_all",tiezis_all); return"/tieba/home.jsp"; }5.1.4查看帖子詳情圖5-16用戶發(fā)表了信息Controller_Tieba.java @RequestMapping(value="/selecttiezi/{id_tieba}/{id_tiezi}",method=RequestMethod.GET) publicStringselectTiezi(@PathVariableStringid_tieba,@PathVariableStringid_tiezi, Modelmodel,HttpSessionsession)throwsException{ Tiebatieba=service_tieba.findTiebaByTiebaId(Long.parseLong(id_tieba)); model.addAttribute("tieba_",tieba); Datadata=service_tiezi.loadTieziByTiebaIdAndTieziId( Long.parseLong(id_tieba),Long.parseLong(id_tiezi)); model.addAttribute("data",data); return"/tieba/selecttiezi.jsp"; } @RequestMapping(value="/insertfloor/{id_tieba}/{id_tiezi}", method=RequestMethod.POST) publicStringinsertFloor(@PathVariableStringid_tieba,@PathVariableStringid_tiezi, Stringcontent,Modelmodel,HttpSessionsession)throwsException{ Membermember=(Member)session.getAttribute("member_"); member.setExperience(member.getExperience()+1L); member.setPassword(null); service_member.update(member); service_tiezi.sendFloor(Long.parseLong(id_tieba),Long.parseLong( id_tiezi),member.getId_member(),member.getUsername(),content); return"redirect:/tieba/selecttiezi/"+id_tieba+"/"+id_tiezi; } @RequestMapping(value="/insertmessage1/{id_tieba}/{id_tiezi}/{id_floor}/{id_to}/ {name_to}",method=RequestMethod.POST) publicStringinsertMessage(@PathVariableStringid_tieba,@PathVariableStringid_tiezi, @PathVariableStringid_floor,@PathVariableStringid_to, @PathVariableStringname_to,Stringcontent,Modelmodel, HttpSessionsession)throwsException{ Membermember=(Member)session.getAttribute("member_"); member.setExperience(member.getExperience()+1L); member.setPassword(null); service_member.update(member); session.setAttribute("member_",member); service_tiezi.sendMessage(Long.parseLong(id_tieba),Long.parseLong(id_tiezi), Long.parseLong(id_floor),member.getId_member(),member.getUsername(), Long.parseLong(id_to),name_to,content); return"redirect:/tieba/selecttiezi/"+id_tieba+"/"+id_tiezi; }5.1.5查看提醒信息圖5-17查看系統(tǒng)提醒圖5-18查看系統(tǒng)提醒Controller_Tieba.java @RequestMapping(value="/remind/inform",method=RequestMethod.GET) publicStringinform(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>informs=service_remind.findInformRemindsByToId( member.getId_member()); model.addAttribute("informs",informs); model.addAttribute("flag","informs"); return"/tieba/remind.jsp"; } @RequestMapping(value="/remind/reply",method=RequestMethod.GET) publicStringreply(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>replys=service_remind.findReplyRemindsByToId( member.getId_member()); model.addAttribute("replys",replys); model.addAttribute("flag","replys"); return"/tieba/remind.jsp"; } @RequestMapping(value="/remind/mention",method=RequestMethod.GET) publicStringmention(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>mentions=service_remind.findMentionRemindsByToId( member.getId_member()); model.addAttribute("mentions",mentions); model.addAttribute("flag","mentions"); return"/tieba/remind.jsp"; } @RequestMapping(value="/remind/replyfromme",method=RequestMethod.GET) publicStringreplyfromme(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>replysfromme=service_remind.findMentionRemindsByFromId( member.getId_member()); model.addAttribute("replysfromme",replysfromme); model.addAttribute("flag","replysfromme"); return"/tieba/remind.jsp"; } @RequestMapping(value="/remind/mentionfromme",method=RequestMethod.GET) publicStringmentionfromme(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>mentionsfromme=service_remind.findMentionRemindsByFromId( member.getId_member()); model.addAttribute("mentionsfromme",mentionsfromme); model.addAttribute("flag","mentionsfromme"); return"/tieba/remind.jsp"; }5.2系統(tǒng)不足由于本人技術水平有限以及時間不足的原因,系統(tǒng)現(xiàn)在暫時還沒有圖片上傳功能,在圖片方面,我的設計初衷就是用戶注冊以及貼吧創(chuàng)建的時候,必須同時上傳一張圖片作為用戶頭像和貼吧Logo,還有用戶發(fā)帖子的時候也可以上傳圖片,這個功能在接下來的時間里我還是會集成到現(xiàn)有系統(tǒng)里面去的。還有一點,就是分頁設計功能,目前還處于研發(fā)之中?,F(xiàn)在已經在測試項目里面實現(xiàn)了這個功能,但是代碼比較分散,JSP頁面里面有,后臺Servlet里面也有,想要往本系統(tǒng)里面集成實在是不易。所以我將會在后續(xù)的修改中,繼續(xù)加油,盡量把分頁功能整合一下。一次實現(xiàn),多次調用。把本系統(tǒng)里面涉及到分頁功能的地方,全部替換掉。

6系統(tǒng)測試軟件測試(SoftwareTesting),描述一種用來促進鑒定軟件的完整性、安全性、正確性和質量的過程??傊?,軟件測試是一種預期輸出與實際輸出之間的對比或者審核的過程。軟件測試的最經典的定義是:在事先規(guī)定的條件下對程序進行指定操作,用以發(fā)現(xiàn)程序的錯

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論