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