版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
摘要當(dāng)今社會(huì)正處在網(wǎng)絡(luò)時(shí)代,信息化大潮席卷全球,網(wǎng)絡(luò)正以前所未有的速度在我國普與開來。網(wǎng)站以其獨(dú)特的優(yōu)勢在信息化的過程中占有重要的一席。為了方便信息的交流,在結(jié)合JAVA和S.S.H技術(shù)之下開發(fā)了這個(gè)快捷、界面友好的交流系統(tǒng),實(shí)現(xiàn)了一個(gè)功能相對(duì)齊全的論壇系統(tǒng),網(wǎng)友可以自由地提出問題以與幫助他人解決問題,或者交流經(jīng)驗(yàn)。論壇在Struts+Hibernate+Spring擴(kuò)展Struts框架的基礎(chǔ)上,用當(dāng)今主流的網(wǎng)站開發(fā)技術(shù)jsp語言進(jìn)行開發(fā)。論壇將采用B/S體系結(jié)構(gòu),人們通過瀏覽器就可以訪問教學(xué)網(wǎng)站的主頁,保證的服務(wù)器的安全。數(shù)據(jù)庫采用免費(fèi),小巧,易用的mysql數(shù)據(jù)庫。該論壇功能較齊全,在這里可以自由地發(fā)表自己的觀點(diǎn)和對(duì)論壇的主題發(fā)表意見,我們還可以對(duì)網(wǎng)友的問題與時(shí)地解決,獲取對(duì)自己有用的知識(shí)。該論壇還有一些特殊的功能,如在線人員顯示、強(qiáng)大的搜索功能。本網(wǎng)站嚴(yán)格按照軟件項(xiàng)目開發(fā)的流程進(jìn)行開發(fā),對(duì)于網(wǎng)站開發(fā)的可行性分析、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)以與對(duì)網(wǎng)站的測試與維護(hù)都有詳細(xì)的論述和實(shí)現(xiàn)過程。本套論壇的優(yōu)點(diǎn)在于它具有強(qiáng)大的可擴(kuò)展性和可維護(hù)性,非常適合網(wǎng)民創(chuàng)建自己的中小型BBS論壇!關(guān)鍵詞:BBS,S.S.H(Struts,Hibernate,Spring),JAVA,MySQL,JSP目錄摘要ⅠAbstract…………...………………...…………………..Ⅱ目錄…………….……………………Ⅲ第一章系統(tǒng)概述……...…….…………………...……….…….………..1 1.1總體概述……...………...……1 1.2開發(fā)背景…………..….….…..2 1.3開發(fā)目的……...……..…….…3第二章系統(tǒng)分析………...……...……………...……..………….4 2.1技術(shù)可行性分析……...………...4 2.1.1開發(fā)語言綜述…………4 2.1.2MySQL數(shù)據(jù)庫的選用……………….….5 2.1.3S.S.H框架優(yōu)點(diǎn)…………..6 2.1.4系統(tǒng)層次設(shè)計(jì)………...….9 2.1.5技術(shù)可行性綜述……..………………...10 2.2時(shí)間可行性(項(xiàng)目開發(fā)計(jì)劃)…………….……10 2.3系統(tǒng)需求分析…………...…….10 2.3.1系統(tǒng)開發(fā)運(yùn)行環(huán)境………………..…...10 2.3.2業(yè)務(wù)描述………………..11 2.3.3系統(tǒng)功能概述………12 2.3.4數(shù)據(jù)流程……………….12 2.4系統(tǒng)總體結(jié)構(gòu)分析結(jié)論……………………15第三章系統(tǒng)設(shè)計(jì)……………………….16 3.1數(shù)據(jù)庫設(shè)計(jì)……….…………...16 3.1.1概念模型設(shè)計(jì)(E-R圖)………………..………………..16 3.1.2數(shù)據(jù)庫表與關(guān)系建立…………………..………………18 3.1.3詳細(xì)數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)…………………..………………18 3.2系統(tǒng)概要設(shè)計(jì)…………….…….……………..23 3.2.1功能模塊設(shè)計(jì)……………..……………23 3.2.2系統(tǒng)界面設(shè)計(jì)……………..……………26 3.2.3系統(tǒng)的組件設(shè)計(jì)…………..……………28第四章系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)……….31 4.1系統(tǒng)框架實(shí)現(xiàn)…………………….…………...31 4.1.1底層數(shù)據(jù)庫的建立……………………..31 4.1.2持久化層的建立(hibernate)…………32 4.1.3業(yè)務(wù)邏輯層的建立……………………..33 4.1.4表示層的建立………..…36 4.2系統(tǒng)功能模塊實(shí)現(xiàn)…………..…………..…….36 4.2.1會(huì)員模塊實(shí)現(xiàn)…………...36 4.2.2帖子模塊實(shí)現(xiàn)…………...39 4.2.3后臺(tái)管理模塊實(shí)現(xiàn)……………………...424.3系統(tǒng)設(shè)計(jì)總結(jié)………………...……………….44第五章系統(tǒng)的調(diào)試與測試……………….……………45 5.1測試概述……………………….45 5.1.1軟件測試的目的………...45 5.1.2軟件測試的任務(wù)………...45 5.1.3測試環(huán)境………………...46 5.2單元測試…………..…..………46 5.2.1黑盒測試………………...465.2.2白盒測試………………...47 5.2.3模塊接口測試…………...48 5.3集成測試…………..…..……….50 5.3.1自頂向下集成…………...50 5.3.2確認(rèn)測試標(biāo)準(zhǔn)…………...51第六章結(jié)論………………….…………52參考文獻(xiàn)……………………….………53致謝………………….54附錄A英文文獻(xiàn)……………………...55附錄B翻譯…………...68第1章系統(tǒng)概述總體概述進(jìn)入二十一世紀(jì),計(jì)算機(jī)技術(shù)迅速向著網(wǎng)絡(luò)化、集成化方向發(fā)展。傳統(tǒng)的單機(jī)版應(yīng)用軟件正在逐漸退出舞臺(tái),取而代之的是支持網(wǎng)絡(luò)、支持多種數(shù)據(jù)信息(多媒體)的新一代網(wǎng)絡(luò)版應(yīng)用軟件,而目前網(wǎng)絡(luò)版軟件中似乎存在著兩種不同的趨勢,一種是稱為客戶端——服務(wù)器的C/S結(jié)構(gòu),這類軟件具有結(jié)構(gòu)嚴(yán)謹(jǐn),運(yùn)行效率高,服務(wù)器端壓力小,安全性好等優(yōu)點(diǎn),被廣泛運(yùn)用于局域網(wǎng)中。而另一種,也是本畢業(yè)設(shè)計(jì)所采用的,是稱為瀏覽器——服務(wù)器的B/S結(jié)構(gòu),它的特點(diǎn)是在客戶端直接采用了功能強(qiáng)大的瀏覽器軟件作為界面,其優(yōu)點(diǎn)在于軟件開發(fā)效率高,客戶端不受操作平臺(tái)的限制、也不受地域的限制,網(wǎng)絡(luò)傳輸量少,即適用于局域網(wǎng),更適用于Internet,而且投資小、見效快,用戶可以不必進(jìn)行服務(wù)器方面的投資,而是去租用,甚至是免費(fèi)使用ISP的服務(wù)器資源,因而受到越來越多中小型單位的青睞。隨著Internet技術(shù)的不斷發(fā)展,以與用戶群爆炸性地增長,網(wǎng)絡(luò)不再僅僅是信息的被動(dòng)獲取來源,更成為人們探討間題、交換觀點(diǎn)的場所,其中,網(wǎng)上論壇扮演了極其重要的角色,隨著時(shí)間的推移,論壇站點(diǎn)中積存了豐富的信息資源,不但有各類技術(shù)資料和新聞文檔,還包含著用戶的判斷和評(píng)論,論壇站點(diǎn)己成為Web信息庫的重要組成部分,自網(wǎng)上論壇誕生20多年以來,隨著Web技術(shù)的發(fā)展,己經(jīng)由原來簡單的電子公告板系統(tǒng)發(fā)展為功能豐富的網(wǎng)上論壇和虛擬社區(qū)模式。各種論壇隨著網(wǎng)絡(luò)迅速發(fā)展,幾乎充實(shí)著生活工作的每一個(gè)方面,無論是商界、政界,還是娛樂界,都有各種論壇。互聯(lián)網(wǎng)正在融入我們的生活,網(wǎng)絡(luò)提供給我們的不只是一個(gè)獲取信息的來源,而且還是一個(gè)可以相互交流的空間,網(wǎng)上論壇正是一種供人們進(jìn)行交流的網(wǎng)絡(luò)空間,影響和改變著我們的生活。開發(fā)背景1978年在美國芝加哥開發(fā)出一套基于8080芯片的CBBS/Chicago(ComputerizedBulletinBoardSystem/Chicago),此乃最早的一套BBS系統(tǒng)。之后隨著蘋果機(jī)的問世,開發(fā)出基于蘋果機(jī)的BulletinBoardSystem和大眾信息系統(tǒng)(PeoplesMessageSystem)2種BBS系統(tǒng)。1981年IBM個(gè)人計(jì)算機(jī)誕生時(shí),并沒有自己的BBS系統(tǒng)。直到1982年,BussLane才用Basic語言為IBM個(gè)人計(jì)算機(jī)編寫了一個(gè)原型程序。其后經(jīng)過幾番增修,終于在1983年通過CapitalPCUserGroup(CPCUG)的CommunicationSpecialInterestGroup會(huì)員的努力,改寫出了個(gè)人計(jì)算機(jī)系統(tǒng)的BBS。經(jīng)ThomasMach整理后,終于完成了個(gè)人計(jì)算機(jī)的第1版BBS系統(tǒng)——RBBS-PC。這套BBS系統(tǒng)的最大特色是其源程序全部公開,有利于日后的修改和維護(hù),因此后來在開發(fā)其他的BBS系統(tǒng)時(shí)都以此為框架,所以RBBS-PC贏得了BBS鼻祖的美稱。大約是從1991年開始,國內(nèi)開始了第一個(gè)BBS站。經(jīng)過長時(shí)間的發(fā)展,直到1995年,隨著計(jì)算機(jī)與其外設(shè)的大幅降價(jià),BBS才逐漸被人們所認(rèn)識(shí)。1996年更是以驚人的速度發(fā)展起來。國內(nèi)的BBS站,按其性質(zhì)劃分,可以分為2種:一種是商業(yè)BBS站,如新華龍訊網(wǎng);另一種是業(yè)余BBS站,如天堂資訊站。由于使用商業(yè)BBS站要交納一筆費(fèi)用,而商業(yè)站所能提供的服務(wù)與業(yè)余站相比,并沒有什么優(yōu)勢,所以其用戶數(shù)量不多。多數(shù)業(yè)余BBS站的站長,基于個(gè)人關(guān)系,每天都互相交換電子郵件,漸漸地形成了一個(gè)全國性的電子郵件網(wǎng)絡(luò)ChinaFidoNet(中國惠多網(wǎng))。于是,各地的用戶都可以通過本地的業(yè)余BBS站與遠(yuǎn)在異地的網(wǎng)友互通信息。這種跨地域電子郵件交流正是商業(yè)站無法與業(yè)余站相抗衡的根本因素。由于業(yè)余BBS站擁有這種優(yōu)勢,所以使用者都更樂意加入。這里“業(yè)余”2字,并不是代表這種類型的BBS站的服務(wù)和技術(shù)水平是業(yè)余的,而是指這類BBS站的性質(zhì)。一般BBS站都是由志愿者開發(fā)的。他們付出的不僅是金錢,更多的是精力。其目的是為了推動(dòng)中國計(jì)算機(jī)網(wǎng)絡(luò)的健康發(fā)展,提高廣大計(jì)算機(jī)用戶的應(yīng)用水平國內(nèi)的BBS站,大多數(shù)還是大型綜合性BBS站。隨著計(jì)算機(jī)的普與,特別是寬帶的普與,BBS的活動(dòng)將會(huì)進(jìn)一步高漲。但是,隨之而來對(duì)專注于領(lǐng)域方面的BBS將會(huì)慢慢增加需求。盡管BBS站臺(tái)的數(shù)量在不斷增長,但BBS的發(fā)展過程,也出現(xiàn)了一些問題。由于國內(nèi)使用的BBS架站軟件,都是從國外引進(jìn)的,因此沒有必要的中文說明。雖然一些熱心的站長翻譯了一些資料,但是僅靠這些是遠(yuǎn)遠(yuǎn)不夠的。另外,有些站臺(tái)的設(shè)立是相互抄襲,所以在結(jié)構(gòu)上難免有雷同之處。而國內(nèi)自己開發(fā)的BBS基本上都是處于最原始的JSPMODEL1模式,這種模式是控制層與表示層合二為一,雖然開發(fā)簡單,但是擁有很差的擴(kuò)展性,可維護(hù)性,這樣極大的限制了BBS站點(diǎn)的擴(kuò)展,于是在這種情況下,本文提出了目前比較流行的,基于MVC模式的S.S.H框架(Sturts+Spring+hibernate)的BBS論壇,本套論壇的優(yōu)點(diǎn)在于它具有強(qiáng)大的可擴(kuò)展性和可維護(hù)性,非常適合網(wǎng)民創(chuàng)建自己的中小型BBS論壇!開發(fā)目的綜上所述,本文提出了目前比較流行的,基于MVC模式的S.S.H框架(Sturts+Spring+hibernate)的BBS論壇,本套論壇的優(yōu)點(diǎn)在于它具有強(qiáng)大的可擴(kuò)展性和可維護(hù)性,非常適合網(wǎng)民創(chuàng)建自己的中小型BBS論壇!第2章系統(tǒng)分析2.1技術(shù)可行性分析2.1.1開發(fā)語言綜述本系統(tǒng)是基于面向?qū)ο笏枷氲腏AVA語言中J2EE平臺(tái)進(jìn)行編寫,J2EE平臺(tái)具有以下優(yōu)點(diǎn)1.簡化結(jié)構(gòu):J2EE平臺(tái)支持簡化的、基于組件開發(fā)模型,由于J2EE基于Java編程語言和J2SE平臺(tái),它提供了編寫一次,隨處運(yùn)行的可移植性,遵循J2EE標(biāo)準(zhǔn)的所有服務(wù)器都支持該模型。
EJB組件使編寫應(yīng)用程序更為簡單。盡管EJB體系結(jié)構(gòu)復(fù)雜,但應(yīng)用程序開發(fā)人員一般都必再編寫訪問系統(tǒng)服務(wù)的代碼,EJB容器會(huì)實(shí)現(xiàn)系統(tǒng)級(jí)的服務(wù),例如,事務(wù)、安全性等。
另外,J2EE還支持異構(gòu)環(huán)境?;贘2EE的應(yīng)用程序不依賴任何特定操作系統(tǒng)、中間件或硬件,因此,設(shè)計(jì)合理的基于J2EE的程序只需開發(fā)一次就可以部署到各種平臺(tái),這在典型的異構(gòu)企業(yè)算環(huán)境中是十分關(guān)鍵的。J2EE標(biāo)準(zhǔn)還允許客戶訂購與J2EE兼容的第三方的現(xiàn)成組件,把其部署到異構(gòu)環(huán)境中,節(jié)省了由自己制訂整個(gè)方案所需的費(fèi)用。2.提高開發(fā)效率:由于組件技術(shù)的使用,可以按照開發(fā)人員的技能對(duì)應(yīng)用程序開發(fā)進(jìn)行分工,并行開發(fā),提供整體開發(fā)效率。例如:圖形設(shè)計(jì)師創(chuàng)建JSP模板,商業(yè)邏輯由該領(lǐng)域的專家完成,JSP頁面和EJB由Java工程師完成,應(yīng)用程序的裝配和部署由團(tuán)隊(duì)中其他的成員完成,其中許多工作可以同時(shí)進(jìn)行,有助于加速應(yīng)用程序的開發(fā)。3.可移植性強(qiáng):除了Java語言固有的可移植性外,EJB體系結(jié)構(gòu)在Bean和支持該Bean的容器之間提供了一套標(biāo)準(zhǔn)化的應(yīng)用程序編程接口,這使開發(fā)人員能夠?qū)ean從一種操作環(huán)境移植到另一種操作環(huán)境,而無需重新編寫其源代碼。4.重用性好:由于在EJB模型中,各個(gè)軟件組件都是嚴(yán)格分離的,因此,可以從現(xiàn)有的軟件組件裝配出服務(wù)器端應(yīng)用程序,這與從現(xiàn)有的JavaBean可以裝配出客戶端應(yīng)用程序一樣,使軟件能夠重用。5.易于維護(hù):基于組件的設(shè)計(jì)簡化了應(yīng)用程序的維護(hù)。由于組件可以被獨(dú)立地更新和替代,通過更新應(yīng)用程序中特定的組件,新的功能可以被很容易地增加。6.可伸縮性:企業(yè)必須要選擇一種服務(wù)器端平臺(tái),以便滿足那些在它們系統(tǒng)上進(jìn)行商業(yè)動(dòng)作大批新客戶?;贘2EE平臺(tái)的應(yīng)用程序可被部署到各種操作系統(tǒng)上,例如,可被部署到高端UNIX或其他的大型機(jī)系統(tǒng)上。J2EE領(lǐng)域的供應(yīng)商提供了更為廣泛的負(fù)載平衡策略,能消除系統(tǒng)中的瓶頸,允許多臺(tái)服務(wù)器集成部署,實(shí)現(xiàn)可高度伸縮的系統(tǒng),滿足未來商業(yè)應(yīng)用的需要。7.被廣泛接受:主要的IT供應(yīng)用商都采納EJB體系結(jié)構(gòu),不同供應(yīng)商的產(chǎn)品只要符合EJB體系結(jié)構(gòu),就都是可互操作的。2.1.2MySQL數(shù)據(jù)庫的選用MySQL是現(xiàn)在流行的關(guān)系數(shù)據(jù)庫中其中的一種,相比其它的數(shù)據(jù)庫管理系統(tǒng)(DBMS)來說,MySQL具有小巧、功能齊全、查詢迅捷等優(yōu)點(diǎn),關(guān)鍵的是它是免費(fèi)的,可以在Internet上免費(fèi)下載到,并可免費(fèi)使用,對(duì)于一般中小型,甚至大型應(yīng)用都能夠勝任MySQL具有以下優(yōu)點(diǎn):1、首先是速度。對(duì)于MySQL來說,速度是他們追求的主要目標(biāo)之一,基于這個(gè)原因,MySQL在以前的文檔中也曾經(jīng)說過并不準(zhǔn)備支持事務(wù)和觸發(fā)器。但是在最新的文檔中,我們看到MySQL4.0.2-alpha已經(jīng)開始支持事務(wù),而且在MySQL的TODO中,對(duì)觸發(fā)器、約束這樣的注定會(huì)降低速度的功能也列入了日程。但是,仍然有理由相信,MySQL將有可能一直保持速度的優(yōu)勢。2、MySQL更流行,流行對(duì)于一個(gè)商業(yè)軟件來說,也是一個(gè)很重要的指標(biāo),流行意味著更多的用戶,意味著經(jīng)受了更多的考驗(yàn),意味著更好的商業(yè)支持、意味著更多、更完善的文檔資料。3、MySQL更適宜在Windows環(huán)境下運(yùn)行。MySQL作為一個(gè)本地的Windows應(yīng)用程序運(yùn)行(在NT/Win2000/WinXP下,是一個(gè)服務(wù)),在Windows運(yùn)行中,MySQL更加的穩(wěn)定。4、MySQL使用了線程,在不同線程之間的環(huán)境轉(zhuǎn)換和訪問公用的存儲(chǔ)區(qū)域顯然要比在不同的進(jìn)程之間要快得多。5、MySQL可以適應(yīng)24/7運(yùn)行。在絕大多數(shù)情況下,你不需要為MySQL運(yùn)行任何清除程序。6、MySQL在權(quán)限系統(tǒng)上更為完善。MySQL允許你定義一整套的不同的數(shù)據(jù)級(jí)、表級(jí)和列級(jí)的權(quán)限。對(duì)于列級(jí)的權(quán)限。MySQL還允許你指定基于主機(jī)的權(quán)限。7、由于MySQL4.0.2-alpha開始支持事務(wù)的概念,因此事務(wù)對(duì)于MySQL不再僅僅成為劣勢。相反,因?yàn)镸ySQL保留無事務(wù)的表類型。這就為用戶提供了更多的選擇。8、MySQL的MERGE表提供了一個(gè)獨(dú)特管理多個(gè)表的方法。9、MySQL的myisampack可以對(duì)只讀表進(jìn)行壓縮,此后仍然可以直接訪問該表中的行。2.1.3S.S.H框架的優(yōu)點(diǎn)S.S.H框架是J2EE應(yīng)用中struts+spring+hibernate三大免費(fèi)開源框架的結(jié)合使用,它可以看成工具,也是中間件。他是用來提高我們的開發(fā)效率,提高我們軟件產(chǎn)品的可維護(hù)性、可擴(kuò)展性乃至敏捷性的。他們里面有很多優(yōu)秀的設(shè)計(jì)理念與模式應(yīng)用。比如,struts屬于MVC框架,關(guān)鍵是要了解MVC的概念與大致原理;而hibernate屬于ORM系統(tǒng),屬于持久層的解決方案,同樣需要對(duì)ORM的概念與原理有一個(gè)總體的了解。而spring屬于應(yīng)用程序框架,其核心是IOC容器以與AOP,Spring中還集成了很多適用東西,比如對(duì)JDBC的封裝、自己的MVC、對(duì)動(dòng)態(tài)語言的簡潔訪問等,它由以下3個(gè)框架構(gòu)成:1.Struts框架Struts是Apache組織的一個(gè)開放源碼項(xiàng)目。Struts是一個(gè)比較好的MVC框架,提供了對(duì)開發(fā)MVC系統(tǒng)的底層支持,它采用的主要技術(shù)是Servlet,JSP和Customtaglibrary。其基本構(gòu)成如圖2.1所示。 圖2.1Struts框架工作流程2.Spring框架Spring的核心是個(gè)輕量級(jí)(Lightweight)的容器(Container),它是實(shí)現(xiàn)IoC(InversionofControl)容器、非侵入性(Nointrusive)的框架,并提供AOP(Aspect-orientedprogramming)概念的實(shí)現(xiàn)方式,提供對(duì)持久層(Persistence)、事務(wù)(Transaction)的支持,提供MVCWeb框架的實(shí)現(xiàn),并對(duì)一些常用的企業(yè)服務(wù)API(ApplicationInterface)提供一致的模型封裝,是一個(gè)全方位的應(yīng)用程序框架(Applicationframework),除此之外,對(duì)于現(xiàn)存的各種框架(Struts、JSF、Hibernate等),Spring也提供了與它們相整合的方案。Spring框架由以下7個(gè)部分組成圖2.2Spring框架構(gòu)成3.Hibernate框架Hibernate是一個(gè)開放源碼的ORM持久層框架。作為優(yōu)秀的持久層框架實(shí)現(xiàn),Hibernate框架提供了強(qiáng)大、高性能的對(duì)象到關(guān)系型數(shù)據(jù)庫的持久化服務(wù),開發(fā)人員可以使用面向?qū)ο蟮脑O(shè)計(jì)進(jìn)行持久層開發(fā)。簡單的說,Hibernate只是一個(gè)將持久化類與數(shù)據(jù)庫表相映射的工具,每個(gè)持久化類實(shí)例均對(duì)應(yīng)于數(shù)據(jù)庫表中的一個(gè)數(shù)據(jù)行而已。用戶只需直接使用面向?qū)ο蟮姆椒ú僮鞔顺志没悓?shí)例,即可完成對(duì)數(shù)據(jù)庫表數(shù)據(jù)的插入、刪除、修改、讀取等操作。圖2.3Hibernate框架2.1.4系統(tǒng)層次設(shè)計(jì)系統(tǒng)很據(jù)S.S.H框架的特點(diǎn),決定使用四層結(jié)構(gòu),這樣做的優(yōu)點(diǎn)是(1)可以分層開發(fā),訪問數(shù)據(jù)庫與業(yè)務(wù)邏輯實(shí)現(xiàn)能夠分開。(2)提高代碼的復(fù)用表示層表示層業(yè)務(wù)邏輯層持久化層數(shù)據(jù)庫層圖2.4LeafBBS系統(tǒng)的分層結(jié)構(gòu)2.1.5技術(shù)可行性綜述綜上所述,這些成熟的框架和優(yōu)秀的設(shè)計(jì)思想,為系統(tǒng)建設(shè)提供了技術(shù)條件。計(jì)算機(jī)等基礎(chǔ)設(shè)施的更新?lián)Q代也緊跟潮流的發(fā)展,這就為開發(fā)系統(tǒng)提供了堅(jiān)實(shí)基礎(chǔ)。2.2時(shí)間可行性(項(xiàng)目開發(fā)計(jì)劃)本系統(tǒng)的難點(diǎn)在于三大框架的結(jié)合使用,但目前有很多優(yōu)秀的書籍可供參閱,且參加過類似項(xiàng)目的開發(fā),預(yù)計(jì)本系統(tǒng)在規(guī)定時(shí)間內(nèi),基本能夠完成.開發(fā)計(jì)劃如下: 2007.01.01-03.30調(diào)研2007.04.31-04.13資料查閱2007.04.16-04.20方案設(shè)計(jì)2007.04.02-05.18編寫程序2007.05.07-05.18撰寫論文2.3系統(tǒng)需求分析2.3.1系統(tǒng)開發(fā)運(yùn)行環(huán)境鑒于系統(tǒng)的開發(fā)語言和數(shù)據(jù)庫,采用如下的開發(fā)環(huán)境開發(fā)環(huán)境:Windows2000NTTomCat6.0JDK1.5硬件實(shí)現(xiàn):PentiumⅣ2.4G1G內(nèi)存80G硬盤開發(fā)語言:Java數(shù)據(jù)庫:MySQL開發(fā)工具:MyEclipse5.1預(yù)期成果:一個(gè)可擴(kuò)展的基于MVC模式的BBS論壇2.3.2業(yè)務(wù)描述對(duì)于訪問論壇的用戶,可分為注冊會(huì)員和為注冊的臨時(shí)用戶,這兩種用戶有著不同的權(quán)限,比如臨時(shí)用戶只能對(duì)帖子進(jìn)行查看,而注冊會(huì)員除了查看帖子之外,還可以發(fā)帖,回復(fù),查找用戶,并且可以對(duì)自己的注冊資料進(jìn)行修改等等,系統(tǒng)的用例圖如下:會(huì)員用戶會(huì)員用戶臨時(shí)用戶瀏覽帖子發(fā)表帖子回復(fù)帖子修改資料會(huì)員搜索管理員會(huì)員管理帖子管理論壇信息管理圖2.5系統(tǒng)用例圖2.3.3系統(tǒng)功能概述本系統(tǒng)是一套網(wǎng)上交流的BBS軟件,根據(jù)用戶的需要和實(shí)際的管理?xiàng)l件,應(yīng)由用戶功能實(shí)現(xiàn),帖子功能實(shí)現(xiàn)和后臺(tái)管理等幾個(gè)模塊所構(gòu)成,用戶可以對(duì)一些數(shù)據(jù)進(jìn)行查找和修改,并且注冊的用戶可以對(duì)帖子進(jìn)行特定的操作,而管理員可以對(duì)用戶和帖子進(jìn)行相關(guān)的管理.鑒于本系統(tǒng)的性質(zhì),系統(tǒng)應(yīng)該實(shí)現(xiàn)以下功能.1.用戶功能實(shí)現(xiàn)(1).用戶的登錄(2).用戶的注冊(3).用戶的查找(4).用戶資料的修改2.帖子功能實(shí)現(xiàn)(1).帖子的發(fā)表(2).帖子的回復(fù)(3).帖子的查找3.后臺(tái)管理(1).用戶的管理(2).帖子的管理(3).論壇信息的管理(4).圖片的管理2.3.4數(shù)據(jù)流程本系統(tǒng)是為了提供給廣大用戶一個(gè)網(wǎng)上交流的平臺(tái),所以論壇的流程是以用戶為中心進(jìn)行的.數(shù)據(jù)流圖是一種能全面地描述信息系統(tǒng)邏輯模型的主要工具,它可以用少數(shù)幾種符號(hào)綜合地反映出信息在系統(tǒng)中的流動(dòng)、處理和存儲(chǔ)情況。數(shù)據(jù)流圖具有以下兩個(gè)特性:(1)抽象性:表現(xiàn)在它完全舍去了具體的物質(zhì),只剩下數(shù)據(jù)的流動(dòng)、加工處理與存儲(chǔ)。(2)概括性:表現(xiàn)在它可以把信息中的各種不同業(yè)務(wù)處理過程聯(lián)系起來,形成一個(gè)整體。數(shù)據(jù)流圖由以下四種基本元素組成,既外部實(shí)體、數(shù)據(jù)流、處理(功能)、數(shù)據(jù)存儲(chǔ)等,數(shù)據(jù)流圖中所用的符號(hào)如下:外部實(shí)體處理數(shù)據(jù)流數(shù)據(jù)存儲(chǔ)LeafBBS論壇系統(tǒng)的數(shù)據(jù)流程圖如下用戶用戶查看帖子P2F1帖子資料P3回復(fù)帖子P1發(fā)表帖子P4搜索帖子P5搜索用戶F2用戶資料P6資料修改(1)(3)(2)(4)(5)(5)(6)(7)(8)(9)(10)(11)(12)(13)說明:⑴——訪問信息,⑵⑶⑽⑾——用戶信息,⑷——發(fā)表帖子信息,⑸更新帖子信息,⑹搜索信息⑺——獲取帖子信息,⑻回復(fù)信息,⑼搜索用戶,⑿更新用戶信息,⒀獲取用戶資料圖2.6數(shù)據(jù)流程圖2.4系統(tǒng)總體結(jié)構(gòu)分析結(jié)論通過對(duì)系統(tǒng)框架與數(shù)據(jù)庫的選擇,和總體的需求分析,完成了前期對(duì)系統(tǒng)模塊的劃分,數(shù)據(jù)的流程,以與一些可行性的分析.在此基礎(chǔ)上,可以系統(tǒng)的數(shù)據(jù)庫和功能模塊進(jìn)行概要設(shè)計(jì).第3章系統(tǒng)設(shè)計(jì)在前期的系統(tǒng)結(jié)構(gòu)分析的基礎(chǔ)上,對(duì)系統(tǒng)進(jìn)行概要設(shè)計(jì).3.1數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫與其應(yīng)用系統(tǒng),使之能夠有效地存儲(chǔ)數(shù)據(jù),滿足各種用戶的應(yīng)用需求(信息要求和處理要求).數(shù)據(jù)庫和設(shè)計(jì)概述(1)數(shù)據(jù)庫是信息系統(tǒng)的核心和基礎(chǔ),把信息系統(tǒng)中大量的數(shù)據(jù)按一定的模型組織起來,提供存儲(chǔ)、維護(hù)、檢索數(shù)據(jù)的功能,使信息系統(tǒng)可以方便、與時(shí)、準(zhǔn)確地從數(shù)據(jù)庫中獲得所需的信息。
(2)數(shù)據(jù)庫是信息系統(tǒng)的各個(gè)部分能否緊密地結(jié)合在一起以與如何結(jié)合的關(guān)鍵所在。
(3)數(shù)據(jù)庫設(shè)計(jì)是信息系統(tǒng)開發(fā)和建設(shè)的重要組成部分。3.1.1概念模型設(shè)計(jì)(E-R圖)數(shù)據(jù)模型是是數(shù)據(jù)特征的抽象,從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動(dòng)態(tài)行為和約束條件,為數(shù)據(jù)庫系統(tǒng)的信息表與操作提供一個(gè)抽象的框架。描述了數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作與數(shù)據(jù)約束。
E-R模型的基本概念ER圖概念化地構(gòu)建實(shí)體間關(guān)系的模型,這使得它們區(qū)別于數(shù)據(jù)庫模型圖。ER圖的理念是:項(xiàng)目所有參與者能理解ER圖。ER圖由不同實(shí)體類型、關(guān)系、特性和類型構(gòu)成。實(shí)體是諸如用戶的實(shí)際對(duì)象,有時(shí)更抽象,但必須有業(yè)務(wù)意義。特性用于描述實(shí)體,關(guān)系用于實(shí)體之間
(1)實(shí)體:現(xiàn)實(shí)世界中的事物;
(2)屬性:事物的特性;
(3)聯(lián)系:現(xiàn)實(shí)世界中事物間的關(guān)系。實(shí)體集的關(guān)系有一對(duì)一、一對(duì)多、多對(duì)多的聯(lián)系。本系統(tǒng)的ER圖用戶用戶M發(fā)表N帖子詳細(xì)資料11N管理管理員1N添加1修改論壇圖3.1系統(tǒng)E-R圖3.1.2數(shù)據(jù)庫表與關(guān)系建立根據(jù)以上這些步驟就可以創(chuàng)建一個(gè)數(shù)據(jù)庫,依次建立下列表結(jié)構(gòu).1.用戶基本資料表2.用戶詳細(xì)信息表3.論壇文章表4.論壇版區(qū)表5.論壇初始化信息表(1).用戶基本信息表和用戶詳細(xì)信息表是一對(duì)一的關(guān)系,一個(gè)用戶只對(duì)應(yīng)一個(gè)詳細(xì)的信息表(2).用戶基本信息表和文章表是一對(duì)多的關(guān)系,即一個(gè)用戶可以發(fā)表多篇文章和回復(fù).(3).論壇版區(qū)表和論壇文章表是一對(duì)多的關(guān)系,在一個(gè)論壇中可以含有多個(gè)文章和回復(fù).3.1.3詳細(xì)數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)(1).用戶基本資料表:用戶基本資料表中存放的是用戶登陸時(shí)所需要或者記錄用戶的基本信息,包含比如登陸名,密碼,最后登陸時(shí)間等.用戶基本信息表的建立主要是記錄用戶最常用的一些信息.表3.1leafbbs_userinfo字段名數(shù)據(jù)類型長度主鍵索引外鍵可空說明IDbigint20是否否代理主鍵UserNameVarchar20否是否用戶名NickNameVarchar60否否否昵稱PasswdVarchar40否否否密碼Emailvarchar255否否否電子郵件Questionvarchar255否否否提示問題Answervarchar255否否否提示答案RegTimedatetime否否否注冊時(shí)間LoginTimedatetime否否否最后登陸時(shí)間LoginIPvarchar20否否否最后登陸IPLoginTimesint11否否否登陸次數(shù)StayTimebigint20否否否停留時(shí)間SignDetailtext否否是用戶簽名HavePictinyint1否否是是否有頭像PicFileNamevarchar255否否是頭像地址TimeZonevarchar20否否是地區(qū)(2).用戶詳細(xì)信息表:用戶詳細(xì)信息表中存放的是用戶的身高,體重,聯(lián)系方式等詳細(xì)資料,建立此表的目的是把一些用戶不經(jīng)常用到的詳細(xì)信息,單獨(dú)存放到一張表中,可以節(jié)約系統(tǒng)的資源.表3.2leafbbs_userdetai字段數(shù)據(jù)類長度主鍵索引外鍵可空說明IDbigint20是是否代理主鍵Heightvarchar20否否是身高Weightvarchar20否否是體重FavourPeoplevarchar255否否是最喜歡的人DreamJobvarchar255否否是向往工作FavourMusicvarchar255否否是喜歡的音樂FavourPlacevarchar255否否是喜歡的地方FavourMovievarchar255否否是喜歡的電影HomePagevarchar255否否是主頁OicqNovarchar255否否是QQ號(hào)碼IcqNovarchar255否否是ICQ號(hào)碼MSNvarchar255否否是MSN號(hào)碼Sextinyint1否否是性別Brieftext否否是簡介(3).論壇文章表:論壇文章表存放的是用戶所發(fā)表的文章信息,也包括回復(fù)信息.而在數(shù)據(jù)庫的設(shè)計(jì)中主要問題是鑒別帖子信息和回復(fù)信息.表3.3leafbbs_forum字段名數(shù)據(jù)類型長度主鍵索引外鍵可空說明IDbigint20是否否代理主鍵ParentIDbigint20否否否父帖IDMainIDbigint20否否否主帖IDBoardIDbigint20否否否版區(qū)IDBoardNamevarchar60否否否版區(qū)名字ReNumint11否否否回復(fù)數(shù)量ClickNumint11否否否點(diǎn)擊次數(shù)UserIDbigint20否否否發(fā)表者IDUserNamevarchar20否否否發(fā)表者姓名NickNamevarchar60否否否發(fā)表者昵稱Titlevarchar150否否否文章標(biāo)題Detailtext否否否文章內(nèi)容Signtext否否否文章說明ArtSizeint11否否否文章字節(jié)數(shù)postTimebigint20否否否發(fā)表時(shí)間LastTimebigint20否否否最后回復(fù)時(shí)間IPAddressvarchar20否否否發(fā)表者IPIsNewtinyint1否否否是否是新IsHiddentinyint1否否否是否隱藏IsToptinyint1否否否是否置頂IsLocktinyint1否否否是否被鎖定(4).論壇版區(qū)表:論壇版區(qū)表是存放的是論壇中版塊信息.而論壇也劃分為父論壇和子論壇,區(qū)分他們也靠表中的某個(gè)字段來實(shí)現(xiàn)的.具體實(shí)際的設(shè)計(jì)如下.表3.4leafbbs_board字段名數(shù)據(jù)類型長度主鍵索引外鍵可空說明IDbigint20是否否代理主鍵ParentIDbigint20否否否父版區(qū)IDChildIDsvarchar255否否否子版區(qū)IDBoardNamevarchar255否否否版區(qū)名字Explainstext否否否版區(qū)描述BoardPicvarchar200否否否圖片地址Ordersint11否否否顯示順序IsHiddentinyint1否否否是否隱藏PostNumint11否否否文章數(shù)量NeedPasswdtinyint1否否否是否加密Passwdvarchar100否否是密碼(5).論壇初始化信息表:論壇初始化信息表是存放初始化信息和管理員的帳號(hào)密碼等信息,初始化信息是在論壇在加載過程中讀取的或者以后經(jīng)常用的一些信息.表3.5leafbbs_config表字段名數(shù)據(jù)類型長度主鍵索引外鍵可空說明IDvarchar50是否否初始化標(biāo)題ConfContexttext否否否初始化信息3.2系統(tǒng)概要設(shè)計(jì)根據(jù)需求分析的結(jié)果,對(duì)系統(tǒng)進(jìn)行詳細(xì)的概要設(shè)計(jì)3.2.1功能模塊設(shè)計(jì)繪制出的用例圖,將本系統(tǒng)分為三個(gè)大的模塊,他們分別是會(huì)員資料模塊,帖子資料模塊和后臺(tái)管理模塊!本系統(tǒng)的功能層次圖如圖3.2.1所示LLeafbb系統(tǒng)會(huì)員模塊帖子模塊后臺(tái)管理會(huì)員登錄會(huì)員注冊資料修改帖子發(fā)表回復(fù)帖子帖子查找論壇管理帖子管理圖片管理會(huì)員管理會(huì)員查找圖3.2系統(tǒng)功能層次圖如圖3.2.1,leafbbs系統(tǒng)實(shí)現(xiàn)了如下的功能.(1).會(huì)員模塊:此模塊用來實(shí)現(xiàn)會(huì)員的登陸注冊和會(huì)員資料的修改和查找.1.會(huì)員登陸模塊:會(huì)員可以通過此模塊對(duì)論壇進(jìn)行登陸,登陸后便可以使用所有的會(huì)員功能,比如發(fā)帖回復(fù)等等.2.會(huì)員注冊模塊:沒有會(huì)員帳號(hào)的用戶,可以通過此模塊添加會(huì)員信息,添加成功后便可登陸論壇,使用會(huì)員功能.3.資料修改模塊:已注冊的會(huì)員在登陸后,可以通過此模塊,對(duì)會(huì)員的基本資料,聯(lián)系方式,密碼,頭像等資料進(jìn)行修改.4.會(huì)員查找模塊:已注冊的會(huì)員在登陸后,可以通過此模塊,對(duì)會(huì)員進(jìn)行查找,并可以查看對(duì)方的資料,聯(lián)系方式等等,從而方便會(huì)員之間的聯(lián)系.(2).帖子模塊:1.帖子發(fā)表模塊:已注冊的會(huì)員在登陸后,可以在相應(yīng)的論壇中,發(fā)表或轉(zhuǎn)載自己的大作,發(fā)表成功后,其他會(huì)員便可以在相應(yīng)的論壇中看到這篇帖子,并可以對(duì)其進(jìn)行回復(fù)等操作.2.帖子回復(fù)模塊:會(huì)員在發(fā)表完帖子后,用戶便可查看相關(guān)文章,并可以在文章中對(duì)已發(fā)表的帖子進(jìn)行回復(fù),3.帖子查找模塊會(huì)員可以通過此模塊,根據(jù)帖子的標(biāo)題和作者,對(duì)相關(guān)的帖子進(jìn)行查找.(3).后臺(tái)管理:1.帖子查找模塊:此模塊和帖子模塊中的帖子查找類似,只是管理員的搜索條件比普通用戶更加的廣泛,使搜索變的便捷.2.帖子管理模塊:帖子管理模塊是管理員對(duì)帖子管理的平臺(tái),如果管理員查看到帖子有不適宜發(fā)表的內(nèi)容時(shí),可以對(duì)帖子選擇刪除或者鎖定等操作,如果看到優(yōu)秀的帖子,還可以將帖子進(jìn)行置頂,加精,帖子管理模塊帖子管理模塊帖子修改帖子刪除帖子鎖定帖子置頂帖子加精圖3.3帖子管理模塊功能層次圖3.會(huì)員管理模塊:管理員可以通過此模塊,對(duì)會(huì)員進(jìn)行管理,對(duì)一些不法的用戶可以修改或者刪除資料,4.論壇管理模塊.管理員對(duì)論壇的添加,創(chuàng)建,刪除等功能都是在此模塊里進(jìn)行處理.5.圖片管理模塊管理員可以管理用戶上傳的頭像,和在文章里發(fā)表的圖片,從而加強(qiáng)對(duì)圖片的控制3.2.2系統(tǒng)界面設(shè)計(jì)對(duì)于系統(tǒng)來說,用戶界面設(shè)計(jì)將非常重要,因?yàn)橐粋€(gè)交互良好的界面能夠加深瀏覽者的印象.設(shè)計(jì)的實(shí)現(xiàn)可以分為兩個(gè)部分。第一部分為站點(diǎn)的規(guī)劃與草圖的繪制,這一部分可以在紙上完成。第二部分為網(wǎng)頁的制作,這一過程是在計(jì)算機(jī)上完成的.設(shè)計(jì)首頁的第一步是設(shè)計(jì)版面布局。我們可以將網(wǎng)頁看作傳統(tǒng)的報(bào)刊雜志來編輯,這里面有文字、圖像乃至動(dòng)畫,我們要做的工作就是以最適合的方式將圖片和文字排放在頁面的不同位置。除了要有一臺(tái)配置不錯(cuò)的計(jì)算機(jī)外,軟件也是必需的。不能簡單地說一個(gè)軟件的好壞,只要是設(shè)計(jì)者使用起來覺得方便而且能得心應(yīng)手的,就可以稱為好軟件。當(dāng)然,它應(yīng)該能滿足設(shè)計(jì)者的要求。常用的軟件是Macromedia的Dreamweaver以與Adobe的Photoshop。設(shè)計(jì)是有原則的,無論使用何種手法對(duì)畫面中的元素進(jìn)行組合,都一定要遵循五個(gè)大的原則:統(tǒng)一、連貫、分割、對(duì)比與和諧。統(tǒng)一,是指設(shè)計(jì)作品的整體性,一致性。設(shè)計(jì)作品的整體效果是至關(guān)重要的,在設(shè)計(jì)中切勿將各組成部分孤立分散,那樣會(huì)使畫面呈現(xiàn)出一種枝蔓紛雜的凌亂效果。連貫,是指要注意頁面的相互關(guān)系。設(shè)計(jì)中應(yīng)利用各組成部分在內(nèi)容上的內(nèi)在聯(lián)系和表現(xiàn)形式上的相互呼應(yīng),并注意整個(gè)頁面設(shè)計(jì)風(fēng)格的一致性,實(shí)現(xiàn)視覺上和心理上的連貫,使整個(gè)頁面設(shè)計(jì)的各個(gè)部分極為融洽,猶如一氣呵成。分割,是指將頁面分成若干小塊,小塊之間有視覺上的不同,這樣可以使觀者一目了然。在信息量很多時(shí)為使觀者能夠看清楚,就要注意到將畫面進(jìn)行有效的分割。分割不僅是表現(xiàn)形式的需要。換個(gè)角度來講,分割也可以被視為對(duì)于頁面內(nèi)容的一種分類歸納。對(duì)比就是通過矛盾和沖突,使設(shè)計(jì)更加富有生氣。對(duì)比手法很多,例如:多與少、曲與直、強(qiáng)與弱、長與短、粗與細(xì)、疏與密、虛與實(shí)、主與次、黑與白、動(dòng)與靜、美與丑、聚與散等等。在使用對(duì)比的時(shí)候應(yīng)慎重,對(duì)比過強(qiáng)容易破壞美感,影響統(tǒng)一。和諧是指整個(gè)頁面符合美的法則,渾然一體。如果一件設(shè)計(jì)作品僅僅是色彩、形狀、線條等的隨意混合,那么作品將不但沒有“生命感”,而且也根本無法實(shí)現(xiàn)視覺設(shè)計(jì)的傳達(dá)功能。和諧不僅要看結(jié)構(gòu)形式,而且要看作品所形成的視覺效果能否與人的視覺感受形成一種溝通,產(chǎn)生心靈的共鳴。這是設(shè)計(jì)能否成功的關(guān)鍵。最后簡單設(shè)計(jì)系統(tǒng)的簡單登陸界面和主界面圖3.4用戶登陸界面圖3.5用戶登陸后的主界面3.2.3系統(tǒng)的組件設(shè)計(jì)在整個(gè)系統(tǒng)中,為了解決諸如中文顯示亂碼此類的問題,本系統(tǒng)需要設(shè)計(jì)一些組件,來解決相關(guān)的問題.(1).過濾器組件:Java的內(nèi)核和class文件是基于unicode的,這使Java程序具有良好的跨平臺(tái)性,但也帶來了一些中文亂碼問題的麻煩。原因主要有兩方面,Java和JSP文件本身編譯時(shí)產(chǎn)生的亂碼問題和Java程序于其他媒介交互產(chǎn)生的亂碼問題。Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字節(jié)流的,如果Java和JSP編譯成class文件過程中,使用的編碼方式與源文件的編碼不一致,就會(huì)出現(xiàn)亂碼為了解決此類問題,需要設(shè)計(jì)一個(gè)組件來解決此類問題,每次請求和響應(yīng)到達(dá)客戶和服務(wù)器端時(shí),都先經(jīng)過此過濾器對(duì)字符進(jìn)行過濾.發(fā)送請求發(fā)送請求用戶過濾器(對(duì)字符進(jìn)行過濾)服務(wù)器返回響應(yīng)圖3.6字符過濾器原理圖(2).權(quán)限管理組件:在論壇中的的用戶一定會(huì)遇到關(guān)于權(quán)限的問題,比如沒有登陸的用戶只可以查看帖子,而即使登陸的用戶,也只可以對(duì)自己應(yīng)有的權(quán)限進(jìn)行操作,不可以操作管理員的功能.解決此類問題,本系統(tǒng)是通過判斷特定的session來判斷用戶的權(quán)限,當(dāng)用戶登陸成功后,組件會(huì)發(fā)送相應(yīng)的用戶session,之后每次用戶對(duì)論壇進(jìn)行操作,都要先通過session,來判斷用戶的權(quán)限.對(duì)論壇操作對(duì)論壇操作用戶是否通過返回窗口服務(wù)器判斷權(quán)限NY圖3.7權(quán)限判斷流程(3).JSP標(biāo)簽組件由于本文是基于MVC模式架構(gòu),所以在JSP網(wǎng)頁中不應(yīng)存放過多的邏輯判斷,當(dāng)本系統(tǒng)JSP網(wǎng)頁中必須存有JAVA邏輯代碼時(shí),本系統(tǒng)設(shè)計(jì)了一些JSP標(biāo)簽來替代這些邏輯代碼第4章系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)程序設(shè)計(jì)又稱編碼,是系統(tǒng)生命周期中繼詳細(xì)設(shè)計(jì)之后的階段,這個(gè)階段的任務(wù)是使用選定的程序設(shè)計(jì)語言,把經(jīng)過概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)所得到的以程序設(shè)計(jì)說明書體現(xiàn)的信息處理過程描述后,轉(zhuǎn)換成能在計(jì)算機(jī)系統(tǒng)上運(yùn)行的程序源代碼。4.1系統(tǒng)框架實(shí)現(xiàn)在系統(tǒng)的整體設(shè)計(jì)中,我們采取了四層結(jié)構(gòu).這樣結(jié)構(gòu)的優(yōu)點(diǎn)是靈活,移植和可維護(hù)性比較高.每個(gè)層在處理程序上都應(yīng)該有一項(xiàng)明確的責(zé)任,而不應(yīng)該在功能上與其它層混合,并且每個(gè)層要與其它層分開的圖4.1S.S.H框架的結(jié)合使用4.1.1底層數(shù)據(jù)庫的建立在前期的數(shù)據(jù)庫選用中,本系統(tǒng)選取了靈活高速的MySQL數(shù)據(jù)庫,而在數(shù)據(jù)庫的設(shè)計(jì)中,本文已經(jīng)確立了表結(jié)構(gòu).根據(jù)這些就可以創(chuàng)建一個(gè)數(shù)據(jù)庫,在數(shù)據(jù)庫創(chuàng)建并連接好后,就可以創(chuàng)建表、修改表和刪除表,創(chuàng)建、修改、和刪除主鍵、外鍵等等。選中“l(fā)eafbbs”數(shù)據(jù)庫,usedatabase并使用Createtable<表名>Sql語句,依次創(chuàng)建以下表結(jié)構(gòu)。由于考慮到本系統(tǒng)是應(yīng)用在單機(jī)系統(tǒng)上,另外根據(jù)管理的規(guī)模,我們只建立一個(gè)數(shù)據(jù)庫,在此數(shù)據(jù)庫基礎(chǔ)上建立leafbbs_userinfo用戶基本資料表leafbbs_userdetai用戶詳細(xì)信息表leafbbs_forum論壇文章表leafbbs_board論壇版區(qū)表leafbbs_config論壇初始化信息表4.1.2持久化層的建立(hibernate)典型的Web應(yīng)用的另一個(gè)末端是持久層。Hibernate為java提供了OR持久化機(jī)制和查詢服務(wù),它還給已經(jīng)熟悉SQL和JDBCAPI的Java開發(fā)者一個(gè)學(xué)習(xí)橋梁,他們學(xué)習(xí)起來很方便。Hibernate的持久對(duì)象是基于POJO和Javacollections。此外。
系統(tǒng)建立Hibernate的持久層。首先把BO持久化。Hibernate是通過POJO工作的,因此數(shù)據(jù)對(duì)象需要給所有的fileds加上getter,setter方法。Hibernate通過XML文件來映射(OR)對(duì)象,以下xml文件分別映射了相應(yīng)對(duì)象。
1.userinfo.hbm.xml
2.userdetai.hbm.xml3.forum.hbm.xml4.board.hbm.xml5.config.hbm.xml圖4.2userinfo.hbm.xml映射文件本系統(tǒng)可以在com.leafbbs.bean目錄下找到這些xml文件。Hibernate配置文件的作用用來告訴程序應(yīng)該與哪個(gè)數(shù)據(jù)庫通信,該使用哪個(gè)連接池或使用了DataSource,應(yīng)該加載哪些持久對(duì)象。而Session接口是用來完成Selecting,Saving,Delete和Updating這些操作。4.1.3業(yè)務(wù)邏輯層的建立本系統(tǒng)的業(yè)務(wù)邏輯是交由struts中的Action進(jìn)行判斷的,比如判斷登陸的業(yè)務(wù)邏輯時(shí),會(huì)建立一個(gè)LoginAction類來進(jìn)行邏輯判斷,而一些關(guān)聯(lián)的映射,LeafBBS系統(tǒng)是寫在struts框架的struts-config.xml中.圖4.3struts-config.xml映射文件從編碼的視角來看,這層是最容易被忽視的一層。卻往往在持久層周圍看到這些業(yè)務(wù)處理的代碼,這其實(shí)是不正確的,因?yàn)樗鼘?dǎo)致了程序代碼的緊密偶合,這樣一來,隨著時(shí)間推移這些代碼很難維護(hù)。幸好,針對(duì)這一問題本系統(tǒng)可以使用Spring框架來解決.spring框架都著手于“依賴注射”(dependencyinjection)(還有我們知道的‘控制反轉(zhuǎn)'InversionofControl=IoC)這樣的簡單概念。Spring還提供了SetterInjection(type2),ConstructorInjection(type3)等方式供選擇。Spring把程序中所涉與到包含業(yè)務(wù)邏輯和Dao的Objects——例如transactionmanagementhandler(事物管理控制)、ObjectFactoris(對(duì)象工廠)、serviceobjects(服務(wù)組件)——都通過XML來配置聯(lián)系起來。這種方式讓你的對(duì)象從創(chuàng)建中釋放了出來,降低了偶合度.圖4.4spring配置文件applicationContext.xml映射文件每個(gè)對(duì)象都可以在Spring配置信息applicationContext.xml中用<bean>標(biāo)簽引用。在這里,mySessionFactory引用了HibernateSessionFactory,而myTransactionManager引用了HibernateTransactionManage。代碼中myTransactionMangerBean有個(gè)sessionFactory屬性。HibernateTransactionManager有個(gè)sessionFactorysetter和getter方法,這是用來在Spring啟動(dòng)的時(shí)候?qū)崿F(xiàn)"依賴注入"(dependencyinjection)的。在sessionFactory屬性里引用mySessionFactory。這兩個(gè)對(duì)象在Spring容器初始化后就被組裝了起來了。這樣的搭配讓你從單例(singletonobjects)和工廠(factories)中解放了出來,降低了代碼的維護(hù)代價(jià)。mySessionFactory.的兩個(gè)屬性,分別是用來注入mappingResources和hibernatePropertes的。圖4.5Spring基于配置文件,將各個(gè)Bean搭建在一起。4.1.4表示層的建立在表示層上,主要是基于JSP和AJAX異步傳輸技術(shù)來進(jìn)行建立,最后通過Struts框架的struts-config.xml文件進(jìn)行關(guān)聯(lián)映射.具體的頁面設(shè)計(jì),會(huì)在后面的章節(jié)中進(jìn)行介紹.4.2系統(tǒng)功能模塊實(shí)現(xiàn)4.2.1會(huì)員模塊實(shí)現(xiàn)在會(huì)員模塊的設(shè)計(jì)中,首先完成的是業(yè)務(wù)邏輯層的相應(yīng)action類的編寫,之后在通過具體的需要,編寫相應(yīng)的數(shù)據(jù)庫訪問DAO.在一切結(jié)束之后,從DAO和業(yè)務(wù)邏輯類中抽象出接口,通過spring的IOC對(duì)接口進(jìn)行對(duì)象注入.在模塊的設(shè)計(jì)過程中,遇到的難點(diǎn)是在注冊時(shí)使用的AJAX異步傳輸,來判斷用戶名是否被占用.AJAX技術(shù)是一個(gè)基于Javascript腳本語言的新技術(shù),目前對(duì)這種技術(shù)的使用還不是很多,但通過反復(fù)的調(diào)試,逐漸的掌握了AJAX的要點(diǎn).圖4.6AJAX技術(shù)在本系統(tǒng)中的應(yīng)用當(dāng)用戶在登錄的時(shí)候,會(huì)有一個(gè)驗(yàn)證碼的文本框,而驗(yàn)證碼的實(shí)現(xiàn)是通過訪問servlet技術(shù)實(shí)現(xiàn)的,在打開登錄界面時(shí),servlet會(huì)自動(dòng)向首頁發(fā)送一組圖片,并且發(fā)送一個(gè)相應(yīng)存放數(shù)字的session,當(dāng)用戶提交信息時(shí),系統(tǒng)就會(huì)在session中提取數(shù)字并和用戶的數(shù)字進(jìn)行比較,錯(cuò)誤則會(huì)彈出錯(cuò)誤信息.圖4.7驗(yàn)證碼的應(yīng)用當(dāng)用戶在登錄成功后,或者選擇游客模式進(jìn)入論壇時(shí),會(huì)跳轉(zhuǎn)到論壇的主界面,主界面的實(shí)現(xiàn)主要是通過HTML的<iframe>標(biāo)記,將頁面劃分成兩個(gè)部分,左面的部分是用戶的操作框,右面是論壇的信息部分.已登錄的用戶可以通過左面的操作框來對(duì)自己的一些資料進(jìn)行修改,也可以選擇退出等其他操作.圖4.8用戶主界面用戶信息模塊功能流程圖開始進(jìn)入登錄頁面開始進(jìn)入登錄頁面游客登錄?輸入賬號(hào)密碼帳號(hào)正確進(jìn)入主界面結(jié)束NYYN圖4.9用戶模塊功能流程圖4.2.2帖子模塊實(shí)現(xiàn)帖子模塊的完成流程和會(huì)員模塊類似,都是先根據(jù)JSP網(wǎng)頁,建立相映的Action邏輯判斷類,之后建立和帖子有關(guān)的數(shù)據(jù)庫訪問DAO,最后抽象出接口進(jìn)行依賴注入,編寫帖子模塊首先遇到的難點(diǎn)是分頁功能的實(shí)現(xiàn),當(dāng)打開某個(gè)論壇時(shí),如果論壇中的帖子數(shù)量不能在一頁中顯示出來,那么怎樣進(jìn)行處理.在一些參考學(xué)習(xí)后,本系統(tǒng)最后編寫了一個(gè)分頁bean,來解決這個(gè)難題,分頁bean的位置在com.leafbbs.service.web包下,其中的屬性有 intpage當(dāng)前頁數(shù) intperPageNum本頁顯示的帖子數(shù)目 intallPage總頁數(shù) intcpage本頁首個(gè)帖子序號(hào) intspage本頁最后帖子序號(hào)StringfileName頁名這樣一來,系統(tǒng)就可以把頁數(shù)的信息,封裝到bean里面,并且進(jìn)行相關(guān)的顯示圖4.11分頁功能的實(shí)現(xiàn)當(dāng)用戶進(jìn)入某分論壇時(shí),就會(huì)顯示出分頁信息,并且把相關(guān)的帖子封裝到response響應(yīng)中,發(fā)送給用戶.當(dāng)我們每次查看某個(gè)帖子,或回復(fù)某個(gè)帖子時(shí),帖子表里的字段,ReNum(回復(fù)數(shù)量),ClickNum(點(diǎn)擊數(shù)量)都會(huì)進(jìn)行自增.進(jìn)入帖子后,系統(tǒng)會(huì)根據(jù)文章發(fā)表時(shí)間的順序,講帖子和相關(guān)的回復(fù)顯示出來圖4.12查看帖子開始開始顯示論壇信息進(jìn)入相關(guān)論壇顯示文章列表瀏覽相應(yīng)帖子回復(fù)是否繼續(xù)瀏覽結(jié)束YN圖4.13帖子模塊功能流程圖4.2.3后臺(tái)管理模塊實(shí)現(xiàn)后臺(tái)管理模塊是管理員對(duì)論壇進(jìn)行管理的平臺(tái),在此模塊實(shí)現(xiàn)的過程中,最重要的一點(diǎn)就是權(quán)限的控制,只有管理員的身份才可以對(duì)此模塊進(jìn)行操作,權(quán)限的控制已經(jīng)交給了控制組件進(jìn)行完成.管理員可以在此模塊中主要完成對(duì)帖子和會(huì)員的管理,管理員可以通過用戶的ID和用戶名對(duì)其進(jìn)行搜索,從而實(shí)現(xiàn)管理圖4.14管理員對(duì)用戶進(jìn)行管理此外管理員還可以進(jìn)行添加,修改論壇信息圖4.15管理員對(duì)用戶進(jìn)行管理登陸系統(tǒng)登陸系統(tǒng)后臺(tái)管理前端顯示用戶數(shù)據(jù)庫用戶管理查詢數(shù)據(jù)庫信息修改新建用戶用戶刪除帖子查看登陸界面信息輸入提交確認(rèn)身份NY圖4.10后臺(tái)模塊功能圖4.3系統(tǒng)設(shè)計(jì)總結(jié)經(jīng)過將近一個(gè)月的設(shè)計(jì),完成了用戶模塊,帖子模塊和后臺(tái)管理模塊,基本完成了需求分析中設(shè)計(jì)的功能,接下來將進(jìn)入到測試環(huán)節(jié).第5章系統(tǒng)的調(diào)試與測試5.1測試概述5.1.1軟件測試的目的軟件測試的目的,第一是確認(rèn)軟件的質(zhì)量,其一方面是確認(rèn)軟件做了你所期望的事情,另一方面是確認(rèn)軟件以正確的方式來做了這個(gè)事件。第二是提供信息,比如提供給開發(fā)人員或程序經(jīng)理的反饋信息,為風(fēng)險(xiǎn)評(píng)估所準(zhǔn)備的信息。第三軟件測試不僅是在測試軟件產(chǎn)品的本身,而且還包括軟件開發(fā)的過程。如果一個(gè)軟件產(chǎn)品開發(fā)完成之后發(fā)現(xiàn)了很多問題,這說明此軟件開發(fā)過程很可能是有缺陷的。因此軟件測試的第三個(gè)目的是保證整個(gè)軟件開發(fā)過程是高質(zhì)量的。軟件質(zhì)量是由幾個(gè)方面來衡量的:一、在正確的時(shí)間用正確的的方法把一個(gè)工作做正確。二、符合一些應(yīng)用標(biāo)準(zhǔn)的要求,比如不同國家的用戶不同的操作習(xí)慣和要求,項(xiàng)目工程中的可維護(hù)性、可測試性等要求。三、質(zhì)量本身就是軟件達(dá)到了最開始所設(shè)定的要求,而代碼的優(yōu)美或精巧的技巧并不代表軟件的高質(zhì)量。四、質(zhì)量也代表著它符合客戶的需要。作為軟件測試這個(gè)行業(yè),最重要的一件事就是從客戶的需求出發(fā),從客戶的角度去看產(chǎn)品,客戶會(huì)怎么去使用這個(gè)產(chǎn)品,使用過程中會(huì)遇到什么樣的問題。5.1.2軟件測試的任務(wù)1、尋找Bug;
2、避免軟件開發(fā)過程中的缺陷;
3、衡量軟件的品質(zhì);
4、關(guān)注用戶的需求??偟哪繕?biāo)是:確保軟件的質(zhì)量5.1.3測試環(huán)境Apache提供的Web服務(wù)器Tomcat6.0使得用戶可以在Windows2000以上操作系統(tǒng)下發(fā)布自己設(shè)計(jì)的動(dòng)態(tài)網(wǎng)頁。因此對(duì)論壇的調(diào)試工作主要是利用Tomcat6.0的強(qiáng)大功能在本機(jī)下完成的。為了在本機(jī)下瀏覽Web頁面,首先在創(chuàng)建該系統(tǒng)的站點(diǎn)上(該系統(tǒng)使用的是Web的默認(rèn)站點(diǎn))將IP地址設(shè)定為,它的缺省域名值為localhost。然后向IE瀏覽器輸入本地動(dòng)態(tài)網(wǎng)頁的URL,Web服務(wù)器在收到瀏覽器傳送的URL之后找到網(wǎng)頁文件,并在服務(wù)器端執(zhí)行該文件后將此文件以HTML文件的形式返回該瀏覽器。5.2單元測試5.2.1黑盒測試在單元測試中分別對(duì)用戶信息模塊,帖子模塊和后臺(tái)管理模塊進(jìn)行分別測試.首先對(duì)各個(gè)模塊進(jìn)行黑盒測試,在各種條件下運(yùn)行模塊是否能正常運(yùn)行,比如在登錄時(shí),輸入空白用戶名等等.圖5.1測試輸入空白信息,5.2.2白盒測試此方法把測試對(duì)象看做一個(gè)透明的盒子,它允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)與有關(guān)信息,設(shè)計(jì)或選擇測試用例,對(duì)程序所有邏輯路徑進(jìn)行測試。通過在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致。因此白盒測試又稱為結(jié)構(gòu)測試或邏輯驅(qū)動(dòng)測試。軟件人員使用白盒測試方法,主要想對(duì)程序模塊進(jìn)行如下的檢查;對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少測試一次;對(duì)所有的邏輯判定,取“真”與取“假”的兩種情況都至少測試一次;在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體;測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等。表5.1登陸測試用例測試用例描述操作過程與數(shù)據(jù)預(yù)期結(jié)果用例類型按不同的輸入格式輸入個(gè)人信息,進(jìn)行注冊。進(jìn)入注冊界面,按提示的輸入格式輸入個(gè)人信息,進(jìn)行注冊。注冊成功,顯示注冊成功。居民信息保存到數(shù)據(jù)庫。功能點(diǎn)用戶名有重名的進(jìn)入注冊界面,用戶名輸入,其它按提示的輸入格式輸入個(gè)人信息,進(jìn)行注冊。注冊失敗,不能注冊。功能點(diǎn)郵箱按郵箱有效地址輸入,其它按規(guī)定輸入,進(jìn)行注冊。進(jìn)入注冊界面,輸入例如:其它按提示的輸入格式輸入個(gè)人信息,進(jìn)行注冊。注冊失敗,不能注冊。功能點(diǎn)輸入為空時(shí),進(jìn)行注冊。進(jìn)入注冊界面,輸入為空,進(jìn)行注冊。無法注冊界面校驗(yàn)表5.2發(fā)貼測試用例模塊測試用例描述操作過程與數(shù)據(jù)預(yù)期結(jié)果發(fā)貼按要求輸入帖子的相關(guān)信息進(jìn)入發(fā)貼界面,輸入帖子內(nèi)容,標(biāo)題,內(nèi)容,再提交。發(fā)貼成功,發(fā)貼成功信息轉(zhuǎn)到管理員。沒輸入標(biāo)題進(jìn)入發(fā)貼界面,沒輸入標(biāo)題,再提交發(fā)貼失敗。輸入為空進(jìn)入發(fā)貼界面,輸入為空,再提交。無法發(fā)貼。5.2.3模塊接口測試在黑盒測試完成的情況下,進(jìn)行模塊接口測試,模塊接口測試是單元測試的基礎(chǔ)。只有在數(shù)據(jù)能正確流入、流出模塊的前提下,其他測試才有意義。測試接口正確與否應(yīng)該考慮的因素:1輸入的實(shí)際參數(shù)與形式參數(shù)的個(gè)數(shù)是否相同;
2輸入的實(shí)際參數(shù)與形式參數(shù)的屬性是否匹配;
3輸入的實(shí)際參數(shù)與形式參數(shù)的量綱是否一致;
4調(diào)用其他模塊時(shí)所給實(shí)際參數(shù)的個(gè)數(shù)是否與被調(diào)模塊的形參個(gè)數(shù)相同;
5調(diào)用其他模塊時(shí)所給實(shí)際參數(shù)的屬性是否與被調(diào)模塊的形參屬性匹配;
6調(diào)用其他模塊時(shí)所給實(shí)際參數(shù)的量綱是否與被調(diào)模塊的形參量綱一致;
7調(diào)用預(yù)定義函數(shù)時(shí)所用參數(shù)的個(gè)數(shù)、屬性和次序是否正確;
8是否存在與當(dāng)前入口點(diǎn)無關(guān)的參數(shù)引用;
9是否修改了只讀型參數(shù);
10對(duì)全程變量的定義各模塊是否一致;
11是否把某些約束作為參數(shù)傳遞。模塊接口測試,本系統(tǒng)使用的是MyEclipse的測試工具進(jìn)行測試,在IDE與TomCat連接好后,向TomCat服務(wù)器中部署LeafBBS系統(tǒng),部署成功后,即可按照步驟,對(duì)系統(tǒng)進(jìn)行模塊接口測試.圖5.2部署LeafBBS系統(tǒng),圖5.3測試用戶登錄模塊5.3集成測試每個(gè)模塊都能單獨(dú)工作,但這些模塊集成在一起之后卻不能正常工作。主要原因是,模塊相互調(diào)用時(shí)接口會(huì)引入許多新問題。例如,數(shù)據(jù)經(jīng)過接口可能丟失;一個(gè)模塊對(duì)另一模塊可能造成不應(yīng)有的影響;幾個(gè)子功能組合起來不能實(shí)現(xiàn)主功能;誤差不斷積累達(dá)到不可接受的程度;全局?jǐn)?shù)據(jù)結(jié)構(gòu)出現(xiàn)錯(cuò)誤,等等。綜合測試是組裝軟件的系統(tǒng)測試技術(shù),按設(shè)計(jì)要求把通過單元測試的各個(gè)模塊組裝在一起之后,進(jìn)行集成測試以便發(fā)現(xiàn)與接口有關(guān)的各種錯(cuò)誤。5.3.1自頂向下集成自頂向下集成是構(gòu)造程序結(jié)構(gòu)的一種增量式方式,它從主控模塊開始,按照軟件的控制層次結(jié)構(gòu),以深度優(yōu)先或廣度優(yōu)先的策略,逐步把各個(gè)模塊集成在一起。首先將模塊用戶模塊和帖子模塊集成在一起,再將后臺(tái)管理模塊集成起來。之后再將用戶模塊和后臺(tái)管理模塊集成在一起,再加上帖子模塊.5.3.2確認(rèn)測試標(biāo)準(zhǔn)功能和性能指標(biāo)滿足軟件要求和標(biāo)準(zhǔn)的情況下,測試結(jié)束第6章結(jié)論經(jīng)過幾個(gè)月的努力,已經(jīng)基本完成了LeafBBS系統(tǒng)的開發(fā)和設(shè)計(jì).完成了用戶模塊,帖子模塊和后臺(tái)管理模塊的開發(fā),并基本實(shí)現(xiàn)了前期所制定的功能.LeafBBS系統(tǒng)在不斷的設(shè)計(jì)更改過程中,逐漸的成熟。在編寫的最后階段中,參考了一些設(shè)計(jì)模式,在邏輯代碼和數(shù)據(jù)庫連接DAO中抽象出了若干接口,并對(duì)其進(jìn)行了對(duì)象的依賴注入,大大的減少了模塊之間的耦合,使系統(tǒng)具有很高的靈活性和可維護(hù)性,這是LeafBBS系統(tǒng)最大的優(yōu)點(diǎn).另外在系統(tǒng)的另一個(gè)優(yōu)點(diǎn)就是HTML同步傳輸和AJAX異步傳輸技術(shù)的結(jié)合使用,既減輕了服務(wù)器的負(fù)擔(dān),也加快了用戶的訪問效率.當(dāng)然LeafBBS系統(tǒng)也存在很多不足的地方,比如用戶的權(quán)限判斷過于簡單,安全性低,希望在今后的學(xué)習(xí)中,逐步的進(jìn)行改進(jìn).通過這次的設(shè)計(jì),加深了對(duì)S.S.H框架,以與面向?qū)ο笏枷氲囊恍├斫?對(duì)于軟件工程方面的設(shè)計(jì)思想也有了更深一步的理解,只有在不斷的實(shí)踐于學(xué)習(xí)中,才會(huì)得到最豐厚的回報(bào).參考文獻(xiàn)[1]馮燕奎,趙德奎.JSP實(shí)用案例教程[M]清華大學(xué)出版社,2004,5:70-100[2]王家華軟件工程[M]東北大學(xué)出版社2001年3月303頁[3]王宜貴軟件工程[M]北京:機(jī)械工業(yè)出版社,2002:20-79[4]孫衛(wèi)琴精通struts[M]電子工業(yè)出版社2004年8月50-70[5]孫衛(wèi)琴精通hibernate[M]電子工業(yè)出版社2005年4月100-120[6]張洪斌java2高級(jí)程序設(shè)計(jì)[M]中科多媒體出版社2001年11月85-90[7]JimArlowUML2.0andtheUnifiedProcess[M]機(jī)械工業(yè)出版社2006年6月30-40[8]林信良spring2.0技術(shù)手冊[M]電子工業(yè)出版社2006年6月50-100[9]熊節(jié)、林儀明、張凱峰、陳玉泉等主編[《CSDN社區(qū)電子雜志——Java雜志》創(chuàng)刊號(hào)][10]《程序員》雜志2007年第4期[11]耿祥義編著.JSP基礎(chǔ)編程[M].清華大學(xué)出版社,2004.55-162[12]徐建波,周新蓮.Web設(shè)計(jì)原理于編程技術(shù)[M].中南大學(xué)出版社,2005.185-193[13]孫鑫編著.JavaWeb開發(fā)詳解[M].電子工業(yè)出版社,2006.189-274[14]林上杰,林康司編著.JSP2.0技術(shù)手冊[M].電子工業(yè)出版社,2004.3-6[15]薩師煊,王珊.數(shù)據(jù)庫系統(tǒng)概論(第三版)[M].北京:高等教育出版社,1998.[16]蔡劍,景楠.JavaWeb應(yīng)用開發(fā):J2EE和Tomcat[M].北京:清華大學(xué)出版社,2004.致謝在設(shè)計(jì)的幾個(gè)月中,感謝我的導(dǎo)師****老師對(duì)我的幫助和悉心的指導(dǎo),老師在我的設(shè)計(jì)和論文中給了我很多幫助,在此表示深深的感謝 另外在設(shè)計(jì)的過程中同組的同學(xué)和我實(shí)習(xí)的單位賽斯特IT培訓(xùn)中心也給了我莫大的支持,在此也表示衷心的感謝附錄A英文文獻(xiàn)AJAXInAction附錄B翻譯1.1.1比較用戶體驗(yàn)花幾分鐘使用一下你選中的應(yīng)用(瀏覽器除外),記下它用到了哪些用戶交互,然后馬上回來。為了簡短起見,我舉一個(gè)電子表格的例子,但是,這里所涉與的要點(diǎn)是通用的,足以針對(duì)文本編輯器上的各種情形。好,我們開始。先在電子表格中隨便輸入幾個(gè)等式,注意到,可以以幾種方式進(jìn)行交互:編輯數(shù)據(jù),用鍵盤和鼠標(biāo)瀏覽數(shù)據(jù),還可以使用鼠標(biāo)拖拽來重新組織數(shù)據(jù)。我做這些操作的時(shí)候,程序給了我反饋。移動(dòng)鼠標(biāo)的時(shí)候,光標(biāo)改變了形狀;當(dāng)鼠標(biāo)停在上面的時(shí)候,按鈕變亮了;選中的文字也改變了顏色。窗口或者對(duì)話框被選中的時(shí)候,也和平常顯得不一樣了,等等(圖1-1)。這些就是所謂“富”的交互。當(dāng)然了,仍然有一些有待改進(jìn)的地方,但這是一個(gè)好的開始。OK,電子表格就是一個(gè)富客戶端程序了嗎?當(dāng)然不是。在電子表格或者類似的桌面應(yīng)用中,業(yè)務(wù)邏輯和數(shù)據(jù)模型是在一個(gè)封閉的環(huán)境中運(yùn)行的。在這個(gè)環(huán)境中,它們彼此清晰地了解對(duì)方,并且可以互相訪問,而環(huán)境之外的東西,對(duì)于它們來說是未知的(圖1-2)。那么客戶端又是什么呢?它是與另一個(gè)獨(dú)立的進(jìn)程相互通信的程序,后者通常運(yùn)行在服務(wù)器上。一般來說,服務(wù)器總是要比客戶端大一些,能力強(qiáng)一些,配置更好一些,因?yàn)樵诜?wù)器上通常要存儲(chǔ)浩如煙海的信息。客戶端程序使得最終用戶可以查看和修改這些信息,當(dāng)多個(gè)客戶端連接在同一個(gè)服務(wù)器上的時(shí)候,可以在它們之間共享這些信息。圖1-3展示了一個(gè)簡單的客戶/服務(wù)器架構(gòu)在現(xiàn)我的電子表格應(yīng)用只需要管理它自己保存在內(nèi)存或本地文件系統(tǒng)中的少量數(shù)據(jù)。如果架構(gòu)設(shè)計(jì)良好的話,數(shù)據(jù)和它的表現(xiàn)形式的耦合可以非常松散,但是我不能通過網(wǎng)絡(luò)來分割或者通過網(wǎng)絡(luò)來共享它們。從這個(gè)意義上來說,電子表格應(yīng)用不是一個(gè)客戶端。與之相對(duì)應(yīng)的Web瀏覽器就是一個(gè)典型的客戶端,它與Web服務(wù)器通信,請求需要的頁面。瀏覽器有豐富的功能,用來管理用戶的瀏覽行為,常見功能有回退按鈕、歷史列表和分頁瀏覽多個(gè)文檔等等。但是當(dāng)我們把特定網(wǎng)站的Web頁面看作是一個(gè)應(yīng)用時(shí),這些通用的瀏覽功能實(shí)際上和應(yīng)用關(guān)系不大,充其量也就如電子表格和Windows的開始按鈕或者窗口列表之間的關(guān)系。我們來考察一下現(xiàn)代的Web應(yīng)用。為了簡單起見,我們選擇了“地球人都知道”的在線書店A(圖1-4)。在瀏覽器中打開Amazon網(wǎng)站,因?yàn)樵诖酥拔以L問過,它會(huì)給我顯示一個(gè)友好的問候、一些推薦書目,還有我的購買歷史信息。點(diǎn)擊推薦書目中的任何一條,就會(huì)轉(zhuǎn)到另外一個(gè)頁面(此時(shí),頁面要刷新一下,在這幾秒鐘內(nèi)我什么也看不到)。新頁面是該書的相關(guān)信息:書評(píng)、二手書報(bào)價(jià)、同一作者的其他著作,以與以前我瀏覽過的其他書籍簡而言之,呈現(xiàn)在我面前的是非常豐富的、關(guān)聯(lián)度很高的信息。但是對(duì)我而言,交互的方式就是點(diǎn)擊那些超鏈接,然后填寫一些表格。假設(shè)我在鍵盤前面不小心睡著了,第二天才醒來,如果不刷新頁面,我就沒法知道《哈里·波特》系列的新書已經(jīng)出版了,也不能將我的列表從一個(gè)頁面帶到另一個(gè)頁面,我要是想同時(shí)看到更多一些東西也不行,因?yàn)槲覠o法改變頁面上局部內(nèi)容區(qū)域的大小。我似乎是在批評(píng)Amazon的界面,其實(shí)并非如此,我只是拿它來做個(gè)例子。事實(shí)上,在傳統(tǒng)Web開發(fā)方式的桎梏下,他們已經(jīng)做得非常棒了。但是比起電子表格來說,它所用的交互模型毫無疑問是太有限了。為何現(xiàn)代的Web應(yīng)用仍然有這么多的局限呢?造成目前的狀況有一些合理的技術(shù)原因,我們現(xiàn)在就來考察一下。1.1.2
網(wǎng)絡(luò)延遲因特網(wǎng)的宏偉藍(lán)圖是將這個(gè)世界上所有的計(jì)算機(jī)都連接起來,形成一個(gè)無比巨大的計(jì)算資源。如果能把本地調(diào)用和遠(yuǎn)程調(diào)用等同起來,那么無論是分析蛋白質(zhì)的成分還是破解外太空的信號(hào),使用者都無需考慮機(jī)器的物理位置,剩下來的只有愉快地計(jì)算。但是非常不幸,本地調(diào)用和遠(yuǎn)程調(diào)用是完全不同的東西。在現(xiàn)有的技術(shù)水平之下,網(wǎng)絡(luò)通信仍然是一件代價(jià)高昂的事情(也就是說,通常很慢,而且并不可靠)。在沒有網(wǎng)絡(luò)調(diào)用的情況中,不同的方法和函數(shù)以與它們所操作的數(shù)據(jù)都位于相同的本地內(nèi)存中(圖1-6),向方法內(nèi)傳遞數(shù)據(jù)并且獲得方法的返回結(jié)果是非常直接的。而在有遠(yuǎn)程調(diào)用的情況下,位于網(wǎng)絡(luò)兩端的通信雙方為了發(fā)送和接收數(shù)據(jù)在底層需要進(jìn)行大量計(jì)算(圖1-7)。比起數(shù)據(jù)在線路上的往返,這些計(jì)算需要消耗更多的時(shí)間。傳輸一段二進(jìn)制的數(shù)據(jù),中間要經(jīng)過很多環(huán)節(jié)的編碼和解碼、錯(cuò)誤校驗(yàn)、失敗重發(fā)、數(shù)據(jù)包拆分和重組,數(shù)據(jù)最終轉(zhuǎn)化為0和1表示的二進(jìn)制信號(hào),通過線路(或者無線連接)到達(dá)另外一方。在本地,調(diào)用函數(shù)的調(diào)用請求被編碼為一個(gè)對(duì)象,然后將這個(gè)對(duì)象序列化為一系列字節(jié),最后使用應(yīng)用層協(xié)議(通常是HTTP)通過物理傳輸介質(zhì)(例如銅纜、光纖或者無線電波)將其發(fā)送出去。在遠(yuǎn)程機(jī)器上,對(duì)應(yīng)用層協(xié)議解碼,將獲得的數(shù)據(jù)字節(jié)反序列化,創(chuàng)建一個(gè)請求對(duì)象的副本。然后對(duì)數(shù)據(jù)模型應(yīng)用這個(gè)對(duì)象并生成一個(gè)響應(yīng)對(duì)象。為了將響應(yīng)對(duì)象傳遞給本地的調(diào)用函數(shù),所有的序列化、反序列化以與傳輸層的操作都要反向再來一次。最后,響應(yīng)對(duì)象被傳遞給本地的調(diào)用函數(shù)。這個(gè)交互過程很復(fù)雜吧,幸好,它是可以自動(dòng)完成的?,F(xiàn)代的編程環(huán)境如Java和Microsoft的.NET框架都內(nèi)置了這個(gè)能力。盡管如此,執(zhí)行遠(yuǎn)程調(diào)用時(shí),上述所有這些操作仍然會(huì)在內(nèi)部執(zhí)行。如果我們到處使用遠(yuǎn)程調(diào)用,性能勢必會(huì)大受影響。這也就是說,遠(yuǎn)程調(diào)用是不可能和本地調(diào)用一樣有效率的。更糟糕的是,網(wǎng)絡(luò)的不穩(wěn)定更讓這種效率損失捉摸不定,難以預(yù)計(jì)。相比之下,運(yùn)行在本地內(nèi)存之中的本地調(diào)用,在這一點(diǎn)上無疑要有優(yōu)勢得多。等等,說了半天的遠(yuǎn)程調(diào)用,這和軟件的可用性有關(guān)系嗎?答案是,大有關(guān)系。一個(gè)成功的計(jì)算機(jī)用戶界面要能以最起碼的水平模擬我們在真實(shí)世界中的體驗(yàn)。交互的基本規(guī)則之遠(yuǎn)程調(diào)用橫穿整個(gè)網(wǎng)絡(luò),需要執(zhí)行大量的額外操作,它們往往會(huì)把系統(tǒng)拖慢,使用戶察覺到延遲。在桌面應(yīng)用中,只有當(dāng)可用性設(shè)計(jì)做得非常糟糕的時(shí)候,才因?yàn)榫W(wǎng)絡(luò)延遲不可預(yù)測,這類界面問題往往都神出鬼沒,對(duì)應(yīng)用響應(yīng)的測試也難以開展。換句話說,網(wǎng)絡(luò)延遲是導(dǎo)致實(shí)際應(yīng)用的交互性糟糕的一個(gè)普遍原因。1.1.3
異步交互用戶界面的開發(fā)者對(duì)于網(wǎng)絡(luò)延遲只能做最壞的假設(shè)。簡單地說,就是要盡可能讓用戶界面與網(wǎng)絡(luò)活動(dòng)無關(guān)。天才的程序員們早已發(fā)明了一種確實(shí)有效而且久經(jīng)考驗(yàn)的方案,來專門解決這一問題。先賣個(gè)關(guān)子,讓我們到現(xiàn)實(shí)世界中走一趟。在我每天早上必做的事中,很重要的一項(xiàng)是叫醒我的孩子去上學(xué)。我可以站在床邊把他們折騰醒,催著他們起床穿衣,但這是一種很耗費(fèi)時(shí)間的方法,總要耗費(fèi)我很多寶貴的早間時(shí)光我要叫醒孩子,看看窗外,往往會(huì)忽略了喂貓。孩子們起來之后會(huì)問我要早餐。就像服務(wù)器端的進(jìn)程一樣,孩子們起床總是慢吞吞的。如果我遵循同步交互模式,就要等他們老半天。不過,只要他們嘟囔一句“我醒了”,我就可以先去干其他的事,需要時(shí)再回來看看他們。按照計(jì)算機(jī)的術(shù)語,我需要做的就是為每個(gè)孩子在一個(gè)單獨(dú)的線程中建立一個(gè)異步進(jìn)程。開始之后,孩子們會(huì)在他們的線程里自己起床,我這個(gè)父線程沒有必要同
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 筒線蟲病病原變異分析-洞察分析
- 私募信貸市場研究-洞察分析
- 2025年華東師大版九年級(jí)生物上冊月考試卷含答案
- 2025年冀教新版七年級(jí)地理下冊月考試卷
- 2025年人教A版七年級(jí)科學(xué)上冊階段測試試卷含答案
- 2025年人教版七年級(jí)科學(xué)下冊階段測試試卷
- 2025年岳麓版二年級(jí)英語上冊階段測試試卷含答案
- 2025年教科新版七年級(jí)科學(xué)上冊月考試卷含答案
- 二零二五版「鴻誠擔(dān)保招聘」人才招聘行業(yè)標(biāo)桿與最佳實(shí)踐合同3篇
- 2025年滬科版七年級(jí)地理下冊階段測試試卷含答案
- 非誠不找小品臺(tái)詞
- 2024年3月江蘇省考公務(wù)員面試題(B類)及參考答案
- 患者信息保密法律法規(guī)解讀
- 老年人護(hù)理風(fēng)險(xiǎn)防控PPT
- 充電樁采購安裝投標(biāo)方案(技術(shù)方案)
- 醫(yī)院科室考勤表
- 鍍膜員工述職報(bào)告
- 春節(jié)期間化工企業(yè)安全生產(chǎn)注意安全生產(chǎn)
- 保險(xiǎn)行業(yè)加強(qiáng)清廉文化建設(shè)
- Hive數(shù)據(jù)倉庫技術(shù)與應(yīng)用
- 數(shù)字的秘密生活:最有趣的50個(gè)數(shù)學(xué)故事
評(píng)論
0/150
提交評(píng)論