畢業(yè)論文-BBS論壇設(shè)計論文(完整版)_第1頁
畢業(yè)論文-BBS論壇設(shè)計論文(完整版)_第2頁
畢業(yè)論文-BBS論壇設(shè)計論文(完整版)_第3頁
畢業(yè)論文-BBS論壇設(shè)計論文(完整版)_第4頁
畢業(yè)論文-BBS論壇設(shè)計論文(完整版)_第5頁
已閱讀5頁,還剩64頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

摘要當(dāng)今社會正處在網(wǎng)絡(luò)時代,信息化大潮席卷全球,網(wǎng)絡(luò)正以前所未有的速度在我國普與開來。網(wǎng)站以其獨特的優(yōu)勢在信息化的過程中占有重要的一席。為了方便信息的交流,在結(jié)合JAVA和S.S.H技術(shù)之下開發(fā)了這個快捷、界面友好的交流系統(tǒng),實現(xiàn)了一個功能相對齊全的論壇系統(tǒng),網(wǎng)友可以自由地提出問題以與幫助他人解決問題,或者交流經(jīng)驗。論壇在Struts+Hibernate+Spring擴展Struts框架的基礎(chǔ)上,用當(dāng)今主流的網(wǎng)站開發(fā)技術(shù)jsp語言進行開發(fā)。論壇將采用B/S體系結(jié)構(gòu),人們通過瀏覽器就可以訪問教學(xué)網(wǎng)站的主頁,保證的服務(wù)器的安全。數(shù)據(jù)庫采用免費,小巧,易用的mysql數(shù)據(jù)庫。該論壇功能較齊全,在這里可以自由地發(fā)表自己的觀點和對論壇的主題發(fā)表意見,我們還可以對網(wǎng)友的問題與時地解決,獲取對自己有用的知識。該論壇還有一些特殊的功能,如在線人員顯示、強大的搜索功能。本網(wǎng)站嚴格按照軟件項目開發(fā)的流程進行開發(fā),對于網(wǎng)站開發(fā)的可行性分析、需求分析、概要設(shè)計、詳細設(shè)計以與對網(wǎng)站的測試與維護都有詳細的論述和實現(xiàn)過程。本套論壇的優(yōu)點在于它具有強大的可擴展性和可維護性,非常適合網(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)點…………..6 2.1.4系統(tǒng)層次設(shè)計………...….9 2.1.5技術(shù)可行性綜述……..………………...10 2.2時間可行性(項目開發(fā)計劃)…………….……10 2.3系統(tǒng)需求分析…………...…….10 2.3.1系統(tǒng)開發(fā)運行環(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è)計……………………….16 3.1數(shù)據(jù)庫設(shè)計……….…………...16 3.1.1概念模型設(shè)計(E-R圖)………………..………………..16 3.1.2數(shù)據(jù)庫表與關(guān)系建立…………………..………………18 3.1.3詳細數(shù)據(jù)庫結(jié)構(gòu)設(shè)計…………………..………………18 3.2系統(tǒng)概要設(shè)計…………….…….……………..23 3.2.1功能模塊設(shè)計……………..……………23 3.2.2系統(tǒng)界面設(shè)計……………..……………26 3.2.3系統(tǒng)的組件設(shè)計…………..……………28第四章系統(tǒng)的詳細設(shè)計與實現(xiàn)……….31 4.1系統(tǒng)框架實現(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)功能模塊實現(xiàn)…………..…………..…….36 4.2.1會員模塊實現(xiàn)…………...36 4.2.2帖子模塊實現(xiàn)…………...39 4.2.3后臺管理模塊實現(xiàn)……………………...424.3系統(tǒng)設(shè)計總結(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確認測試標(biāo)準(zhǔn)…………...51第六章結(jié)論………………….…………52參考文獻……………………….………53致謝………………….54附錄A英文文獻……………………...55附錄B翻譯…………...68第1章系統(tǒng)概述總體概述進入二十一世紀,計算機技術(shù)迅速向著網(wǎng)絡(luò)化、集成化方向發(fā)展。傳統(tǒng)的單機版應(yīng)用軟件正在逐漸退出舞臺,取而代之的是支持網(wǎng)絡(luò)、支持多種數(shù)據(jù)信息(多媒體)的新一代網(wǎng)絡(luò)版應(yīng)用軟件,而目前網(wǎng)絡(luò)版軟件中似乎存在著兩種不同的趨勢,一種是稱為客戶端——服務(wù)器的C/S結(jié)構(gòu),這類軟件具有結(jié)構(gòu)嚴謹,運行效率高,服務(wù)器端壓力小,安全性好等優(yōu)點,被廣泛運用于局域網(wǎng)中。而另一種,也是本畢業(yè)設(shè)計所采用的,是稱為瀏覽器——服務(wù)器的B/S結(jié)構(gòu),它的特點是在客戶端直接采用了功能強大的瀏覽器軟件作為界面,其優(yōu)點在于軟件開發(fā)效率高,客戶端不受操作平臺的限制、也不受地域的限制,網(wǎng)絡(luò)傳輸量少,即適用于局域網(wǎng),更適用于Internet,而且投資小、見效快,用戶可以不必進行服務(wù)器方面的投資,而是去租用,甚至是免費使用ISP的服務(wù)器資源,因而受到越來越多中小型單位的青睞。隨著Internet技術(shù)的不斷發(fā)展,以與用戶群爆炸性地增長,網(wǎng)絡(luò)不再僅僅是信息的被動獲取來源,更成為人們探討間題、交換觀點的場所,其中,網(wǎng)上論壇扮演了極其重要的角色,隨著時間的推移,論壇站點中積存了豐富的信息資源,不但有各類技術(shù)資料和新聞文檔,還包含著用戶的判斷和評論,論壇站點己成為Web信息庫的重要組成部分,自網(wǎng)上論壇誕生20多年以來,隨著Web技術(shù)的發(fā)展,己經(jīng)由原來簡單的電子公告板系統(tǒng)發(fā)展為功能豐富的網(wǎng)上論壇和虛擬社區(qū)模式。各種論壇隨著網(wǎng)絡(luò)迅速發(fā)展,幾乎充實著生活工作的每一個方面,無論是商界、政界,還是娛樂界,都有各種論壇?;ヂ?lián)網(wǎng)正在融入我們的生活,網(wǎng)絡(luò)提供給我們的不只是一個獲取信息的來源,而且還是一個可以相互交流的空間,網(wǎng)上論壇正是一種供人們進行交流的網(wǎng)絡(luò)空間,影響和改變著我們的生活。開發(fā)背景1978年在美國芝加哥開發(fā)出一套基于8080芯片的CBBS/Chicago(ComputerizedBulletinBoardSystem/Chicago),此乃最早的一套BBS系統(tǒng)。之后隨著蘋果機的問世,開發(fā)出基于蘋果機的BulletinBoardSystem和大眾信息系統(tǒng)(PeoplesMessageSystem)2種BBS系統(tǒng)。1981年IBM個人計算機誕生時,并沒有自己的BBS系統(tǒng)。直到1982年,BussLane才用Basic語言為IBM個人計算機編寫了一個原型程序。其后經(jīng)過幾番增修,終于在1983年通過CapitalPCUserGroup(CPCUG)的CommunicationSpecialInterestGroup會員的努力,改寫出了個人計算機系統(tǒng)的BBS。經(jīng)ThomasMach整理后,終于完成了個人計算機的第1版BBS系統(tǒng)——RBBS-PC。這套BBS系統(tǒng)的最大特色是其源程序全部公開,有利于日后的修改和維護,因此后來在開發(fā)其他的BBS系統(tǒng)時都以此為框架,所以RBBS-PC贏得了BBS鼻祖的美稱。大約是從1991年開始,國內(nèi)開始了第一個BBS站。經(jīng)過長時間的發(fā)展,直到1995年,隨著計算機與其外設(shè)的大幅降價,BBS才逐漸被人們所認識。1996年更是以驚人的速度發(fā)展起來。國內(nèi)的BBS站,按其性質(zhì)劃分,可以分為2種:一種是商業(yè)BBS站,如新華龍訊網(wǎng);另一種是業(yè)余BBS站,如天堂資訊站。由于使用商業(yè)BBS站要交納一筆費用,而商業(yè)站所能提供的服務(wù)與業(yè)余站相比,并沒有什么優(yōu)勢,所以其用戶數(shù)量不多。多數(shù)業(yè)余BBS站的站長,基于個人關(guān)系,每天都互相交換電子郵件,漸漸地形成了一個全國性的電子郵件網(wǎng)絡(luò)ChinaFidoNet(中國惠多網(wǎng))。于是,各地的用戶都可以通過本地的業(yè)余BBS站與遠在異地的網(wǎng)友互通信息。這種跨地域電子郵件交流正是商業(yè)站無法與業(yè)余站相抗衡的根本因素。由于業(yè)余BBS站擁有這種優(yōu)勢,所以使用者都更樂意加入。這里“業(yè)余”2字,并不是代表這種類型的BBS站的服務(wù)和技術(shù)水平是業(yè)余的,而是指這類BBS站的性質(zhì)。一般BBS站都是由志愿者開發(fā)的。他們付出的不僅是金錢,更多的是精力。其目的是為了推動中國計算機網(wǎng)絡(luò)的健康發(fā)展,提高廣大計算機用戶的應(yīng)用水平國內(nèi)的BBS站,大多數(shù)還是大型綜合性BBS站。隨著計算機的普與,特別是寬帶的普與,BBS的活動將會進一步高漲。但是,隨之而來對專注于領(lǐng)域方面的BBS將會慢慢增加需求。盡管BBS站臺的數(shù)量在不斷增長,但BBS的發(fā)展過程,也出現(xiàn)了一些問題。由于國內(nèi)使用的BBS架站軟件,都是從國外引進的,因此沒有必要的中文說明。雖然一些熱心的站長翻譯了一些資料,但是僅靠這些是遠遠不夠的。另外,有些站臺的設(shè)立是相互抄襲,所以在結(jié)構(gòu)上難免有雷同之處。而國內(nèi)自己開發(fā)的BBS基本上都是處于最原始的JSPMODEL1模式,這種模式是控制層與表示層合二為一,雖然開發(fā)簡單,但是擁有很差的擴展性,可維護性,這樣極大的限制了BBS站點的擴展,于是在這種情況下,本文提出了目前比較流行的,基于MVC模式的S.S.H框架(Sturts+Spring+hibernate)的BBS論壇,本套論壇的優(yōu)點在于它具有強大的可擴展性和可維護性,非常適合網(wǎng)民創(chuàng)建自己的中小型BBS論壇!開發(fā)目的綜上所述,本文提出了目前比較流行的,基于MVC模式的S.S.H框架(Sturts+Spring+hibernate)的BBS論壇,本套論壇的優(yōu)點在于它具有強大的可擴展性和可維護性,非常適合網(wǎng)民創(chuàng)建自己的中小型BBS論壇!第2章系統(tǒng)分析2.1技術(shù)可行性分析2.1.1開發(fā)語言綜述本系統(tǒng)是基于面向?qū)ο笏枷氲腏AVA語言中J2EE平臺進行編寫,J2EE平臺具有以下優(yōu)點1.簡化結(jié)構(gòu):J2EE平臺支持簡化的、基于組件開發(fā)模型,由于J2EE基于Java編程語言和J2SE平臺,它提供了編寫一次,隨處運行的可移植性,遵循J2EE標(biāo)準(zhǔn)的所有服務(wù)器都支持該模型。

EJB組件使編寫應(yīng)用程序更為簡單。盡管EJB體系結(jié)構(gòu)復(fù)雜,但應(yīng)用程序開發(fā)人員一般都必再編寫訪問系統(tǒng)服務(wù)的代碼,EJB容器會實現(xiàn)系統(tǒng)級的服務(wù),例如,事務(wù)、安全性等。

另外,J2EE還支持異構(gòu)環(huán)境?;贘2EE的應(yīng)用程序不依賴任何特定操作系統(tǒng)、中間件或硬件,因此,設(shè)計合理的基于J2EE的程序只需開發(fā)一次就可以部署到各種平臺,這在典型的異構(gòu)企業(yè)算環(huán)境中是十分關(guān)鍵的。J2EE標(biāo)準(zhǔn)還允許客戶訂購與J2EE兼容的第三方的現(xiàn)成組件,把其部署到異構(gòu)環(huán)境中,節(jié)省了由自己制訂整個方案所需的費用。2.提高開發(fā)效率:由于組件技術(shù)的使用,可以按照開發(fā)人員的技能對應(yīng)用程序開發(fā)進行分工,并行開發(fā),提供整體開發(fā)效率。例如:圖形設(shè)計師創(chuàng)建JSP模板,商業(yè)邏輯由該領(lǐng)域的專家完成,JSP頁面和EJB由Java工程師完成,應(yīng)用程序的裝配和部署由團隊中其他的成員完成,其中許多工作可以同時進行,有助于加速應(yīng)用程序的開發(fā)。3.可移植性強:除了Java語言固有的可移植性外,EJB體系結(jié)構(gòu)在Bean和支持該Bean的容器之間提供了一套標(biāo)準(zhǔn)化的應(yīng)用程序編程接口,這使開發(fā)人員能夠?qū)ean從一種操作環(huán)境移植到另一種操作環(huán)境,而無需重新編寫其源代碼。4.重用性好:由于在EJB模型中,各個軟件組件都是嚴格分離的,因此,可以從現(xiàn)有的軟件組件裝配出服務(wù)器端應(yīng)用程序,這與從現(xiàn)有的JavaBean可以裝配出客戶端應(yīng)用程序一樣,使軟件能夠重用。5.易于維護:基于組件的設(shè)計簡化了應(yīng)用程序的維護。由于組件可以被獨立地更新和替代,通過更新應(yīng)用程序中特定的組件,新的功能可以被很容易地增加。6.可伸縮性:企業(yè)必須要選擇一種服務(wù)器端平臺,以便滿足那些在它們系統(tǒng)上進行商業(yè)動作大批新客戶?;贘2EE平臺的應(yīng)用程序可被部署到各種操作系統(tǒng)上,例如,可被部署到高端UNIX或其他的大型機系統(tǒng)上。J2EE領(lǐng)域的供應(yīng)商提供了更為廣泛的負載平衡策略,能消除系統(tǒng)中的瓶頸,允許多臺服務(wù)器集成部署,實現(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)點,關(guān)鍵的是它是免費的,可以在Internet上免費下載到,并可免費使用,對于一般中小型,甚至大型應(yīng)用都能夠勝任MySQL具有以下優(yōu)點:1、首先是速度。對于MySQL來說,速度是他們追求的主要目標(biāo)之一,基于這個原因,MySQL在以前的文檔中也曾經(jīng)說過并不準(zhǔn)備支持事務(wù)和觸發(fā)器。但是在最新的文檔中,我們看到MySQL4.0.2-alpha已經(jīng)開始支持事務(wù),而且在MySQL的TODO中,對觸發(fā)器、約束這樣的注定會降低速度的功能也列入了日程。但是,仍然有理由相信,MySQL將有可能一直保持速度的優(yōu)勢。2、MySQL更流行,流行對于一個商業(yè)軟件來說,也是一個很重要的指標(biāo),流行意味著更多的用戶,意味著經(jīng)受了更多的考驗,意味著更好的商業(yè)支持、意味著更多、更完善的文檔資料。3、MySQL更適宜在Windows環(huán)境下運行。MySQL作為一個本地的Windows應(yīng)用程序運行(在NT/Win2000/WinXP下,是一個服務(wù)),在Windows運行中,MySQL更加的穩(wěn)定。4、MySQL使用了線程,在不同線程之間的環(huán)境轉(zhuǎn)換和訪問公用的存儲區(qū)域顯然要比在不同的進程之間要快得多。5、MySQL可以適應(yīng)24/7運行。在絕大多數(shù)情況下,你不需要為MySQL運行任何清除程序。6、MySQL在權(quán)限系統(tǒng)上更為完善。MySQL允許你定義一整套的不同的數(shù)據(jù)級、表級和列級的權(quán)限。對于列級的權(quán)限。MySQL還允許你指定基于主機的權(quán)限。7、由于MySQL4.0.2-alpha開始支持事務(wù)的概念,因此事務(wù)對于MySQL不再僅僅成為劣勢。相反,因為MySQL保留無事務(wù)的表類型。這就為用戶提供了更多的選擇。8、MySQL的MERGE表提供了一個獨特管理多個表的方法。9、MySQL的myisampack可以對只讀表進行壓縮,此后仍然可以直接訪問該表中的行。2.1.3S.S.H框架的優(yōu)點S.S.H框架是J2EE應(yīng)用中struts+spring+hibernate三大免費開源框架的結(jié)合使用,它可以看成工具,也是中間件。他是用來提高我們的開發(fā)效率,提高我們軟件產(chǎn)品的可維護性、可擴展性乃至敏捷性的。他們里面有很多優(yōu)秀的設(shè)計理念與模式應(yīng)用。比如,struts屬于MVC框架,關(guān)鍵是要了解MVC的概念與大致原理;而hibernate屬于ORM系統(tǒng),屬于持久層的解決方案,同樣需要對ORM的概念與原理有一個總體的了解。而spring屬于應(yīng)用程序框架,其核心是IOC容器以與AOP,Spring中還集成了很多適用東西,比如對JDBC的封裝、自己的MVC、對動態(tài)語言的簡潔訪問等,它由以下3個框架構(gòu)成:1.Struts框架Struts是Apache組織的一個開放源碼項目。Struts是一個比較好的MVC框架,提供了對開發(fā)MVC系統(tǒng)的底層支持,它采用的主要技術(shù)是Servlet,JSP和Customtaglibrary。其基本構(gòu)成如圖2.1所示。 圖2.1Struts框架工作流程2.Spring框架Spring的核心是個輕量級(Lightweight)的容器(Container),它是實現(xiàn)IoC(InversionofControl)容器、非侵入性(Nointrusive)的框架,并提供AOP(Aspect-orientedprogramming)概念的實現(xiàn)方式,提供對持久層(Persistence)、事務(wù)(Transaction)的支持,提供MVCWeb框架的實現(xiàn),并對一些常用的企業(yè)服務(wù)API(ApplicationInterface)提供一致的模型封裝,是一個全方位的應(yīng)用程序框架(Applicationframework),除此之外,對于現(xiàn)存的各種框架(Struts、JSF、Hibernate等),Spring也提供了與它們相整合的方案。Spring框架由以下7個部分組成圖2.2Spring框架構(gòu)成3.Hibernate框架Hibernate是一個開放源碼的ORM持久層框架。作為優(yōu)秀的持久層框架實現(xiàn),Hibernate框架提供了強大、高性能的對象到關(guān)系型數(shù)據(jù)庫的持久化服務(wù),開發(fā)人員可以使用面向?qū)ο蟮脑O(shè)計進行持久層開發(fā)。簡單的說,Hibernate只是一個將持久化類與數(shù)據(jù)庫表相映射的工具,每個持久化類實例均對應(yīng)于數(shù)據(jù)庫表中的一個數(shù)據(jù)行而已。用戶只需直接使用面向?qū)ο蟮姆椒ú僮鞔顺志没悓嵗纯赏瓿蓪?shù)據(jù)庫表數(shù)據(jù)的插入、刪除、修改、讀取等操作。圖2.3Hibernate框架2.1.4系統(tǒng)層次設(shè)計系統(tǒng)很據(jù)S.S.H框架的特點,決定使用四層結(jié)構(gòu),這樣做的優(yōu)點是(1)可以分層開發(fā),訪問數(shù)據(jù)庫與業(yè)務(wù)邏輯實現(xiàn)能夠分開。(2)提高代碼的復(fù)用表示層表示層業(yè)務(wù)邏輯層持久化層數(shù)據(jù)庫層圖2.4LeafBBS系統(tǒng)的分層結(jié)構(gòu)2.1.5技術(shù)可行性綜述綜上所述,這些成熟的框架和優(yōu)秀的設(shè)計思想,為系統(tǒng)建設(shè)提供了技術(shù)條件。計算機等基礎(chǔ)設(shè)施的更新?lián)Q代也緊跟潮流的發(fā)展,這就為開發(fā)系統(tǒng)提供了堅實基礎(chǔ)。2.2時間可行性(項目開發(fā)計劃)本系統(tǒng)的難點在于三大框架的結(jié)合使用,但目前有很多優(yōu)秀的書籍可供參閱,且參加過類似項目的開發(fā),預(yù)計本系統(tǒng)在規(guī)定時間內(nèi),基本能夠完成.開發(fā)計劃如下: 2007.01.01-03.30調(diào)研2007.04.31-04.13資料查閱2007.04.16-04.20方案設(shè)計2007.04.02-05.18編寫程序2007.05.07-05.18撰寫論文2.3系統(tǒng)需求分析2.3.1系統(tǒng)開發(fā)運行環(huán)境鑒于系統(tǒng)的開發(fā)語言和數(shù)據(jù)庫,采用如下的開發(fā)環(huán)境開發(fā)環(huán)境:Windows2000NTTomCat6.0JDK1.5硬件實現(xiàn):PentiumⅣ2.4G1G內(nèi)存80G硬盤開發(fā)語言:Java數(shù)據(jù)庫:MySQL開發(fā)工具:MyEclipse5.1預(yù)期成果:一個可擴展的基于MVC模式的BBS論壇2.3.2業(yè)務(wù)描述對于訪問論壇的用戶,可分為注冊會員和為注冊的臨時用戶,這兩種用戶有著不同的權(quán)限,比如臨時用戶只能對帖子進行查看,而注冊會員除了查看帖子之外,還可以發(fā)帖,回復(fù),查找用戶,并且可以對自己的注冊資料進行修改等等,系統(tǒng)的用例圖如下:會員用戶會員用戶臨時用戶瀏覽帖子發(fā)表帖子回復(fù)帖子修改資料會員搜索管理員會員管理帖子管理論壇信息管理圖2.5系統(tǒng)用例圖2.3.3系統(tǒng)功能概述本系統(tǒng)是一套網(wǎng)上交流的BBS軟件,根據(jù)用戶的需要和實際的管理條件,應(yīng)由用戶功能實現(xiàn),帖子功能實現(xiàn)和后臺管理等幾個模塊所構(gòu)成,用戶可以對一些數(shù)據(jù)進行查找和修改,并且注冊的用戶可以對帖子進行特定的操作,而管理員可以對用戶和帖子進行相關(guān)的管理.鑒于本系統(tǒng)的性質(zhì),系統(tǒng)應(yīng)該實現(xiàn)以下功能.1.用戶功能實現(xiàn)(1).用戶的登錄(2).用戶的注冊(3).用戶的查找(4).用戶資料的修改2.帖子功能實現(xiàn)(1).帖子的發(fā)表(2).帖子的回復(fù)(3).帖子的查找3.后臺管理(1).用戶的管理(2).帖子的管理(3).論壇信息的管理(4).圖片的管理2.3.4數(shù)據(jù)流程本系統(tǒng)是為了提供給廣大用戶一個網(wǎng)上交流的平臺,所以論壇的流程是以用戶為中心進行的.數(shù)據(jù)流圖是一種能全面地描述信息系統(tǒng)邏輯模型的主要工具,它可以用少數(shù)幾種符號綜合地反映出信息在系統(tǒng)中的流動、處理和存儲情況。數(shù)據(jù)流圖具有以下兩個特性:(1)抽象性:表現(xiàn)在它完全舍去了具體的物質(zhì),只剩下數(shù)據(jù)的流動、加工處理與存儲。(2)概括性:表現(xiàn)在它可以把信息中的各種不同業(yè)務(wù)處理過程聯(lián)系起來,形成一個整體。數(shù)據(jù)流圖由以下四種基本元素組成,既外部實體、數(shù)據(jù)流、處理(功能)、數(shù)據(jù)存儲等,數(shù)據(jù)流圖中所用的符號如下:外部實體處理數(shù)據(jù)流數(shù)據(jù)存儲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é)論通過對系統(tǒng)框架與數(shù)據(jù)庫的選擇,和總體的需求分析,完成了前期對系統(tǒng)模塊的劃分,數(shù)據(jù)的流程,以與一些可行性的分析.在此基礎(chǔ)上,可以系統(tǒng)的數(shù)據(jù)庫和功能模塊進行概要設(shè)計.第3章系統(tǒng)設(shè)計在前期的系統(tǒng)結(jié)構(gòu)分析的基礎(chǔ)上,對系統(tǒng)進行概要設(shè)計.3.1數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計是指對于一個給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫與其應(yīng)用系統(tǒng),使之能夠有效地存儲數(shù)據(jù),滿足各種用戶的應(yīng)用需求(信息要求和處理要求).數(shù)據(jù)庫和設(shè)計概述(1)數(shù)據(jù)庫是信息系統(tǒng)的核心和基礎(chǔ),把信息系統(tǒng)中大量的數(shù)據(jù)按一定的模型組織起來,提供存儲、維護、檢索數(shù)據(jù)的功能,使信息系統(tǒng)可以方便、與時、準(zhǔn)確地從數(shù)據(jù)庫中獲得所需的信息。

(2)數(shù)據(jù)庫是信息系統(tǒng)的各個部分能否緊密地結(jié)合在一起以與如何結(jié)合的關(guān)鍵所在。

(3)數(shù)據(jù)庫設(shè)計是信息系統(tǒng)開發(fā)和建設(shè)的重要組成部分。3.1.1概念模型設(shè)計(E-R圖)數(shù)據(jù)模型是是數(shù)據(jù)特征的抽象,從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動態(tài)行為和約束條件,為數(shù)據(jù)庫系統(tǒng)的信息表與操作提供一個抽象的框架。描述了數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作與數(shù)據(jù)約束。

E-R模型的基本概念ER圖概念化地構(gòu)建實體間關(guān)系的模型,這使得它們區(qū)別于數(shù)據(jù)庫模型圖。ER圖的理念是:項目所有參與者能理解ER圖。ER圖由不同實體類型、關(guān)系、特性和類型構(gòu)成。實體是諸如用戶的實際對象,有時更抽象,但必須有業(yè)務(wù)意義。特性用于描述實體,關(guān)系用于實體之間

(1)實體:現(xiàn)實世界中的事物;

(2)屬性:事物的特性;

(3)聯(lián)系:現(xiàn)實世界中事物間的關(guān)系。實體集的關(guān)系有一對一、一對多、多對多的聯(lián)系。本系統(tǒng)的ER圖用戶用戶M發(fā)表N帖子詳細資料11N管理管理員1N添加1修改論壇圖3.1系統(tǒng)E-R圖3.1.2數(shù)據(jù)庫表與關(guān)系建立根據(jù)以上這些步驟就可以創(chuàng)建一個數(shù)據(jù)庫,依次建立下列表結(jié)構(gòu).1.用戶基本資料表2.用戶詳細信息表3.論壇文章表4.論壇版區(qū)表5.論壇初始化信息表(1).用戶基本信息表和用戶詳細信息表是一對一的關(guān)系,一個用戶只對應(yīng)一個詳細的信息表(2).用戶基本信息表和文章表是一對多的關(guān)系,即一個用戶可以發(fā)表多篇文章和回復(fù).(3).論壇版區(qū)表和論壇文章表是一對多的關(guān)系,在一個論壇中可以含有多個文章和回復(fù).3.1.3詳細數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(1).用戶基本資料表:用戶基本資料表中存放的是用戶登陸時所需要或者記錄用戶的基本信息,包含比如登陸名,密碼,最后登陸時間等.用戶基本信息表的建立主要是記錄用戶最常用的一些信息.表3.1leafbbs_userinfo字段名數(shù)據(jù)類型長度主鍵索引外鍵可空說明IDbigint20是否否代理主鍵UserNameVarchar20否是否用戶名NickNameVarchar60否否否昵稱PasswdVarchar40否否否密碼Emailvarchar255否否否電子郵件Questionvarchar255否否否提示問題Answervarchar255否否否提示答案RegTimedatetime否否否注冊時間LoginTimedatetime否否否最后登陸時間LoginIPvarchar20否否否最后登陸IPLoginTimesint11否否否登陸次數(shù)StayTimebigint20否否否停留時間SignDetailtext否否是用戶簽名HavePictinyint1否否是是否有頭像PicFileNamevarchar255否否是頭像地址TimeZonevarchar20否否是地區(qū)(2).用戶詳細信息表:用戶詳細信息表中存放的是用戶的身高,體重,聯(lián)系方式等詳細資料,建立此表的目的是把一些用戶不經(jīng)常用到的詳細信息,單獨存放到一張表中,可以節(jié)約系統(tǒng)的資源.表3.2leafbbs_userdetai字段數(shù)據(jù)類長度主鍵索引外鍵可空說明IDbigint20是是否代理主鍵Heightvarchar20否否是身高Weightvarchar20否否是體重FavourPeoplevarchar255否否是最喜歡的人DreamJobvarchar255否否是向往工作FavourMusicvarchar255否否是喜歡的音樂FavourPlacevarchar255否否是喜歡的地方FavourMovievarchar255否否是喜歡的電影HomePagevarchar255否否是主頁OicqNovarchar255否否是QQ號碼IcqNovarchar255否否是ICQ號碼MSNvarchar255否否是MSN號碼Sextinyint1否否是性別Brieftext否否是簡介(3).論壇文章表:論壇文章表存放的是用戶所發(fā)表的文章信息,也包括回復(fù)信息.而在數(shù)據(jù)庫的設(shè)計中主要問題是鑒別帖子信息和回復(fù)信息.表3.3leafbbs_forum字段名數(shù)據(jù)類型長度主鍵索引外鍵可空說明IDbigint20是否否代理主鍵ParentIDbigint20否否否父帖IDMainIDbigint20否否否主帖IDBoardIDbigint20否否否版區(qū)IDBoardNamevarchar60否否否版區(qū)名字ReNumint11否否否回復(fù)數(shù)量ClickNumint11否否否點擊次數(shù)UserIDbigint20否否否發(fā)表者IDUserNamevarchar20否否否發(fā)表者姓名NickNamevarchar60否否否發(fā)表者昵稱Titlevarchar150否否否文章標(biāo)題Detailtext否否否文章內(nèi)容Signtext否否否文章說明ArtSizeint11否否否文章字節(jié)數(shù)postTimebigint20否否否發(fā)表時間LastTimebigint20否否否最后回復(fù)時間IPAddressvarchar20否否否發(fā)表者IPIsNewtinyint1否否否是否是新IsHiddentinyint1否否否是否隱藏IsToptinyint1否否否是否置頂IsLocktinyint1否否否是否被鎖定(4).論壇版區(qū)表:論壇版區(qū)表是存放的是論壇中版塊信息.而論壇也劃分為父論壇和子論壇,區(qū)分他們也靠表中的某個字段來實現(xiàn)的.具體實際的設(shè)計如下.表3.4leafbbs_board字段名數(shù)據(jù)類型長度主鍵索引外鍵可空說明IDbigint20是否否代理主鍵ParentIDbigint20否否否父版區(qū)IDChildIDsvarchar255否否否子版區(qū)IDBoardNamevarchar255否否否版區(qū)名字Explainstext否否否版區(qū)描述BoardPicvarchar200否否否圖片地址Ordersint11否否否顯示順序IsHiddentinyint1否否否是否隱藏PostNumint11否否否文章數(shù)量NeedPasswdtinyint1否否否是否加密Passwdvarchar100否否是密碼(5).論壇初始化信息表:論壇初始化信息表是存放初始化信息和管理員的帳號密碼等信息,初始化信息是在論壇在加載過程中讀取的或者以后經(jīng)常用的一些信息.表3.5leafbbs_config表字段名數(shù)據(jù)類型長度主鍵索引外鍵可空說明IDvarchar50是否否初始化標(biāo)題ConfContexttext否否否初始化信息3.2系統(tǒng)概要設(shè)計根據(jù)需求分析的結(jié)果,對系統(tǒng)進行詳細的概要設(shè)計3.2.1功能模塊設(shè)計繪制出的用例圖,將本系統(tǒng)分為三個大的模塊,他們分別是會員資料模塊,帖子資料模塊和后臺管理模塊!本系統(tǒng)的功能層次圖如圖3.2.1所示LLeafbb系統(tǒng)會員模塊帖子模塊后臺管理會員登錄會員注冊資料修改帖子發(fā)表回復(fù)帖子帖子查找論壇管理帖子管理圖片管理會員管理會員查找圖3.2系統(tǒng)功能層次圖如圖3.2.1,leafbbs系統(tǒng)實現(xiàn)了如下的功能.(1).會員模塊:此模塊用來實現(xiàn)會員的登陸注冊和會員資料的修改和查找.1.會員登陸模塊:會員可以通過此模塊對論壇進行登陸,登陸后便可以使用所有的會員功能,比如發(fā)帖回復(fù)等等.2.會員注冊模塊:沒有會員帳號的用戶,可以通過此模塊添加會員信息,添加成功后便可登陸論壇,使用會員功能.3.資料修改模塊:已注冊的會員在登陸后,可以通過此模塊,對會員的基本資料,聯(lián)系方式,密碼,頭像等資料進行修改.4.會員查找模塊:已注冊的會員在登陸后,可以通過此模塊,對會員進行查找,并可以查看對方的資料,聯(lián)系方式等等,從而方便會員之間的聯(lián)系.(2).帖子模塊:1.帖子發(fā)表模塊:已注冊的會員在登陸后,可以在相應(yīng)的論壇中,發(fā)表或轉(zhuǎn)載自己的大作,發(fā)表成功后,其他會員便可以在相應(yīng)的論壇中看到這篇帖子,并可以對其進行回復(fù)等操作.2.帖子回復(fù)模塊:會員在發(fā)表完帖子后,用戶便可查看相關(guān)文章,并可以在文章中對已發(fā)表的帖子進行回復(fù),3.帖子查找模塊會員可以通過此模塊,根據(jù)帖子的標(biāo)題和作者,對相關(guān)的帖子進行查找.(3).后臺管理:1.帖子查找模塊:此模塊和帖子模塊中的帖子查找類似,只是管理員的搜索條件比普通用戶更加的廣泛,使搜索變的便捷.2.帖子管理模塊:帖子管理模塊是管理員對帖子管理的平臺,如果管理員查看到帖子有不適宜發(fā)表的內(nèi)容時,可以對帖子選擇刪除或者鎖定等操作,如果看到優(yōu)秀的帖子,還可以將帖子進行置頂,加精,帖子管理模塊帖子管理模塊帖子修改帖子刪除帖子鎖定帖子置頂帖子加精圖3.3帖子管理模塊功能層次圖3.會員管理模塊:管理員可以通過此模塊,對會員進行管理,對一些不法的用戶可以修改或者刪除資料,4.論壇管理模塊.管理員對論壇的添加,創(chuàng)建,刪除等功能都是在此模塊里進行處理.5.圖片管理模塊管理員可以管理用戶上傳的頭像,和在文章里發(fā)表的圖片,從而加強對圖片的控制3.2.2系統(tǒng)界面設(shè)計對于系統(tǒng)來說,用戶界面設(shè)計將非常重要,因為一個交互良好的界面能夠加深瀏覽者的印象.設(shè)計的實現(xiàn)可以分為兩個部分。第一部分為站點的規(guī)劃與草圖的繪制,這一部分可以在紙上完成。第二部分為網(wǎng)頁的制作,這一過程是在計算機上完成的.設(shè)計首頁的第一步是設(shè)計版面布局。我們可以將網(wǎng)頁看作傳統(tǒng)的報刊雜志來編輯,這里面有文字、圖像乃至動畫,我們要做的工作就是以最適合的方式將圖片和文字排放在頁面的不同位置。除了要有一臺配置不錯的計算機外,軟件也是必需的。不能簡單地說一個軟件的好壞,只要是設(shè)計者使用起來覺得方便而且能得心應(yīng)手的,就可以稱為好軟件。當(dāng)然,它應(yīng)該能滿足設(shè)計者的要求。常用的軟件是Macromedia的Dreamweaver以與Adobe的Photoshop。設(shè)計是有原則的,無論使用何種手法對畫面中的元素進行組合,都一定要遵循五個大的原則:統(tǒng)一、連貫、分割、對比與和諧。統(tǒng)一,是指設(shè)計作品的整體性,一致性。設(shè)計作品的整體效果是至關(guān)重要的,在設(shè)計中切勿將各組成部分孤立分散,那樣會使畫面呈現(xiàn)出一種枝蔓紛雜的凌亂效果。連貫,是指要注意頁面的相互關(guān)系。設(shè)計中應(yīng)利用各組成部分在內(nèi)容上的內(nèi)在聯(lián)系和表現(xiàn)形式上的相互呼應(yīng),并注意整個頁面設(shè)計風(fēng)格的一致性,實現(xiàn)視覺上和心理上的連貫,使整個頁面設(shè)計的各個部分極為融洽,猶如一氣呵成。分割,是指將頁面分成若干小塊,小塊之間有視覺上的不同,這樣可以使觀者一目了然。在信息量很多時為使觀者能夠看清楚,就要注意到將畫面進行有效的分割。分割不僅是表現(xiàn)形式的需要。換個角度來講,分割也可以被視為對于頁面內(nèi)容的一種分類歸納。對比就是通過矛盾和沖突,使設(shè)計更加富有生氣。對比手法很多,例如:多與少、曲與直、強與弱、長與短、粗與細、疏與密、虛與實、主與次、黑與白、動與靜、美與丑、聚與散等等。在使用對比的時候應(yīng)慎重,對比過強容易破壞美感,影響統(tǒng)一。和諧是指整個頁面符合美的法則,渾然一體。如果一件設(shè)計作品僅僅是色彩、形狀、線條等的隨意混合,那么作品將不但沒有“生命感”,而且也根本無法實現(xiàn)視覺設(shè)計的傳達功能。和諧不僅要看結(jié)構(gòu)形式,而且要看作品所形成的視覺效果能否與人的視覺感受形成一種溝通,產(chǎn)生心靈的共鳴。這是設(shè)計能否成功的關(guān)鍵。最后簡單設(shè)計系統(tǒng)的簡單登陸界面和主界面圖3.4用戶登陸界面圖3.5用戶登陸后的主界面3.2.3系統(tǒng)的組件設(shè)計在整個系統(tǒng)中,為了解決諸如中文顯示亂碼此類的問題,本系統(tǒng)需要設(shè)計一些組件,來解決相關(guān)的問題.(1).過濾器組件:Java的內(nèi)核和class文件是基于unicode的,這使Java程序具有良好的跨平臺性,但也帶來了一些中文亂碼問題的麻煩。原因主要有兩方面,Java和JSP文件本身編譯時產(chǎn)生的亂碼問題和Java程序于其他媒介交互產(chǎn)生的亂碼問題。Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字節(jié)流的,如果Java和JSP編譯成class文件過程中,使用的編碼方式與源文件的編碼不一致,就會出現(xiàn)亂碼為了解決此類問題,需要設(shè)計一個組件來解決此類問題,每次請求和響應(yīng)到達客戶和服務(wù)器端時,都先經(jīng)過此過濾器對字符進行過濾.發(fā)送請求發(fā)送請求用戶過濾器(對字符進行過濾)服務(wù)器返回響應(yīng)圖3.6字符過濾器原理圖(2).權(quán)限管理組件:在論壇中的的用戶一定會遇到關(guān)于權(quán)限的問題,比如沒有登陸的用戶只可以查看帖子,而即使登陸的用戶,也只可以對自己應(yīng)有的權(quán)限進行操作,不可以操作管理員的功能.解決此類問題,本系統(tǒng)是通過判斷特定的session來判斷用戶的權(quán)限,當(dāng)用戶登陸成功后,組件會發(fā)送相應(yīng)的用戶session,之后每次用戶對論壇進行操作,都要先通過session,來判斷用戶的權(quán)限.對論壇操作對論壇操作用戶是否通過返回窗口服務(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邏輯代碼時,本系統(tǒng)設(shè)計了一些JSP標(biāo)簽來替代這些邏輯代碼第4章系統(tǒng)的設(shè)計與實現(xiàn)程序設(shè)計又稱編碼,是系統(tǒng)生命周期中繼詳細設(shè)計之后的階段,這個階段的任務(wù)是使用選定的程序設(shè)計語言,把經(jīng)過概要設(shè)計和詳細設(shè)計所得到的以程序設(shè)計說明書體現(xiàn)的信息處理過程描述后,轉(zhuǎn)換成能在計算機系統(tǒng)上運行的程序源代碼。4.1系統(tǒng)框架實現(xiàn)在系統(tǒng)的整體設(shè)計中,我們采取了四層結(jié)構(gòu).這樣結(jié)構(gòu)的優(yōu)點是靈活,移植和可維護性比較高.每個層在處理程序上都應(yīng)該有一項明確的責(zé)任,而不應(yīng)該在功能上與其它層混合,并且每個層要與其它層分開的圖4.1S.S.H框架的結(jié)合使用4.1.1底層數(shù)據(jù)庫的建立在前期的數(shù)據(jù)庫選用中,本系統(tǒng)選取了靈活高速的MySQL數(shù)據(jù)庫,而在數(shù)據(jù)庫的設(shè)計中,本文已經(jīng)確立了表結(jié)構(gòu).根據(jù)這些就可以創(chuàng)建一個數(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)用在單機系統(tǒng)上,另外根據(jù)管理的規(guī)模,我們只建立一個數(shù)據(jù)庫,在此數(shù)據(jù)庫基礎(chǔ)上建立leafbbs_userinfo用戶基本資料表leafbbs_userdetai用戶詳細信息表leafbbs_forum論壇文章表leafbbs_board論壇版區(qū)表leafbbs_config論壇初始化信息表4.1.2持久化層的建立(hibernate)典型的Web應(yīng)用的另一個末端是持久層。Hibernate為java提供了OR持久化機制和查詢服務(wù),它還給已經(jīng)熟悉SQL和JDBCAPI的Java開發(fā)者一個學(xué)習(xí)橋梁,他們學(xué)習(xí)起來很方便。Hibernate的持久對象是基于POJO和Javacollections。此外。

系統(tǒng)建立Hibernate的持久層。首先把BO持久化。Hibernate是通過POJO工作的,因此數(shù)據(jù)對象需要給所有的fileds加上getter,setter方法。Hibernate通過XML文件來映射(OR)對象,以下xml文件分別映射了相應(yīng)對象。

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)該與哪個數(shù)據(jù)庫通信,該使用哪個連接池或使用了DataSource,應(yīng)該加載哪些持久對象。而Session接口是用來完成Selecting,Saving,Delete和Updating這些操作。4.1.3業(yè)務(wù)邏輯層的建立本系統(tǒng)的業(yè)務(wù)邏輯是交由struts中的Action進行判斷的,比如判斷登陸的業(yè)務(wù)邏輯時,會建立一個LoginAction類來進行邏輯判斷,而一些關(guān)聯(lián)的映射,LeafBBS系統(tǒng)是寫在struts框架的struts-config.xml中.圖4.3struts-config.xml映射文件從編碼的視角來看,這層是最容易被忽視的一層。卻往往在持久層周圍看到這些業(yè)務(wù)處理的代碼,這其實是不正確的,因為它導(dǎo)致了程序代碼的緊密偶合,這樣一來,隨著時間推移這些代碼很難維護。幸好,針對這一問題本系統(tǒng)可以使用Spring框架來解決.spring框架都著手于“依賴注射”(dependencyinjection)(還有我們知道的‘控制反轉(zhuǎn)'InversionofControl=IoC)這樣的簡單概念。Spring還提供了SetterInjection(type2),ConstructorInjection(type3)等方式供選擇。Spring把程序中所涉與到包含業(yè)務(wù)邏輯和Dao的Objects——例如transactionmanagementhandler(事物管理控制)、ObjectFactoris(對象工廠)、serviceobjects(服務(wù)組件)——都通過XML來配置聯(lián)系起來。這種方式讓你的對象從創(chuàng)建中釋放了出來,降低了偶合度.圖4.4spring配置文件applicationContext.xml映射文件每個對象都可以在Spring配置信息applicationContext.xml中用<bean>標(biāo)簽引用。在這里,mySessionFactory引用了HibernateSessionFactory,而myTransactionManager引用了HibernateTransactionManage。代碼中myTransactionMangerBean有個sessionFactory屬性。HibernateTransactionManager有個sessionFactorysetter和getter方法,這是用來在Spring啟動的時候?qū)崿F(xiàn)"依賴注入"(dependencyinjection)的。在sessionFactory屬性里引用mySessionFactory。這兩個對象在Spring容器初始化后就被組裝了起來了。這樣的搭配讓你從單例(singletonobjects)和工廠(factories)中解放了出來,降低了代碼的維護代價。mySessionFactory.的兩個屬性,分別是用來注入mappingResources和hibernatePropertes的。圖4.5Spring基于配置文件,將各個Bean搭建在一起。4.1.4表示層的建立在表示層上,主要是基于JSP和AJAX異步傳輸技術(shù)來進行建立,最后通過Struts框架的struts-config.xml文件進行關(guān)聯(lián)映射.具體的頁面設(shè)計,會在后面的章節(jié)中進行介紹.4.2系統(tǒng)功能模塊實現(xiàn)4.2.1會員模塊實現(xiàn)在會員模塊的設(shè)計中,首先完成的是業(yè)務(wù)邏輯層的相應(yīng)action類的編寫,之后在通過具體的需要,編寫相應(yīng)的數(shù)據(jù)庫訪問DAO.在一切結(jié)束之后,從DAO和業(yè)務(wù)邏輯類中抽象出接口,通過spring的IOC對接口進行對象注入.在模塊的設(shè)計過程中,遇到的難點是在注冊時使用的AJAX異步傳輸,來判斷用戶名是否被占用.AJAX技術(shù)是一個基于Javascript腳本語言的新技術(shù),目前對這種技術(shù)的使用還不是很多,但通過反復(fù)的調(diào)試,逐漸的掌握了AJAX的要點.圖4.6AJAX技術(shù)在本系統(tǒng)中的應(yīng)用當(dāng)用戶在登錄的時候,會有一個驗證碼的文本框,而驗證碼的實現(xiàn)是通過訪問servlet技術(shù)實現(xiàn)的,在打開登錄界面時,servlet會自動向首頁發(fā)送一組圖片,并且發(fā)送一個相應(yīng)存放數(shù)字的session,當(dāng)用戶提交信息時,系統(tǒng)就會在session中提取數(shù)字并和用戶的數(shù)字進行比較,錯誤則會彈出錯誤信息.圖4.7驗證碼的應(yīng)用當(dāng)用戶在登錄成功后,或者選擇游客模式進入論壇時,會跳轉(zhuǎn)到論壇的主界面,主界面的實現(xiàn)主要是通過HTML的<iframe>標(biāo)記,將頁面劃分成兩個部分,左面的部分是用戶的操作框,右面是論壇的信息部分.已登錄的用戶可以通過左面的操作框來對自己的一些資料進行修改,也可以選擇退出等其他操作.圖4.8用戶主界面用戶信息模塊功能流程圖開始進入登錄頁面開始進入登錄頁面游客登錄?輸入賬號密碼帳號正確進入主界面結(jié)束NYYN圖4.9用戶模塊功能流程圖4.2.2帖子模塊實現(xiàn)帖子模塊的完成流程和會員模塊類似,都是先根據(jù)JSP網(wǎng)頁,建立相映的Action邏輯判斷類,之后建立和帖子有關(guān)的數(shù)據(jù)庫訪問DAO,最后抽象出接口進行依賴注入,編寫帖子模塊首先遇到的難點是分頁功能的實現(xiàn),當(dāng)打開某個論壇時,如果論壇中的帖子數(shù)量不能在一頁中顯示出來,那么怎樣進行處理.在一些參考學(xué)習(xí)后,本系統(tǒng)最后編寫了一個分頁bean,來解決這個難題,分頁bean的位置在com.leafbbs.service.web包下,其中的屬性有 intpage當(dāng)前頁數(shù) intperPageNum本頁顯示的帖子數(shù)目 intallPage總頁數(shù) intcpage本頁首個帖子序號 intspage本頁最后帖子序號StringfileName頁名這樣一來,系統(tǒng)就可以把頁數(shù)的信息,封裝到bean里面,并且進行相關(guān)的顯示圖4.11分頁功能的實現(xiàn)當(dāng)用戶進入某分論壇時,就會顯示出分頁信息,并且把相關(guān)的帖子封裝到response響應(yīng)中,發(fā)送給用戶.當(dāng)我們每次查看某個帖子,或回復(fù)某個帖子時,帖子表里的字段,ReNum(回復(fù)數(shù)量),ClickNum(點擊數(shù)量)都會進行自增.進入帖子后,系統(tǒng)會根據(jù)文章發(fā)表時間的順序,講帖子和相關(guān)的回復(fù)顯示出來圖4.12查看帖子開始開始顯示論壇信息進入相關(guān)論壇顯示文章列表瀏覽相應(yīng)帖子回復(fù)是否繼續(xù)瀏覽結(jié)束YN圖4.13帖子模塊功能流程圖4.2.3后臺管理模塊實現(xiàn)后臺管理模塊是管理員對論壇進行管理的平臺,在此模塊實現(xiàn)的過程中,最重要的一點就是權(quán)限的控制,只有管理員的身份才可以對此模塊進行操作,權(quán)限的控制已經(jīng)交給了控制組件進行完成.管理員可以在此模塊中主要完成對帖子和會員的管理,管理員可以通過用戶的ID和用戶名對其進行搜索,從而實現(xiàn)管理圖4.14管理員對用戶進行管理此外管理員還可以進行添加,修改論壇信息圖4.15管理員對用戶進行管理登陸系統(tǒng)登陸系統(tǒng)后臺管理前端顯示用戶數(shù)據(jù)庫用戶管理查詢數(shù)據(jù)庫信息修改新建用戶用戶刪除帖子查看登陸界面信息輸入提交確認身份NY圖4.10后臺模塊功能圖4.3系統(tǒng)設(shè)計總結(jié)經(jīng)過將近一個月的設(shè)計,完成了用戶模塊,帖子模塊和后臺管理模塊,基本完成了需求分析中設(shè)計的功能,接下來將進入到測試環(huán)節(jié).第5章系統(tǒng)的調(diào)試與測試5.1測試概述5.1.1軟件測試的目的軟件測試的目的,第一是確認軟件的質(zhì)量,其一方面是確認軟件做了你所期望的事情,另一方面是確認軟件以正確的方式來做了這個事件。第二是提供信息,比如提供給開發(fā)人員或程序經(jīng)理的反饋信息,為風(fēng)險評估所準(zhǔn)備的信息。第三軟件測試不僅是在測試軟件產(chǎn)品的本身,而且還包括軟件開發(fā)的過程。如果一個軟件產(chǎn)品開發(fā)完成之后發(fā)現(xiàn)了很多問題,這說明此軟件開發(fā)過程很可能是有缺陷的。因此軟件測試的第三個目的是保證整個軟件開發(fā)過程是高質(zhì)量的。軟件質(zhì)量是由幾個方面來衡量的:一、在正確的時間用正確的的方法把一個工作做正確。二、符合一些應(yīng)用標(biāo)準(zhǔn)的要求,比如不同國家的用戶不同的操作習(xí)慣和要求,項目工程中的可維護性、可測試性等要求。三、質(zhì)量本身就是軟件達到了最開始所設(shè)定的要求,而代碼的優(yōu)美或精巧的技巧并不代表軟件的高質(zhì)量。四、質(zhì)量也代表著它符合客戶的需要。作為軟件測試這個行業(yè),最重要的一件事就是從客戶的需求出發(fā),從客戶的角度去看產(chǎn)品,客戶會怎么去使用這個產(chǎn)品,使用過程中會遇到什么樣的問題。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è)計的動態(tài)網(wǎng)頁。因此對論壇的調(diào)試工作主要是利用Tomcat6.0的強大功能在本機下完成的。為了在本機下瀏覽Web頁面,首先在創(chuàng)建該系統(tǒng)的站點上(該系統(tǒng)使用的是Web的默認站點)將IP地址設(shè)定為,它的缺省域名值為localhost。然后向IE瀏覽器輸入本地動態(tài)網(wǎng)頁的URL,Web服務(wù)器在收到瀏覽器傳送的URL之后找到網(wǎng)頁文件,并在服務(wù)器端執(zhí)行該文件后將此文件以HTML文件的形式返回該瀏覽器。5.2單元測試5.2.1黑盒測試在單元測試中分別對用戶信息模塊,帖子模塊和后臺管理模塊進行分別測試.首先對各個模塊進行黑盒測試,在各種條件下運行模塊是否能正常運行,比如在登錄時,輸入空白用戶名等等.圖5.1測試輸入空白信息,5.2.2白盒測試此方法把測試對象看做一個透明的盒子,它允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)與有關(guān)信息,設(shè)計或選擇測試用例,對程序所有邏輯路徑進行測試。通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預(yù)期的狀態(tài)一致。因此白盒測試又稱為結(jié)構(gòu)測試或邏輯驅(qū)動測試。軟件人員使用白盒測試方法,主要想對程序模塊進行如下的檢查;對程序模塊的所有獨立的執(zhí)行路徑至少測試一次;對所有的邏輯判定,取“真”與取“假”的兩種情況都至少測試一次;在循環(huán)的邊界和運行界限內(nèi)執(zhí)行循環(huán)體;測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等。表5.1登陸測試用例測試用例描述操作過程與數(shù)據(jù)預(yù)期結(jié)果用例類型按不同的輸入格式輸入個人信息,進行注冊。進入注冊界面,按提示的輸入格式輸入個人信息,進行注冊。注冊成功,顯示注冊成功。居民信息保存到數(shù)據(jù)庫。功能點用戶名有重名的進入注冊界面,用戶名輸入,其它按提示的輸入格式輸入個人信息,進行注冊。注冊失敗,不能注冊。功能點郵箱按郵箱有效地址輸入,其它按規(guī)定輸入,進行注冊。進入注冊界面,輸入例如:其它按提示的輸入格式輸入個人信息,進行注冊。注冊失敗,不能注冊。功能點輸入為空時,進行注冊。進入注冊界面,輸入為空,進行注冊。無法注冊界面校驗表5.2發(fā)貼測試用例模塊測試用例描述操作過程與數(shù)據(jù)預(yù)期結(jié)果發(fā)貼按要求輸入帖子的相關(guān)信息進入發(fā)貼界面,輸入帖子內(nèi)容,標(biāo)題,內(nèi)容,再提交。發(fā)貼成功,發(fā)貼成功信息轉(zhuǎn)到管理員。沒輸入標(biāo)題進入發(fā)貼界面,沒輸入標(biāo)題,再提交發(fā)貼失敗。輸入為空進入發(fā)貼界面,輸入為空,再提交。無法發(fā)貼。5.2.3模塊接口測試在黑盒測試完成的情況下,進行模塊接口測試,模塊接口測試是單元測試的基礎(chǔ)。只有在數(shù)據(jù)能正確流入、流出模塊的前提下,其他測試才有意義。測試接口正確與否應(yīng)該考慮的因素:1輸入的實際參數(shù)與形式參數(shù)的個數(shù)是否相同;

2輸入的實際參數(shù)與形式參數(shù)的屬性是否匹配;

3輸入的實際參數(shù)與形式參數(shù)的量綱是否一致;

4調(diào)用其他模塊時所給實際參數(shù)的個數(shù)是否與被調(diào)模塊的形參個數(shù)相同;

5調(diào)用其他模塊時所給實際參數(shù)的屬性是否與被調(diào)模塊的形參屬性匹配;

6調(diào)用其他模塊時所給實際參數(shù)的量綱是否與被調(diào)模塊的形參量綱一致;

7調(diào)用預(yù)定義函數(shù)時所用參數(shù)的個數(shù)、屬性和次序是否正確;

8是否存在與當(dāng)前入口點無關(guān)的參數(shù)引用;

9是否修改了只讀型參數(shù);

10對全程變量的定義各模塊是否一致;

11是否把某些約束作為參數(shù)傳遞。模塊接口測試,本系統(tǒng)使用的是MyEclipse的測試工具進行測試,在IDE與TomCat連接好后,向TomCat服務(wù)器中部署LeafBBS系統(tǒng),部署成功后,即可按照步驟,對系統(tǒng)進行模塊接口測試.圖5.2部署LeafBBS系統(tǒng),圖5.3測試用戶登錄模塊5.3集成測試每個模塊都能單獨工作,但這些模塊集成在一起之后卻不能正常工作。主要原因是,模塊相互調(diào)用時接口會引入許多新問題。例如,數(shù)據(jù)經(jīng)過接口可能丟失;一個模塊對另一模塊可能造成不應(yīng)有的影響;幾個子功能組合起來不能實現(xiàn)主功能;誤差不斷積累達到不可接受的程度;全局數(shù)據(jù)結(jié)構(gòu)出現(xiàn)錯誤,等等。綜合測試是組裝軟件的系統(tǒng)測試技術(shù),按設(shè)計要求把通過單元測試的各個模塊組裝在一起之后,進行集成測試以便發(fā)現(xiàn)與接口有關(guān)的各種錯誤。5.3.1自頂向下集成自頂向下集成是構(gòu)造程序結(jié)構(gòu)的一種增量式方式,它從主控模塊開始,按照軟件的控制層次結(jié)構(gòu),以深度優(yōu)先或廣度優(yōu)先的策略,逐步把各個模塊集成在一起。首先將模塊用戶模塊和帖子模塊集成在一起,再將后臺管理模塊集成起來。之后再將用戶模塊和后臺管理模塊集成在一起,再加上帖子模塊.5.3.2確認測試標(biāo)準(zhǔn)功能和性能指標(biāo)滿足軟件要求和標(biāo)準(zhǔn)的情況下,測試結(jié)束第6章結(jié)論經(jīng)過幾個月的努力,已經(jīng)基本完成了LeafBBS系統(tǒng)的開發(fā)和設(shè)計.完成了用戶模塊,帖子模塊和后臺管理模塊的開發(fā),并基本實現(xiàn)了前期所制定的功能.LeafBBS系統(tǒng)在不斷的設(shè)計更改過程中,逐漸的成熟。在編寫的最后階段中,參考了一些設(shè)計模式,在邏輯代碼和數(shù)據(jù)庫連接DAO中抽象出了若干接口,并對其進行了對象的依賴注入,大大的減少了模塊之間的耦合,使系統(tǒng)具有很高的靈活性和可維護性,這是LeafBBS系統(tǒng)最大的優(yōu)點.另外在系統(tǒng)的另一個優(yōu)點就是HTML同步傳輸和AJAX異步傳輸技術(shù)的結(jié)合使用,既減輕了服務(wù)器的負擔(dān),也加快了用戶的訪問效率.當(dāng)然LeafBBS系統(tǒng)也存在很多不足的地方,比如用戶的權(quán)限判斷過于簡單,安全性低,希望在今后的學(xué)習(xí)中,逐步的進行改進.通過這次的設(shè)計,加深了對S.S.H框架,以與面向?qū)ο笏枷氲囊恍├斫?對于軟件工程方面的設(shè)計思想也有了更深一步的理解,只有在不斷的實踐于學(xué)習(xí)中,才會得到最豐厚的回報.參考文獻[1]馮燕奎,趙德奎.JSP實用案例教程[M]清華大學(xué)出版社,2004,5:70-100[2]王家華軟件工程[M]東北大學(xué)出版社2001年3月303頁[3]王宜貴軟件工程[M]北京:機械工業(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高級程序設(shè)計[M]中科多媒體出版社2001年11月85-90[7]JimArlowUML2.0andtheUnifiedProcess[M]機械工業(yè)出版社2006年6月30-40[8]林信良spring2.0技術(shù)手冊[M]電子工業(yè)出版社2006年6月50-100[9]熊節(jié)、林儀明、張凱峰、陳玉泉等主編[《CSDN社區(qū)電子雜志——Java雜志》創(chuàng)刊號][10]《程序員》雜志2007年第4期[11]耿祥義編著.JSP基礎(chǔ)編程[M].清華大學(xué)出版社,2004.55-162[12]徐建波,周新蓮.Web設(shè)計原理于編程技術(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è)計的幾個月中,感謝我的導(dǎo)師****老師對我的幫助和悉心的指導(dǎo),老師在我的設(shè)計和論文中給了我很多幫助,在此表示深深的感謝 另外在設(shè)計的過程中同組的同學(xué)和我實習(xí)的單位賽斯特IT培訓(xùn)中心也給了我莫大的支持,在此也表示衷心的感謝附錄A英文文獻AJAXInAction附錄B翻譯1.1.1比較用戶體驗花幾分鐘使用一下你選中的應(yīng)用(瀏覽器除外),記下它用到了哪些用戶交互,然后馬上回來。為了簡短起見,我舉一個電子表格的例子,但是,這里所涉與的要點是通用的,足以針對文本編輯器上的各種情形。好,我們開始。先在電子表格中隨便輸入幾個等式,注意到,可以以幾種方式進行交互:編輯數(shù)據(jù),用鍵盤和鼠標(biāo)瀏覽數(shù)據(jù),還可以使用鼠標(biāo)拖拽來重新組織數(shù)據(jù)。我做這些操作的時候,程序給了我反饋。移動鼠標(biāo)的時候,光標(biāo)改變了形狀;當(dāng)鼠標(biāo)停在上面的時候,按鈕變亮了;選中的文字也改變了顏色。窗口或者對話框被選中的時候,也和平常顯得不一樣了,等等(圖1-1)。這些就是所謂“富”的交互。當(dāng)然了,仍然有一些有待改進的地方,但這是一個好的開始。OK,電子表格就是一個富客戶端程序了嗎?當(dāng)然不是。在電子表格或者類似的桌面應(yīng)用中,業(yè)務(wù)邏輯和數(shù)據(jù)模型是在一個封閉的環(huán)境中運行的。在這個環(huán)境中,它們彼此清晰地了解對方,并且可以互相訪問,而環(huán)境之外的東西,對于它們來說是未知的(圖1-2)。那么客戶端又是什么呢?它是與另一個獨立的進程相互通信的程序,后者通常運行在服務(wù)器上。一般來說,服務(wù)器總是要比客戶端大一些,能力強一些,配置更好一些,因為在服務(wù)器上通常要存儲浩如煙海的信息??蛻舳顺绦蚴沟米罱K用戶可以查看和修改這些信息,當(dāng)多個客戶端連接在同一個服務(wù)器上的時候,可以在它們之間共享這些信息。圖1-3展示了一個簡單的客戶/服務(wù)器架構(gòu)在現(xiàn)我的電子表格應(yīng)用只需要管理它自己保存在內(nèi)存或本地文件系統(tǒng)中的少量數(shù)據(jù)。如果架構(gòu)設(shè)計良好的話,數(shù)據(jù)和它的表現(xiàn)形式的耦合可以非常松散,但是我不能通過網(wǎng)絡(luò)來分割或者通過網(wǎng)絡(luò)來共享它們。從這個意義上來說,電子表格應(yīng)用不是一個客戶端。與之相對應(yīng)的Web瀏覽器就是一個典型的客戶端,它與Web服務(wù)器通信,請求需要的頁面。瀏覽器有豐富的功能,用來管理用戶的瀏覽行為,常見功能有回退按鈕、歷史列表和分頁瀏覽多個文檔等等。但是當(dāng)我們把特定網(wǎng)站的Web頁面看作是一個應(yīng)用時,這些通用的瀏覽功能實際上和應(yīng)用關(guān)系不大,充其量也就如電子表格和Windows的開始按鈕或者窗口列表之間的關(guān)系。我們來考察一下現(xiàn)代的Web應(yīng)用。為了簡單起見,我們選擇了“地球人都知道”的在線書店A(圖1-4)。在瀏覽器中打開Amazon網(wǎng)站,因為在此之前我訪問過,它會給我顯示一個友好的問候、一些推薦書目,還有我的購買歷史信息。點擊推薦書目中的任何一條,就會轉(zhuǎn)到另外一個頁面(此時,頁面要刷新一下,在這幾秒鐘內(nèi)我什么也看不到)。新頁面是該書的相關(guān)信息:書評、二手書報價、同一作者的其他著作,以與以前我瀏覽過的其他書籍簡而言之,呈現(xiàn)在我面前的是非常豐富的、關(guān)聯(lián)度很高的信息。但是對我而言,交互的方式就是點擊那些超鏈接,然后填寫一些表格。假設(shè)我在鍵盤前面不小心睡著了,第二天才醒來,如果不刷新頁面,我就沒法知道《哈里·波特》系列的新書已經(jīng)出版了,也不能將我的列表從一個頁面帶到另一個頁面,我要是想同時看到更多一些東西也不行,因為我無法改變頁面上局部內(nèi)容區(qū)域的大小。我似乎是在批評Amazon的界面,其實并非如此,我只是拿它來做個例子。事實上,在傳統(tǒng)Web開發(fā)方式的桎梏下,他們已經(jīng)做得非常棒了。但是比起電子表格來說,它所用的交互模型毫無疑問是太有限了。為何現(xiàn)代的Web應(yīng)用仍然有這么多的局限呢?造成目前的狀況有一些合理的技術(shù)原因,我們現(xiàn)在就來考察一下。1.1.2

網(wǎng)絡(luò)延遲因特網(wǎng)的宏偉藍圖是將這個世界上所有的計算機都連接起來,形成一個無比巨大的計算資源。如果能把本地調(diào)用和遠程調(diào)用等同起來,那么無論是分析蛋白質(zhì)的成分還是破解外太空的信號,使用者都無需考慮機器的物理位置,剩下來的只有愉快地計算。但是非常不幸,本地調(diào)用和遠程調(diào)用是完全不同的東西。在現(xiàn)有的技術(shù)水平之下,網(wǎng)絡(luò)通信仍然是一件代價高昂的事情(也就是說,通常很慢,而且并不可靠)。在沒有網(wǎng)絡(luò)調(diào)用的情況中,不同的方法和函數(shù)以與它們所操作的數(shù)據(jù)都位于相同的本地內(nèi)存中(圖1-6),向方法內(nèi)傳遞數(shù)據(jù)并且獲得方法的返回結(jié)果是非常直接的。而在有遠程調(diào)用的情況下,位于網(wǎng)絡(luò)兩端的通信雙方為了發(fā)送和接收數(shù)據(jù)在底層需要進行大量計算(圖1-7)。比起數(shù)據(jù)在線路上的往返,這些計算需要消耗更多的時間。傳輸一段二進制的數(shù)據(jù),中間要經(jīng)過很多環(huán)節(jié)的編碼和解碼、錯誤校驗、失敗重發(fā)、數(shù)據(jù)包拆分和重組,數(shù)據(jù)最終轉(zhuǎn)化為0和1表示的二進制信號,通過線路(或者無線連接)到達另外一方。在本地,調(diào)用函數(shù)的調(diào)用請求被編碼為一個對象,然后將這個對象序列化為一系列字節(jié),最后使用應(yīng)用層協(xié)議(通常是HTTP)通過物理傳輸介質(zhì)(例如銅纜、光纖或者無線電波)將其發(fā)送出去。在遠程機器上,對應(yīng)用層協(xié)議解碼,將獲得的數(shù)據(jù)字節(jié)反序列化,創(chuàng)建一個請求對象的副本。然后對數(shù)據(jù)模型應(yīng)用這個對象并生成一個響應(yīng)對象。為了將響應(yīng)對象傳遞給本地的調(diào)用函數(shù),所有的序列化、反序列化以與傳輸層的操作都要反向再來一次。最后,響應(yīng)對象被傳遞給本地的調(diào)用函數(shù)。這個交互過程很復(fù)雜吧,幸好,它是可以自動完成的?,F(xiàn)代的編程環(huán)境如Java和Microsoft的.NET框架都內(nèi)置了這個能力。盡管如此,執(zhí)行遠程調(diào)用時,上述所有這些操作仍然會在內(nèi)部執(zhí)行。如果我們到處使用遠程調(diào)用,性能勢必會大受影響。這也就是說,遠程調(diào)用是不可能和本地調(diào)用一樣有效率的。更糟糕的是,網(wǎng)絡(luò)的不穩(wěn)定更讓這種效率損失捉摸不定,難以預(yù)計。相比之下,運行在本地內(nèi)存之中的本地調(diào)用,在這一點上無疑要有優(yōu)勢得多。等等,說了半天的遠程調(diào)用,這和軟件的可用性有關(guān)系嗎?答案是,大有關(guān)系。一個成功的計算機用戶界面要能以最起碼的水平模擬我們在真實世界中的體驗。交互的基本規(guī)則之遠程調(diào)用橫穿整個網(wǎng)絡(luò),需要執(zhí)行大量的額外操作,它們往往會把系統(tǒng)拖慢,使用戶察覺到延遲。在桌面應(yīng)用中,只有當(dāng)可用性設(shè)計做得非常糟糕的時候,才因為網(wǎng)絡(luò)延遲不可預(yù)測,這類界面問題往往都神出鬼沒,對應(yīng)用響應(yīng)的測試也難以開展。換句話說,網(wǎng)絡(luò)延遲是導(dǎo)致實際應(yīng)用的交互性糟糕的一個普遍原因。1.1.3

異步交互用戶界面的開發(fā)者對于網(wǎng)絡(luò)延遲只能做最壞的假設(shè)。簡單地說,就是要盡可能讓用戶界面與網(wǎng)絡(luò)活動無關(guān)。天才的程序員們早已發(fā)明了一種確實有效而且久經(jīng)考驗的方案,來專門解決這一問題。先賣個關(guān)子,讓我們到現(xiàn)實世界中走一趟。在我每天早上必做的事中,很重要的一項是叫醒我的孩子去上學(xué)。我可以站在床邊把他們折騰醒,催著他們起床穿衣,但這是一種很耗費時間的方法,總要耗費我很多寶貴的早間時光我要叫醒孩子,看看窗外,往往會忽略了喂貓。孩子們起來之后會問我要早餐。就像服務(wù)器端的進程一樣,孩子們起床總是慢吞吞的。如果我遵循同步交互模式,就要等他們老半天。不過,只要他們嘟囔一句“我醒了”,我就可以先去干其他的事,需要時再回來看看他們。按照計算機的術(shù)語,我需要做的就是為每個孩子在一個單獨的線程中建立一個異步進程。開始之后,孩子們會在他們的線程里自己起床,我這個父線程沒有必要同

溫馨提示

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

評論

0/150

提交評論