




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
沈陽(yáng)師范大學(xué)學(xué)士學(xué)位論文PAGE―PAGE38―本科畢業(yè)論文(設(shè)計(jì))(2013屆本科畢業(yè)生)題目:微博系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)學(xué)生姓名:學(xué)生學(xué)號(hào):學(xué)院名稱(chēng):軟件學(xué)院專(zhuān)業(yè)名稱(chēng):計(jì)算機(jī)科學(xué)與技術(shù)指導(dǎo)教師:二零一三年五月【摘要】隨著社會(huì)的進(jìn)步,時(shí)代的發(fā)展,微博的使用在網(wǎng)上已經(jīng)非常廣泛,微博系統(tǒng)對(duì)用戶而言,除了方便之外,還是與朋友之間溝通交流的橋梁。該微博系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)正是適應(yīng)了這種要求。本系統(tǒng)采用Java語(yǔ)言,MySQL數(shù)據(jù)庫(kù)以及Struts、Hibernate、Spring技術(shù)開(kāi)發(fā),以Eclipse作為開(kāi)發(fā)工具進(jìn)行研發(fā)。其功能主要包括系統(tǒng)登錄和注冊(cè)、我的微博模塊、個(gè)人中心模塊、最新動(dòng)態(tài)模塊、留言板模塊以及幫助中心六大部分。其中在我的微博模塊中有查看我的微博和查看我的好友功能,還有更多設(shè)置功能;在個(gè)人中心模塊中具體分為完善資料功能和對(duì)密碼的操作;在最新動(dòng)態(tài)模塊中可以發(fā)表微博和查看歷史微博內(nèi)容;在留言板模塊中可以發(fā)表留言和查看歷史留言信息等;而幫助模塊中主要是對(duì)一些常見(jiàn)問(wèn)題進(jìn)行解答。本論文完整介紹了系統(tǒng)的功能和開(kāi)發(fā)的過(guò)程,重點(diǎn)說(shuō)明了設(shè)計(jì)的重點(diǎn)與設(shè)計(jì)思想,詳細(xì)闡述了系統(tǒng)開(kāi)發(fā)的需求分析以及相關(guān)技術(shù)的介紹?!娟P(guān)鍵字】微博系統(tǒng),Java,Struts,HibernateDesignAndImplementationOfMicroBlogSystem【Abstract】Withtheprogressofsociety,thedevelopmentofthetimes.MicroBlogonlinehasbeenverywidelyused,MicroBlogSystemforusers,inadditiontoconvenience,orbridgeofcommunicationbetweenfriends.TheMicroBlogSystemisadaptedtothedesignandimplementationoftherequirements.ThesystemusestheJavalanguage,MySQLandStruts,Hibernate,Springtechnology,Eclipseasdevelopmenttool.Itsmainfunctionsincludesixpartsofsystemloginandregistration,myMicroBlogmodule,personalcentermodule,recentnewsmodule,messageboardmoduleandhelpcentermodule.MyMicroBlogmoduleincludesmessage’select,friends’select,add,delete,andmoresettingsfunctions;personalcentermoduleincludespassword’modifyandqueryfunctions;recentnewsmoduleincludesinformation’sadd,delete,modifyandqueryfunctions;messageboardmoduleincludesmessage’sadd,delete,modifyandqueryfunctions;inthehelpcentermodule,istoanswersomecommonquestions.Thisthesisintroducesthesystem’sfunctionsandprocedureofdevelopmentcompletely,declaresthepointofdesignandthethinkingofdesignimportantlyandstatestherequirementanalysisofthesystemdevelopmentindetail.【Keywords】MicroBlogSystem,Java,Struts,Hibernate目錄TOC\o"1-2"\h\z\u13133第一章緒論 1314471.1微博的研究背景 1158701.2國(guó)內(nèi)外研究現(xiàn)狀 168211.3本文結(jié)構(gòu) 430728第二章相關(guān)技術(shù)介紹 653212.1JAVA語(yǔ)言概述 6130452.2JAVAEE平臺(tái)技術(shù)介紹 74062.3MySQL數(shù)據(jù)庫(kù)簡(jiǎn)介 14181672.4MVC設(shè)計(jì)模式簡(jiǎn)介 157412第三章系統(tǒng)需求分析 19150563.1系統(tǒng)總體需求分析 1928663.2系統(tǒng)開(kāi)發(fā)設(shè)計(jì)思想 20163493.3系統(tǒng)功能結(jié)構(gòu) 2013713.4系統(tǒng)的操作過(guò)程 23193493.5系統(tǒng)總體結(jié)構(gòu)圖 24126013.6數(shù)據(jù)庫(kù)的概念 2487083.7數(shù)據(jù)庫(kù)E-R圖 25190543.8系統(tǒng)界面設(shè)計(jì) 25257第四章詳細(xì)設(shè)計(jì) 27115894.1數(shù)據(jù)庫(kù)的選擇 27230894.2數(shù)據(jù)庫(kù)表的描述 2764484.3系統(tǒng)開(kāi)發(fā)環(huán)境介紹 2914876第五章系統(tǒng)實(shí)現(xiàn) 30286835.1系統(tǒng)登錄和注冊(cè) 30114795.2添加留言信息 3383455.3刪除好友功能 36135855.4修改個(gè)人信息 3776465.5查詢(xún)留言信息 39206195.6其他功能 404665第六章系統(tǒng)測(cè)試及維護(hù) 4274856.1系統(tǒng)測(cè)試 42134296.2測(cè)試用例 4232566.3系統(tǒng)維護(hù) 435663第七章總結(jié)與展望 44162627.1總結(jié) 44158537.2展望 4412436后記 4513817參考文獻(xiàn) 46緒論1.1微博的研究背景微博,就是微博客(MicroBlog)的簡(jiǎn)稱(chēng),是一個(gè)基于用戶關(guān)系的信息分享、傳播以及獲取的平臺(tái),用戶可以通過(guò)WEB、WAP以及各種客戶端組建個(gè)人社區(qū),以140字左右的文字更新信息,并實(shí)現(xiàn)即時(shí)分享。美國(guó)的twitter是最早也是最著名的微博,根據(jù)一些相關(guān)的公開(kāi)的數(shù)據(jù),截至2010年1月份,該產(chǎn)品在全球已經(jīng)擁有7500萬(wàn)注冊(cè)用戶。在2009年8月份,中國(guó)最大的門(mén)戶網(wǎng)站新浪網(wǎng)推出“新浪微博”內(nèi)測(cè)版,成為門(mén)戶網(wǎng)站中第一家提供微博服務(wù)的網(wǎng)站,從此微博正式進(jìn)入中文上網(wǎng)主流人群的視野。微博是一種通過(guò)關(guān)注機(jī)制分享簡(jiǎn)短實(shí)時(shí)信息的廣播式的社交網(wǎng)絡(luò)平臺(tái)。陳永東,國(guó)內(nèi)知名新媒體領(lǐng)域研究學(xué)者,他在國(guó)內(nèi)率先給出了微博的定義。其中有五方面的理解:1、關(guān)注機(jī)制:分為單向和雙向兩種;2、內(nèi)容簡(jiǎn)短:通常為140字;3、實(shí)時(shí)信息:最新的實(shí)時(shí)信息;4、廣播式:公開(kāi)的信息,誰(shuí)都可以瀏覽以及轉(zhuǎn)播;5、社交網(wǎng)絡(luò)平臺(tái):把微博歸為社交網(wǎng)絡(luò)。微博為廣大用戶提供了這樣一個(gè)平臺(tái),你既可以以觀眾的身份在微博上瀏覽你感興趣的信息,也可以以發(fā)布者的身份在微博上發(fā)布內(nèi)容供別人瀏覽。發(fā)布的內(nèi)容一般較短,通常為140字的限制,由此命名為微博。當(dāng)然,也可以發(fā)布圖片,分享歌曲、視頻等。微博有兩方面的含義:首先,對(duì)于一些強(qiáng)調(diào)版面布置的博客來(lái)說(shuō),微博主要是由簡(jiǎn)單的只言片語(yǔ)組成,從這個(gè)角度來(lái)說(shuō),微博對(duì)用戶的技術(shù)要求門(mén)檻很低,而且與博客相比,對(duì)語(yǔ)言的編排組織的要求沒(méi)那么高。第二,微博瀏覽非常方便,由于微博開(kāi)通的多種API,所以用戶可以通過(guò)手機(jī)、網(wǎng)絡(luò)等方式來(lái)即時(shí)更新自己的個(gè)人信息,深受廣大用戶的喜愛(ài)。微博的特點(diǎn):信息獲取具有很強(qiáng)的自主性、選擇性;微博宣傳的影響力具有很大彈性,與內(nèi)容質(zhì)量高度相關(guān);內(nèi)容短小精悍。微博的內(nèi)容限定為140字左右,內(nèi)容簡(jiǎn)短,不需長(zhǎng)篇大論,門(mén)檻較低;信息共享便捷迅速,這也是微博最大的特點(diǎn)。1.2國(guó)內(nèi)外研究現(xiàn)狀1.2.1微博在國(guó)外的發(fā)展史埃文·威廉姆斯(EvanWilliams)是博客技術(shù)先驅(qū)blogger的創(chuàng)始人,他在2006年3月創(chuàng)建的新興公司Obvious推出了大微博服務(wù)。在最初階段,這項(xiàng)服務(wù)的功能很不完善,只是用于向好友的手機(jī)發(fā)送文本信息。Twitter是由blogger的創(chuàng)始人威廉姆斯(EvanWilliams)在2006年3月推出的,其英文的原意為小鳥(niǎo)的嘰嘰喳喳聲,此時(shí)功能有些改進(jìn),用戶可以使用數(shù)百種工具更新信息。Twitter的出現(xiàn)把世人的眼光引入了一個(gè)叫微博的小小世界里。截至2007年5月,國(guó)際間計(jì)算總共有111個(gè)類(lèi)似Twitter的網(wǎng)站。然而,最受人關(guān)注的仍是Twitter,在2007年,在得克薩斯州奧斯汀舉辦的南非西南會(huì)議中贏得了部落格類(lèi)的網(wǎng)站獎(jiǎng)。Plurk和Jaiku是Twitter的主要競(jìng)爭(zhēng)對(duì)手。由于Twitter的發(fā)展前景,國(guó)內(nèi)一些人開(kāi)始蠢蠢欲動(dòng)。從校內(nèi)網(wǎng)起家的王興,在2007年5月創(chuàng)建了飯否網(wǎng)。而作為一個(gè)擁有4.1億QQ用戶的企業(yè)——騰訊,看著用戶對(duì)隨時(shí)隨地發(fā)布自己狀態(tài)的需求愈發(fā)強(qiáng)烈后,在2007年8月13日騰訊滔滔面世。但事情沒(méi)有預(yù)期發(fā)展的好,Twitter建立的“微型王國(guó)”不是在短時(shí)間內(nèi)掘出黃金的淺礦,所以國(guó)內(nèi)微博企業(yè)目前尚處于慢熱的狀態(tài)。國(guó)內(nèi)微博不約而同地將現(xiàn)在的目光放在了產(chǎn)品調(diào)整以及服務(wù)完善上,在還沒(méi)有辦法吸引到風(fēng)險(xiǎn)投資的眼光之前,他們最需要做的可能是如何靠自己的能力繼續(xù)活下去。1.2.2微博在國(guó)內(nèi)的現(xiàn)狀及發(fā)展趨勢(shì)中國(guó)第一家?guī)в形⒉┥实娘埛窬W(wǎng)于2007年開(kāi)張開(kāi)始,到2009年,微博這個(gè)新詞匯以摧枯拉朽的姿態(tài)掃蕩世界,不久便成為全世界最流行的詞匯。國(guó)內(nèi)大批老牌微博產(chǎn)品(飯否、騰訊滔滔等)在2009年7月中旬開(kāi)始停止運(yùn)營(yíng),一些新產(chǎn)品開(kāi)始進(jìn)入人們的視野:6月份開(kāi)放的Follow5,7月份開(kāi)放的9911,8月份開(kāi)放的新浪微博等。在2010年,國(guó)內(nèi)微博開(kāi)始崛起。四大門(mén)戶網(wǎng)站均開(kāi)設(shè)微博。根據(jù)一些相關(guān)公開(kāi)數(shù)據(jù)顯示,截至2010年1月份,在全球范圍內(nèi),該產(chǎn)品已經(jīng)擁有7500萬(wàn)注冊(cè)用戶。2011年上半年,我國(guó)微博用戶迅速增長(zhǎng),其數(shù)量從6331萬(wàn)增至1.95億,半年增幅高達(dá)208.9%。微博在網(wǎng)民中的普及率從13.8%增至40.2%。從2010年底至今,手機(jī)微博在網(wǎng)民中的使用率比例從15.5%上升到34%。 圖1-1中國(guó)微博市場(chǎng)用戶周覆蓋人數(shù)圖1-2用戶訪問(wèn)次數(shù)及有效瀏覽時(shí)間集中度至今,因?yàn)樾吕宋⒉屨剂讼葯C(jī),其用戶數(shù)已經(jīng)超過(guò)1億,再加上其在整體的戰(zhàn)略執(zhí)行上也比較徹底到位,所以獲得了現(xiàn)在的地位。僅僅兩年時(shí)間,新浪微博就為新浪創(chuàng)造了幾十億美金的巨額收入。而騰訊微博作為另一個(gè)微博巨頭,也發(fā)展迅猛。其擁有近5億的QQ注冊(cè)用戶,其中2億左右是活躍用戶。這些人受潮流趨勢(shì)的影響很快開(kāi)通騰訊微博。另外其作為重要的推廣渠道。企業(yè)用戶通過(guò)注冊(cè)騰訊官方微博,能夠迅速的擴(kuò)大企業(yè)的知名度。高校教育平臺(tái)也通過(guò)微博來(lái)推動(dòng)了中國(guó)教育事業(yè)信息化發(fā)展的步伐?;ヂ?lián)網(wǎng)實(shí)驗(yàn)室認(rèn)為,我國(guó)微博將向工具化、細(xì)分化、移動(dòng)化和開(kāi)放化等方向發(fā)展。如下圖所示。圖1-3發(fā)展方向研究圖現(xiàn)在,已經(jīng)有很多微博服務(wù)商對(duì)微博網(wǎng)站進(jìn)行了專(zhuān)業(yè)細(xì)分,如和訊網(wǎng)推出的財(cái)經(jīng)微博,搜房網(wǎng)推出的房地產(chǎn)專(zhuān)業(yè)微博等。隨著這種細(xì)分與競(jìng)爭(zhēng),細(xì)分化的趨勢(shì)將更加明顯。1.2.2中外微博的文化差異在國(guó)內(nèi),關(guān)系社會(huì)這一本質(zhì)屬性是微博抓住的文化特征,中國(guó)人社會(huì)認(rèn)同的結(jié)構(gòu)建立在一套強(qiáng)有力的關(guān)系體系之中,群體化和聯(lián)系化是其文化內(nèi)核。一個(gè)人社會(huì)地位的高低取決于社會(huì)關(guān)系的強(qiáng)弱。關(guān)系是實(shí)現(xiàn)權(quán)力重構(gòu)的核心的一種資本,因此,微博的發(fā)展過(guò)程,也是新權(quán)力者關(guān)系資本積累的過(guò)程。在國(guó)外,微博Twitter的產(chǎn)品初衷正如單詞Twitter的英文原義——鳥(niǎo)兒嘰嘰喳喳的叫聲。它抓住了美國(guó)人善于交談的個(gè)性、渴望表達(dá)和信息分享的特征,正如一個(gè)充斥了個(gè)人瑣碎的思索、片段化的情感的窗口。1.3本文結(jié)構(gòu)第1章緒論,介紹微博的研究背景,國(guó)內(nèi)外的發(fā)展史及論文的結(jié)構(gòu)等。第2章相關(guān)技術(shù)介紹,對(duì)微博的設(shè)計(jì)和實(shí)現(xiàn)過(guò)程中用到的開(kāi)發(fā)語(yǔ)言、平臺(tái)技術(shù)以及框架技術(shù)進(jìn)行介紹,主要闡述了JAVA語(yǔ)言、JAVAEE企業(yè)級(jí)應(yīng)用、三大框架、MySQL、MVC模式。第3章系統(tǒng)需求分析,對(duì)系統(tǒng)的總需求進(jìn)行分析,并對(duì)我的微博模塊、個(gè)人中心模塊、最新動(dòng)態(tài)模塊、留言板模塊、幫助中心模塊的需求進(jìn)行的分析。第4章詳細(xì)設(shè)計(jì),在需求分析的基礎(chǔ)上,進(jìn)行總體設(shè)計(jì),并對(duì)我的微博模塊、個(gè)人中心模塊、最新動(dòng)態(tài)模塊、留言板模塊進(jìn)行詳細(xì)設(shè)計(jì),進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì),對(duì)并數(shù)據(jù)關(guān)系進(jìn)行說(shuō)明。第5章系統(tǒng)實(shí)現(xiàn),系統(tǒng)總體實(shí)現(xiàn)部分主要論述一些功能子模塊的實(shí)現(xiàn),例如系統(tǒng)登錄和注冊(cè)、添加留言信息、刪除好友功能、修改個(gè)人信息等。第6章系統(tǒng)測(cè)試及維護(hù),包括對(duì)測(cè)試原理及常用軟件測(cè)試方法的介紹,針對(duì)登錄部分設(shè)計(jì)測(cè)試用例,并對(duì)測(cè)試的結(jié)果如何進(jìn)行說(shuō)明。第7章總結(jié)與展望,總結(jié)微博系統(tǒng)的研究情況,以及在設(shè)計(jì)和實(shí)現(xiàn)過(guò)程中的優(yōu)點(diǎn)以及本系統(tǒng)還需要進(jìn)行改進(jìn)的地方。相關(guān)技術(shù)介紹2.1JAVA語(yǔ)言概述JAVA最初被命名為Oak,這類(lèi)語(yǔ)言可以來(lái)解決諸如電視機(jī)、電話、鬧鐘、烤面包機(jī)等家用電器的控制和通訊問(wèn)題,其目標(biāo)設(shè)定在家用電器等小型系統(tǒng)的編程語(yǔ)言,因?yàn)檫@些智能化家電的市場(chǎng)需求沒(méi)有Sun預(yù)期的高,所以放棄了該項(xiàng)計(jì)劃。但是隨著互聯(lián)網(wǎng)的發(fā)展,Sun看到了Oak在計(jì)算機(jī)網(wǎng)絡(luò)上的廣闊應(yīng)用前景,所以在Oak幾近失敗之時(shí)改造了Oak,并且正式發(fā)布,命名為“Java”。Java編程語(yǔ)言的風(fēng)格與C、C++語(yǔ)言十分類(lèi)似。不同的是:Java是一個(gè)純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,Java舍棄了C++語(yǔ)言中容易引起錯(cuò)誤的指針(用引用來(lái)取代)、多重繼承(用接口來(lái)取代)、運(yùn)算符重載(operatoroverloading)等特性,Java繼承了C++語(yǔ)言面向?qū)ο蠹夹g(shù)的核心,增加了垃圾回收器功能用于回收不再被引用的對(duì)象所占據(jù)的內(nèi)存空間,使得程序員不用再為內(nèi)存管理而擔(dān)憂[2]。在JavaSE1.5版本中,Java又引入了泛型編程(GenericProgramming)、類(lèi)型安全的枚舉、不定長(zhǎng)參數(shù)和自動(dòng)裝/拆箱等語(yǔ)言特性[3]。Java語(yǔ)言不同于一般的編譯執(zhí)行計(jì)算機(jī)語(yǔ)言和解釋執(zhí)行計(jì)算機(jī)語(yǔ)言。Java的運(yùn)行機(jī)制是首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),也就是所謂的機(jī)器語(yǔ)言,然后依賴(lài)各種不同平臺(tái)上的虛擬機(jī)來(lái)解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。不過(guò),每次的編譯執(zhí)行需要消耗一定的時(shí)間,這同時(shí)也在一定程度上降低了Java程序的運(yùn)行效率。但是,在J2SE1.4.2發(fā)布后,Java的執(zhí)行速度有了大幅提升。Sun公司在推出Java之際就將其作為一種與傳統(tǒng)程序不同的開(kāi)放的技術(shù)。全球數(shù)以萬(wàn)計(jì)的Java開(kāi)發(fā)公司被要求所設(shè)計(jì)的Java軟件必須相互兼容。Sun公司的口號(hào)之一是“Java語(yǔ)言靠群體的力量而非公司的力量”,也獲得了廣大軟件開(kāi)發(fā)商的認(rèn)同。這與微軟公司所倡導(dǎo)的注重精英和封閉式的模式是完全不同的[4]。Java編程語(yǔ)言是個(gè)簡(jiǎn)單、面向?qū)ο?、分布式、解釋性、健壯、安全與系統(tǒng)無(wú)關(guān)、可移植、高性能、多線程和動(dòng)態(tài)的語(yǔ)言。這是Sun公司對(duì)Java編程語(yǔ)言的解釋。Java平臺(tái)是基于Java語(yǔ)言的平臺(tái)。這樣的平臺(tái)目前非常流行,因此,微軟公司先后推出了與之競(jìng)爭(zhēng)的.NET平臺(tái)以及模仿Java的C#語(yǔ)言。Java的主要特性:Java語(yǔ)言是簡(jiǎn)單的、面向?qū)ο蟮?、分布式的,也是健壯的,更是安全的,Java語(yǔ)言的體系結(jié)構(gòu)是中立的,Java語(yǔ)言具有可移植、多線程、動(dòng)態(tài)等特征,Java也是一種解釋型的語(yǔ)言,Java是高性能的。Java語(yǔ)言的優(yōu)良特性使得Java應(yīng)用具有無(wú)比的健壯性和可靠性,這也減少了應(yīng)用系統(tǒng)的維護(hù)費(fèi)用。Java對(duì)對(duì)象技術(shù)的全面支持和Java平臺(tái)內(nèi)嵌的API能縮短應(yīng)用系統(tǒng)的開(kāi)發(fā)時(shí)間并降低成本。Java的編譯一次,到處可運(yùn)行的特性使得它能夠提供一個(gè)隨處可用的開(kāi)放結(jié)構(gòu)和在多平臺(tái)之間傳遞信息的低成本方式。特別是Java企業(yè)應(yīng)用編程接口(JavaEnterpriseAPIs)為企業(yè)計(jì)算及電子商務(wù)應(yīng)用系統(tǒng)提供了有關(guān)技術(shù)和豐富的類(lèi)庫(kù)。2.2JAVAEE平臺(tái)技術(shù)介紹JAVAEE核心是一組技術(shù)規(guī)范與指南,其中所包含的各類(lèi)組件、服務(wù)架構(gòu)及技術(shù)層次,均有共同的標(biāo)準(zhǔn)及規(guī)格,讓各種依循JAVAEE架構(gòu)的不同平臺(tái)之間,存在良好的兼容性,解決過(guò)去企業(yè)后端使用的信息產(chǎn)品彼此之間無(wú)法兼容,企業(yè)內(nèi)部或外部難以互通的窘境。JAVAEE技術(shù)的基礎(chǔ)就是核心Java平臺(tái)或Java2平臺(tái)的標(biāo)準(zhǔn)版,JAVAEE不僅鞏固了標(biāo)準(zhǔn)版中的許多優(yōu)點(diǎn),例如"編寫(xiě)一次、隨處運(yùn)行"的特性、方便存取數(shù)據(jù)庫(kù)的JDBCAPI、CORBA技術(shù)以及能夠在Internet應(yīng)用中保護(hù)數(shù)據(jù)的安全模式等等,同時(shí)還提供了對(duì)EJB(EnterpriseJavaBeans)、JavaServletsAPI、JSP(JavaServerPages)以及XML技術(shù)的全面支持。其最終目的就是成為一個(gè)能夠使企業(yè)開(kāi)發(fā)者大幅縮短投放市場(chǎng)時(shí)間的體系結(jié)構(gòu)[5]。JAVAEE體系結(jié)構(gòu)提供中間層集成框架用來(lái)滿足無(wú)需太多費(fèi)用而又需要高可用性、高可靠性以及可擴(kuò)展性的應(yīng)用的需求。通過(guò)提供統(tǒng)一的開(kāi)發(fā)平臺(tái),JAVAEE降低了開(kāi)發(fā)多層應(yīng)用的費(fèi)用和復(fù)雜性,同時(shí)提供對(duì)現(xiàn)有應(yīng)用程序集成強(qiáng)有力支持,完全支持EnterpriseJavaBeans[6],有良好的向?qū)еС执虬筒渴饝?yīng)用,添加目錄支持,增強(qiáng)了安全機(jī)制,提高了性能。JAVAEE的四層模型,如圖2.1所示。(1)運(yùn)行在客戶端機(jī)器上的客戶層組件。(2)運(yùn)行在JAVAEE服務(wù)器上的Web層組件。(3)運(yùn)行在JAVAEE服務(wù)器上的業(yè)務(wù)邏輯層組件。(4)運(yùn)行在EIS服務(wù)器上的企業(yè)信息系統(tǒng)(Enterpriseinformationsystem)層軟件。圖2-1JAVAEE的4層模型圖2.2.1Struts技術(shù)簡(jiǎn)介Struts最早是作為ApacheJakarta項(xiàng)目的組成部分,項(xiàng)目的創(chuàng)立者希望通過(guò)對(duì)該項(xiàng)目的研究,改進(jìn)和提高JavaServerPages、Servlet、標(biāo)簽庫(kù)以及面向?qū)ο蟮募夹g(shù)水準(zhǔn)。Struts這個(gè)名字來(lái)源于在建筑和舊式飛機(jī)中使用的支持金屬架。當(dāng)建立一個(gè)物理建筑時(shí),建筑工程師使用支柱為建筑的每一層提供支持。同樣,軟件工程師使用Struts為業(yè)務(wù)應(yīng)用的每一層提供支持。它的目的是為了幫助減少在運(yùn)用MVC設(shè)計(jì)模型來(lái)開(kāi)發(fā)Web應(yīng)用的時(shí)間。隨著JSP與Servlet技術(shù)大量應(yīng)用于以Web為基礎(chǔ)的應(yīng)用程序,Java開(kāi)發(fā)人員群體認(rèn)為應(yīng)以較佳的模式以提升Web應(yīng)用程序的可維護(hù)性與重復(fù)使用性。早期JSP規(guī)格書(shū)中曾列舉兩種可行之JSP應(yīng)用架構(gòu),分別為Model1與Model2。如果想混合使用Servlets和JSP的優(yōu)點(diǎn)來(lái)建立可擴(kuò)展的應(yīng)用,Struts是一個(gè)不錯(cuò)的選擇。在Model1架構(gòu)中,JSP直接處理Web瀏覽器送來(lái)的請(qǐng)求(Request),并輔以JavaBean處理應(yīng)用相關(guān)邏輯。Model1架構(gòu)單純編寫(xiě)比較容易,但在Model1中JSP可能同時(shí)肩負(fù)View與Controller角色,兩類(lèi)程序代碼有可能混雜而不易維護(hù)。而Model2中將Servlet納入架構(gòu)中扮演前端Controller角色,將Web瀏覽器送出的請(qǐng)求集中送至Servlet,Servlet可集中管理使用者登入、權(quán)限控制、多國(guó)語(yǔ)言轉(zhuǎn)換等前置處理,再視需求轉(zhuǎn)向給對(duì)應(yīng)的JSP處理。Model2中采用了較佳的MVC模式,但增加了編寫(xiě)復(fù)雜度。Struts是Apache軟件基金下Jakarta項(xiàng)目的一部分。除Struts之外,還有其他成功的開(kāi)源產(chǎn)品,包括Tomcat,Ant和Velocity。2000年CraigR.McClanahan先生貢獻(xiàn)了他編寫(xiě)struts的JSPModel2架構(gòu)的ApplicationFramework原始程序代碼給Apache基金會(huì),成為ApacheJakarta計(jì)劃StrutsFramework前身。Struts框架的主要架構(gòu)設(shè)計(jì)和開(kāi)發(fā)者是CraigR.McClanahan。Craig也是Tomcat4的主要架構(gòu)師,以及JavaWebServicesDeveloperPack的主要架構(gòu)師和實(shí)現(xiàn)者。他現(xiàn)在是Sun的JavaServerFaces(JSR-127)以及J2EE平臺(tái)的Web層架構(gòu)的規(guī)范領(lǐng)導(dǎo)。CraigR.McClanahan先生是JCPExpertGroup成員之一,曾參與JSP規(guī)格制定與Tomcat4之編寫(xiě),因此StrutsFramework廣受Java開(kāi)發(fā)人員群體所重視。Borland自2002年底開(kāi)始于開(kāi)發(fā)工具JBuilder中支持StrutsFramework。Struts最早是作為ApacheJakarta項(xiàng)目的組成部分問(wèn)世運(yùn)作。項(xiàng)目的創(chuàng)立者希望通過(guò)對(duì)該項(xiàng)目的研究,改進(jìn)和提高JavaServerPages、Servlet、標(biāo)簽庫(kù)以及面向?qū)ο蟮募夹g(shù)水準(zhǔn)。Struts跟Tomcat、Turbine等諸多Apache項(xiàng)目一樣,是開(kāi)源軟件,這是它的一大優(yōu)點(diǎn),使開(kāi)發(fā)者能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。除此之外,Struts的優(yōu)點(diǎn)主要集中體現(xiàn)在兩個(gè)方面:Taglib和頁(yè)面導(dǎo)航。Taglib是Struts的標(biāo)記庫(kù),靈活運(yùn)用,能大大提高開(kāi)發(fā)效率。另外,就目前國(guó)內(nèi)的JSP開(kāi)發(fā)者而言,除了使用JSP自帶的常用標(biāo)記外,很少開(kāi)發(fā)自己的標(biāo)記,或許Struts是一個(gè)很好的起點(diǎn)。Struts框架具有組件的模塊化,靈活性和重用性的優(yōu)點(diǎn),同時(shí)簡(jiǎn)化了基于MVC的web應(yīng)用程序的開(kāi)發(fā)。Struts可以清晰地區(qū)分控制,事務(wù)邏輯和外觀,從而簡(jiǎn)化了開(kāi)發(fā)應(yīng)用程序的過(guò)程。Struts提供的類(lèi)使得開(kāi)發(fā)工作更加簡(jiǎn)單,這些類(lèi)包括:1.控制程序流程的類(lèi);2.實(shí)現(xiàn)和執(zhí)行程序事務(wù)邏輯的類(lèi);3.自定義的標(biāo)記庫(kù)使得創(chuàng)建和驗(yàn)證HTML表單更加容易。2.2.2Hibernate技術(shù)簡(jiǎn)介Hibernate是一個(gè)開(kāi)放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來(lái)操縱數(shù)據(jù)庫(kù)。Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。Hibernate的核心接口一共有6個(gè),分別為:Session、SessionFactory、Transaction、Query、Criteria和Configuration。這6個(gè)核心接口在任何開(kāi)發(fā)中都會(huì)用到。通過(guò)這些接口,不僅可以對(duì)持久化對(duì)象進(jìn)行存取,還能夠進(jìn)行事務(wù)控制。下面對(duì)這6個(gè)核心接口分別加以介紹。Session接口負(fù)責(zé)執(zhí)行被持久化對(duì)象的CRUD操作(CRUD的任務(wù)是完成與數(shù)據(jù)庫(kù)的交流,包含了很多常見(jiàn)的SQL語(yǔ)句。)。但需要注意的是Session對(duì)象是非線程安全的。同時(shí),Hibernate的session不同于JSP應(yīng)用中的HttpSession。這里當(dāng)使用session這個(gè)術(shù)語(yǔ)時(shí),其實(shí)指的是Hibernate中的session,而以后會(huì)將HttpSession對(duì)象稱(chēng)為用戶session。SessionFactory接口負(fù)責(zé)初始化Hibernate。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建Session對(duì)象。這里用到了工廠模式。需要注意的是SessionFactory并不是輕量級(jí)的,因?yàn)橐话闱闆r下,一個(gè)項(xiàng)目通常只需要一個(gè)SessionFactory就夠,當(dāng)需要操作多個(gè)數(shù)據(jù)庫(kù)時(shí),可以為每個(gè)數(shù)據(jù)庫(kù)指定一個(gè)SessionFactory。Configuration類(lèi)負(fù)責(zé)配置并啟動(dòng)Hibernate,創(chuàng)建SessionFactory對(duì)象。在Hibernate的啟動(dòng)的過(guò)程中,Configuration類(lèi)的實(shí)例首先定位映射文檔位置、讀取配置,然后創(chuàng)建SessionFactory對(duì)象。Transaction接口負(fù)責(zé)事務(wù)相關(guān)的操作。它是可選的,開(kāi)發(fā)人員也可以設(shè)計(jì)編寫(xiě)自己的底層事務(wù)處理代碼。Query和Criteria接口負(fù)責(zé)執(zhí)行各種數(shù)據(jù)庫(kù)查詢(xún)。它可以使用HQL語(yǔ)句或SQL語(yǔ)句兩種表達(dá)方式。Hibernate主鍵介紹:Assigned方式由用戶生成主鍵值,并且要在save()之前指定否則會(huì)拋出異常特點(diǎn):主鍵的生成值完全由用戶決定,與底層數(shù)據(jù)庫(kù)無(wú)關(guān)。用戶需要維護(hù)主鍵值,在調(diào)用session.save()之前要指定主鍵值。Hilo使用高低位算法生成主鍵,高低位算法使用一個(gè)高位值和一個(gè)低位值,然后把算法得到的兩個(gè)值拼接起來(lái)作為數(shù)據(jù)庫(kù)中的唯一主鍵。Hilo方式需要額外的數(shù)據(jù)庫(kù)表和字段提供高位值來(lái)源。默認(rèn)情況下使用的表是hibernate_unique_key,默認(rèn)字段叫做next_hi。next_hi必須有一條記錄否則會(huì)出現(xiàn)錯(cuò)誤。特點(diǎn):需要額外的數(shù)據(jù)庫(kù)表的支持,能保證同一個(gè)數(shù)據(jù)庫(kù)中主鍵的唯一性,但不能保證多個(gè)數(shù)據(jù)庫(kù)之間主鍵的唯一性。Hilo主鍵生成方式由Hibernate維護(hù),所以Hilo方式與底層數(shù)據(jù)庫(kù)無(wú)關(guān),但不應(yīng)該手動(dòng)修改hi/lo算法使用的表的值,否則會(huì)引起主鍵重復(fù)的異常。Increment方式對(duì)主鍵值采取自動(dòng)增長(zhǎng)的方式生成新的主鍵值,但要求底層數(shù)據(jù)庫(kù)的支持Sequence。如Oracle,DB2等。需要在映射文件xxx.hbm.xml中加入Increment標(biāo)志符的設(shè)置。特點(diǎn):由Hibernate本身維護(hù),適用于所有的數(shù)據(jù)庫(kù),不適合多進(jìn)程并發(fā)更新數(shù)據(jù)庫(kù),適合單一進(jìn)程訪問(wèn)數(shù)據(jù)庫(kù)。不能用于群集環(huán)境。Identity當(dāng)時(shí)根據(jù)底層數(shù)據(jù)庫(kù),來(lái)支持自動(dòng)增長(zhǎng),不同的數(shù)據(jù)庫(kù)用不同的主鍵增長(zhǎng)方式。特點(diǎn):與底層數(shù)據(jù)庫(kù)有關(guān),要求數(shù)據(jù)庫(kù)支持Identity,如MySQl中是auto_increment,SQLServer中是Identity,支持的數(shù)據(jù)庫(kù)有MySql、SQLServer、DB2、Sybase和HypersonicSQL。Identity無(wú)需Hibernate和用戶的干涉,使用較為方便,但不便于在不同的數(shù)據(jù)庫(kù)之間移植程序。Sequence需要底層數(shù)據(jù)庫(kù)支持Sequence方式,例如Oracle數(shù)據(jù)庫(kù)等。特點(diǎn):需要底層數(shù)據(jù)庫(kù)的支持序列,支持序列的數(shù)據(jù)庫(kù)有DB2、PostgreSql、Oracle、SAPDb等在不同數(shù)據(jù)庫(kù)之間移植程序,特別從支持序列的數(shù)據(jù)庫(kù)移植到不支持序列的數(shù)據(jù)庫(kù)需要修改配置文件。Native主鍵生成方式會(huì)根據(jù)不同的底層數(shù)據(jù)庫(kù)自動(dòng)選擇Identity、Sequence、Hilo主鍵生成方式。特點(diǎn):根據(jù)不同的底層數(shù)據(jù)庫(kù)采用不同的主鍵生成方式。由于Hibernate會(huì)根據(jù)底層數(shù)據(jù)庫(kù)采用不同的映射方式,因此便于程序移植,項(xiàng)目中如果用到多個(gè)數(shù)據(jù)庫(kù)時(shí),可以使用這種方式。UUID使用128位UUID算法生成主鍵,能夠保證網(wǎng)絡(luò)環(huán)境下的主鍵唯一性,也就能夠保證在不同數(shù)據(jù)庫(kù)及不同服務(wù)器下主鍵的唯一性。其最大的特點(diǎn)就是能夠保證數(shù)據(jù)庫(kù)中的主鍵唯一性,這樣就可以節(jié)省存貯空間。Foreign用于一對(duì)一關(guān)系中。GUID主鍵生成方式使用了一種特殊算法,保證生成主鍵的唯一性,支持SQLServer和MySQL數(shù)據(jù)庫(kù)。2.2.3Spring技術(shù)簡(jiǎn)介Spring是一個(gè)開(kāi)源框架,它由RodJohnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開(kāi)發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用基本的JavaBean來(lái)完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開(kāi)發(fā)。從簡(jiǎn)單性、可測(cè)試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。Spring框架是一個(gè)分層架構(gòu),由7個(gè)定義良好的模塊組成。Spring模塊構(gòu)建在核心容器之上,核心容器定義了創(chuàng)建、配置和管理bean的方式,如下圖所示。圖2-2Spring模塊Spring框架的每個(gè)模塊(或組件)都可以單獨(dú)存在,或者與其他一個(gè)或多個(gè)模塊聯(lián)合實(shí)現(xiàn)。每個(gè)模塊的功能如下:核心容器:核心容器提供Spring框架的基本功能。核心容器的主要組件是BeanFactory,它是工廠模式的實(shí)現(xiàn)。BeanFactory使用控制反轉(zhuǎn)(IOC)模式將應(yīng)用程序的配置和依賴(lài)性規(guī)范與實(shí)際的應(yīng)用程序代碼分開(kāi)。Spring上下文:Spring上下文是一個(gè)配置文件,向Spring框架提供上下文信息。Spring上下文包括企業(yè)服務(wù),例如JNDI、EJB、電子郵件、國(guó)際化、校驗(yàn)和調(diào)度功能。SpringAOP:通過(guò)配置管理特性,SpringAOP模塊直接將面向方面的編程功能集成到了Spring框架中。所以,可以很容易地使Spring框架管理的任何對(duì)象支持AOP。SpringAOP模塊為基于Spring的應(yīng)用程序中的對(duì)象提供了事務(wù)管理服務(wù)。通過(guò)使用SpringAOP,不用依賴(lài)EJB組件,就可以將聲明性事務(wù)管理集成到應(yīng)用程序中。SpringDAO:JDBCDAO抽象層提供了有意義的異常層次結(jié)構(gòu),可用該結(jié)構(gòu)來(lái)管理異常處理和不同數(shù)據(jù)庫(kù)供應(yīng)商拋出的錯(cuò)誤消息。異常層次結(jié)構(gòu)簡(jiǎn)化了錯(cuò)誤處理,并且極大地降低了需要編寫(xiě)的異常代碼數(shù)量(例如打開(kāi)和關(guān)閉連接)。SpringDAO的面向JDBC的異常遵從通用的DAO異常層次結(jié)構(gòu)。SpringORM:Spring框架插入了若干個(gè)ORM框架,從而提供了ORM的對(duì)象關(guān)系工具,其中包括JDO、Hibernate和iBatisSQLMap。所有這些都遵從Spring的通用事務(wù)和DAO異常層次結(jié)構(gòu)。SpringWeb模塊:Web上下文模塊建立在應(yīng)用程序上下文模塊之上,為基于Web的應(yīng)用程序提供了上下文。所以,Spring框架支持與JakartaStruts的集成。Web模塊還簡(jiǎn)化了處理多部分請(qǐng)求以及將請(qǐng)求參數(shù)綁定到域?qū)ο蟮墓ぷ鳌pringMVC框架:MVC框架是一個(gè)全功能的構(gòu)建Web應(yīng)用程序的MVC實(shí)現(xiàn)。通過(guò)策略接口,MVC框架變成為高度可配置的,MVC容納了大量視圖技術(shù),其中包括JSP、Velocity、Tiles、iText和POI。Spring框架的功能可以用在任何J2EE服務(wù)器中,大多數(shù)功能也適用于不受管理的環(huán)境。Spring的核心要點(diǎn)是:支持不綁定到特定J2EE服務(wù)的可重用業(yè)務(wù)和數(shù)據(jù)訪問(wèn)對(duì)象。毫無(wú)疑問(wèn),這樣的對(duì)象可以在不同J2EE環(huán)境(Web或EJB)、獨(dú)立應(yīng)用程序、測(cè)試環(huán)境之間重用。簡(jiǎn)單來(lái)說(shuō),Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IOC)和面向切面(AOP)的容器框架。IOC和AOP:控制反轉(zhuǎn)模式(也稱(chēng)作依賴(lài)性介入)的基本概念是:不創(chuàng)建對(duì)象,但是描述創(chuàng)建它們的方式。在代碼中不直接與對(duì)象和服務(wù)連接,但在配置文件中描述哪一個(gè)組件需要哪一項(xiàng)服務(wù)。容器(在Spring框架中是IOC容器)負(fù)責(zé)將這些聯(lián)系在一起。在典型的IOC場(chǎng)景中,容器創(chuàng)建了所有對(duì)象,并設(shè)置必要的屬性將它們連接在一起,決定什么時(shí)間調(diào)用方法。下表列出了IOC的一個(gè)實(shí)現(xiàn)模式。類(lèi)型1服務(wù)需要實(shí)現(xiàn)專(zhuān)門(mén)的接口,通過(guò)接口,由對(duì)象提供這些服務(wù),可以從對(duì)象查詢(xún)依賴(lài)性(例如,需要的附加服務(wù))類(lèi)型2通過(guò)JavaBean的屬性(例如setter方法)分配依賴(lài)性類(lèi)型3依賴(lài)性以構(gòu)造函數(shù)的形式提供,不以JavaBean屬性的形式公開(kāi)。Spring框架的IOC容器采用類(lèi)型2和類(lèi)型3實(shí)現(xiàn)。AOP就是面向方面的編程,是一種編程技術(shù),它允許程序員對(duì)橫切關(guān)注點(diǎn)或橫切典型的職責(zé)分界線的行為(例如日志和事務(wù)管理)進(jìn)行模塊化。AOP的核心構(gòu)造是方面,它將那些影響多個(gè)類(lèi)的行為封裝到可重用的模塊中。AOP和IOC是補(bǔ)充性的技術(shù),它們都運(yùn)用模塊化方式解決企業(yè)應(yīng)用程序開(kāi)發(fā)中的復(fù)雜問(wèn)題。在典型的面向?qū)ο箝_(kāi)發(fā)方式中,可能要將日志記錄語(yǔ)句放在所有方法和Java類(lèi)中才能實(shí)現(xiàn)日志功能。在AOP方式中,可以反過(guò)來(lái)將日志服務(wù)模塊化,并以聲明的方式將它們應(yīng)用到需要日志的組件上。當(dāng)然,優(yōu)勢(shì)就是Java類(lèi)不需要知道日志服務(wù)的存在,也不需要考慮相關(guān)的代碼。所以,用SpringAOP編寫(xiě)的應(yīng)用程序代碼是松散耦合的。AOP的功能完全集成到了Spring事務(wù)管理、日志和其他各種特性的上下文中。IOC容器Spring設(shè)計(jì)的核心是org.springframework.beans包,它的設(shè)計(jì)目標(biāo)是與JavaBean組件一起使用。這個(gè)包通常不是由用戶直接使用,而是由服務(wù)器將其用作其他多數(shù)功能的底層中介。下一個(gè)最高級(jí)抽象是BeanFactory接口,它是工廠設(shè)計(jì)模式的實(shí)現(xiàn),允許通過(guò)名稱(chēng)創(chuàng)建和檢索對(duì)象。BeanFactory也可以管理對(duì)象之間的關(guān)系。BeanFactory支持兩個(gè)對(duì)象模型。單態(tài)模型提供了具有特定名稱(chēng)的對(duì)象的共享實(shí)例,可以在查詢(xún)時(shí)對(duì)其進(jìn)行檢索。Singleton是默認(rèn)的也是最常用的對(duì)象模型。對(duì)于無(wú)狀態(tài)服務(wù)對(duì)象很理想。原型模型確保每次檢索都會(huì)創(chuàng)建單獨(dú)的對(duì)象。在每個(gè)用戶都需要自己的對(duì)象時(shí),原型模型最適合。bean工廠的概念是Spring作為IOC容器的基礎(chǔ)。IOC將處理事情的責(zé)任從應(yīng)用程序代碼轉(zhuǎn)移到框架。正如我將在下一個(gè)示例中演示的那樣,Spring框架使用JavaBean屬性和配置數(shù)據(jù)來(lái)指出必須設(shè)置的依賴(lài)關(guān)系。2.3MySQL數(shù)據(jù)庫(kù)簡(jiǎn)介MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),開(kāi)發(fā)者為瑞典MySQLAB公司。Sun公司于2008年1月16號(hào)收購(gòu)了瑞典MySQLAB公司。而在2009年,Oracle又收購(gòu)了SUN。當(dāng)時(shí),沒(méi)有任何人對(duì)MySQL的前途抱樂(lè)觀的態(tài)度。但是目前,MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其速度快、體積小、總體擁有成本低,尤其MySQL是開(kāi)源的這一特點(diǎn),所以許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。MySQL特性:1.使用C和C++編寫(xiě),并經(jīng)過(guò)了多種編譯器進(jìn)行測(cè)試,保證源代碼的可移植性;2.支持FreeBSD、AIX、OpenBSD、MacOS、NovellNetware、Solaris、HP-UX、Linux、OS/2Wrap、Windows等多種操作系統(tǒng);3.MySQL為多種編程語(yǔ)言提供了API。這些編程語(yǔ)言包括C、C++、Java、Python、PHP、Perl、Ruby、Tcl和Eiffel等;4.支持多線程,可以充分利用CPU資源;5.使用優(yōu)化的SQL查詢(xún)算法,有效地提高查詢(xún)速度;6.既能夠作為一個(gè)單獨(dú)的應(yīng)用程序,應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個(gè)庫(kù),嵌入到其他的軟件中提供多語(yǔ)言支持,常見(jiàn)的編碼如中文的BIG5、GB2312,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名;7.提供TCP/IP、JDBC和ODBC等多種數(shù)據(jù)庫(kù)連接途徑;8.提供一些管理工具,例如:管理、檢查、優(yōu)化數(shù)據(jù)庫(kù);9.可以處理?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù)。MySQL的應(yīng)用:與其他的大型數(shù)據(jù)庫(kù)例如Oracle、SQLServer、DB2等相比,MySQL也有它的缺點(diǎn),如規(guī)模小、功能有限(MySQLCluster的功能和效率都相對(duì)比較差)等,但是這些不會(huì)影響MySQL受歡迎的程度。MySQL提供的功能對(duì)于一般的個(gè)人使用者和中小型企業(yè)來(lái)說(shuō)已經(jīng)綽綽有余,而且由于MySQL是開(kāi)源的軟件,因此可以大大降低總體擁有成本。LAMP(Linux+Apache+MySQL+PHP)是目前Internet上流行的網(wǎng)站構(gòu)架方式,即:操作系統(tǒng)使用Linux,Apache作為Web服務(wù)器,數(shù)據(jù)庫(kù)使用MySQL,PHP作為服務(wù)器端腳本解釋器。這四個(gè)軟件的優(yōu)點(diǎn)都是自由或開(kāi)放源碼軟件(FLOSS),所以使用這種方式不用花一分錢(qián)就可以建立起一個(gè)穩(wěn)定、免費(fèi)的網(wǎng)站系統(tǒng)。MySQL管理:MySQL數(shù)據(jù)庫(kù)可以使用命令行工具管理(命令mysql和mysqladmin),也可以從MySQL的網(wǎng)站下載圖形管理工具M(jìn)ySQLQueryBrowser和MySQLAdministrator。phpMyAdminMySQL資料庫(kù)系統(tǒng)管理程式,是由php寫(xiě)成的,讓管理者可用Web界面管理MySQL資料庫(kù)。由PHP寫(xiě)成的還有phpMyBackupPro,可以透過(guò)Web介面創(chuàng)建和管理數(shù)據(jù)庫(kù)。它可以創(chuàng)建偽cronjobs,可以用來(lái)在某個(gè)時(shí)間或周期自動(dòng)備份MySQL數(shù)據(jù)庫(kù)。除此之外,還有其他的GUI管理工具,例如早先的mysql-front以及navicat,emsmysqlmanager等等。MySQL最常見(jiàn)的應(yīng)用架構(gòu)有:適合小規(guī)模應(yīng)用的單點(diǎn)(Single);適合中小規(guī)模應(yīng)用的復(fù)制(Replication);適合大規(guī)模應(yīng)用的集群(Cluster)。MySQL4.1版本中增加了不少新的性能,包括對(duì)子查詢(xún)的更好的支持,對(duì)主鍵的更高速度的緩存,以及應(yīng)網(wǎng)絡(luò)約會(huì)網(wǎng)站所要求而生的,基于地理信息的查詢(xún)等。與其同步開(kāi)發(fā)的5.0版本則把目標(biāo)對(duì)準(zhǔn)了企業(yè)用戶,5.0版本具有4.1版本中的所有新特性,而且還有以下新特點(diǎn):系統(tǒng)自動(dòng)報(bào)錯(cuò)機(jī)制;對(duì)外鍵的良好支持以及對(duì)存儲(chǔ)過(guò)程的充分支持。本系統(tǒng)應(yīng)用MySQL的主要原因是,MySQL數(shù)據(jù)庫(kù)的體積小,而且運(yùn)行速度快,總體擁有成本低,MySQL服務(wù)器是可靠的和易于使用的數(shù)據(jù)庫(kù)服務(wù)器,而且其是開(kāi)放源碼,為了降低網(wǎng)站總體擁有成本而選擇MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。2.4MVC設(shè)計(jì)模式簡(jiǎn)介模型(Model),視圖(View)和控制(Controller)三個(gè)單詞組成了Model-View-Controller,縮寫(xiě)即MVC。MVC模式的目的就是實(shí)現(xiàn)Web系統(tǒng)的職能分工。Model層通常可以用JavaBean或EJB來(lái)實(shí)現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯。View層通常用JSP來(lái)實(shí)現(xiàn)與用戶的交互。Model與View之間溝通的橋梁是Controller層,它可以分派用戶的請(qǐng)求并且選擇恰當(dāng)?shù)囊晥D以用于顯示,同時(shí)它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作。MVC開(kāi)始是存在于Desktop程序中的,M指的是數(shù)據(jù)模型,V指的是用戶界面,C指的是控制器。將M和V的實(shí)現(xiàn)代碼分離是使用MVCcopyright:AppleInc.的目的,從而使同一個(gè)程序可以使用不同的表現(xiàn)形式。確保M和V的同步則是C存在的目的,一旦M改變,V應(yīng)該同步更新。至今已被廣泛使用的模型-視圖-控制器(MVC)是XeroxPARC在八十年代為編程語(yǔ)言Smalltalk-80發(fā)明的一種軟件設(shè)計(jì)模式。最近幾年被推薦為Oracle旗下Sun公司JavaEE平臺(tái)的設(shè)計(jì)模式,并且越來(lái)越多的使用ColdFusion和PHP的開(kāi)發(fā)者喜歡使用MVC。MVC模式是一個(gè)有用的工具箱,它既有優(yōu)點(diǎn)又有缺點(diǎn)。MVC是如何工作的:MVC強(qiáng)制性的使應(yīng)用程序的輸入、處理和輸出分開(kāi),它是一個(gè)設(shè)計(jì)模式。使用MVC應(yīng)用程序被分成三個(gè)核心部件:模型、視圖、控制器。它們各自處理自己的任務(wù)。下圖介紹了這幾個(gè)模塊的功能以及之間的關(guān)系。圖2-3MVC設(shè)計(jì)模式圖MVC的優(yōu)缺點(diǎn):(1)低耦合性。視圖層和業(yè)務(wù)層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼,同樣,一個(gè)應(yīng)用的業(yè)務(wù)流程或者業(yè)務(wù)規(guī)則的改變只需要改動(dòng)MVC的模型層即可。因?yàn)槟P团c控制器和視圖相分離,所以很容易改變應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則。(2)高重用性和可適用性。隨著技術(shù)的不斷進(jìn)步,現(xiàn)在需要用越來(lái)越多的方式來(lái)訪問(wèn)應(yīng)用程序。MVC模式允許你使用各種不同樣式的視圖來(lái)訪問(wèn)同一個(gè)服務(wù)器端的代碼。它包括任何WEB(HTTP)瀏覽器或者無(wú)線瀏覽器(WAP),比如,用戶可以通過(guò)電腦也可通過(guò)手機(jī)來(lái)訂購(gòu)某樣產(chǎn)品,雖然訂購(gòu)的方式不一樣,但處理訂購(gòu)產(chǎn)品的方式是一樣的。由于模型返回的數(shù)據(jù)沒(méi)有進(jìn)行格式化,所以同樣的構(gòu)件能被不同的界面使用。例如,很多數(shù)據(jù)可能用HTML來(lái)表示,但是也有可能用WAP來(lái)表示,而這些表示所需要的命令是改變視圖層的實(shí)現(xiàn)方式,而控制層和模型層無(wú)需做任何改變。(3)較低的生命周期成本。MVC使開(kāi)發(fā)和維護(hù)用戶接口的技術(shù)含量降低。(4)快速的部署。使用MVC模式使開(kāi)發(fā)時(shí)間得到相當(dāng)大的縮減,它使Java開(kāi)發(fā)人員集中精力于業(yè)務(wù)邏輯,HTML和JSP開(kāi)發(fā)人員集中精力于表現(xiàn)形式上。(5)可維護(hù)性。分離視圖層和業(yè)務(wù)邏輯層也使得WEB應(yīng)用更易于維護(hù)和修改。有利于軟件工程化管理由于不同的層各司其職,每一層不同的應(yīng)用具有某些相同的特征,有利于通過(guò)工程化、工具化管理程序代碼。MVC的缺點(diǎn)是由于它沒(méi)有明確的定義,所以完全理解MVC并不是很容易。使用MVC需要精心的計(jì)劃,由于它的內(nèi)部原理比較復(fù)雜,所以需要花費(fèi)一些時(shí)間去思考。根據(jù)開(kāi)發(fā)者經(jīng)驗(yàn),由于開(kāi)發(fā)者將一個(gè)應(yīng)用程序分成了三個(gè)部件,所以使用MVC同時(shí)也意味著你將要管理比以前更多的文件,這一點(diǎn)是顯而易見(jiàn)的。這樣好像我們的工作量增加了,但是請(qǐng)記住這與其所能帶來(lái)的好處相比是不值一提。MVC并不適合小型甚至中等規(guī)模的應(yīng)用程序,花費(fèi)大量時(shí)間將MVC應(yīng)用到規(guī)模并不是很大的應(yīng)用程序通常會(huì)得不償失。為什么要使用MVC:大部分Web應(yīng)用程序都是用像ASP,PHP,或者CFML這樣的過(guò)程化(自PHP5.0版本后已全面支持面向?qū)ο竽P?語(yǔ)言來(lái)創(chuàng)建的。它們將像數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)句這樣的數(shù)據(jù)層代碼和像HTML這樣的表示層代碼混在一起。經(jīng)驗(yàn)比較豐富的開(kāi)發(fā)者會(huì)將數(shù)據(jù)從表示層分離開(kāi)來(lái),但這通常不是很容易做到的,它需要精心的計(jì)劃和不斷的嘗試。MVC從根本上強(qiáng)制性的將它們分開(kāi)。盡管構(gòu)造MVC應(yīng)用程序需要一些額外的工作,但是它給我們帶來(lái)的好處是毋庸置疑的。首先,最重要的一點(diǎn)是多個(gè)視圖能共享一個(gè)模型,現(xiàn)在需要用越來(lái)越多的方式來(lái)訪問(wèn)你的應(yīng)用程序。對(duì)此,其中一個(gè)解決之道是使用MVC,無(wú)論你的用戶想要Flash界面或是WAP界面;用一個(gè)模型就能處理它們。由于你已經(jīng)將數(shù)據(jù)和業(yè)務(wù)規(guī)則從表示層分開(kāi),所以你可以最大化的重用你的代碼了。由于模型返回的數(shù)據(jù)沒(méi)有進(jìn)行格式化,所以同樣的構(gòu)件能被不同界面使用。MVC設(shè)計(jì)模式是一個(gè)很好創(chuàng)建軟件的途徑,它所提倡的一些原則,像內(nèi)容和顯示互相分離可能比較好理解。但是如果你要隔離模型、視圖和控制器的構(gòu)件,你可能需要重新思考你的應(yīng)用程序,尤其是應(yīng)用程序的構(gòu)架方面。如果你肯接受MVC,并且有能力應(yīng)付它所帶來(lái)的額外的工作和復(fù)雜性,MVC將會(huì)使你的軟件在健壯性、代碼重用和結(jié)構(gòu)方面上一個(gè)新的臺(tái)階。系統(tǒng)需求分析3.1系統(tǒng)總體需求分析在本章,主要對(duì)微博的設(shè)計(jì)與開(kāi)發(fā)進(jìn)行詳細(xì)的需求與分析。本系統(tǒng)對(duì)數(shù)字化信息資源的組織采用數(shù)據(jù)庫(kù)。系統(tǒng)的數(shù)據(jù)庫(kù)結(jié)構(gòu)是關(guān)系數(shù)據(jù)庫(kù)MySQL,使用JSP平臺(tái)作為前臺(tái)開(kāi)發(fā)。目前,最完備的面向?qū)ο笳Z(yǔ)言就是JSP,其發(fā)展前景很可觀。MySQL數(shù)據(jù)庫(kù)的體積小,而且運(yùn)行速度快,總體擁有成本低,MySQL服務(wù)器是可靠的和易于使用的數(shù)據(jù)庫(kù)服務(wù)器,而且其是開(kāi)放源碼,并且支持SQL語(yǔ)法。從經(jīng)濟(jì)角度分析。對(duì)于一個(gè)普通的用戶來(lái)說(shuō),要想擁有一個(gè)微博,可以直接在Internet上注冊(cè)一個(gè)新浪微博或者是騰訊微博,這樣的微博都是免費(fèi)注冊(cè)的,對(duì)于用戶來(lái)說(shuō)及經(jīng)濟(jì)又實(shí)惠,是用戶擁有微博的最佳選擇。當(dāng)然,還有第二種方法可以擁有一個(gè)微博,就是自己去搭建,用戶可首先要買(mǎi)一個(gè)獨(dú)立的域名,然后購(gòu)買(mǎi)服務(wù)器托管在機(jī)房或者租用一個(gè)虛擬主機(jī),還需要下載一個(gè)開(kāi)放源碼的微博系統(tǒng)將其安裝在自己的服務(wù)器或者空間上,這種方法是需要花費(fèi)一定的費(fèi)用的,大概每年200元左右。對(duì)于普通的用戶來(lái)說(shuō),兩種方法相比起來(lái),顯然第二種方法不實(shí)用也不合算。因此,98%的用戶都會(huì)選擇直接在Internet上直接注冊(cè)開(kāi)通一個(gè)微博。微博在人們的生活中所扮演的角色。對(duì)于商人來(lái)說(shuō),微博是為他們制造利益的一種工具。怎么樣通過(guò)微博來(lái)推廣自己的產(chǎn)品等是這類(lèi)人所熱衷的。而對(duì)于一些普通用戶來(lái)說(shuō),微博只是一種娛樂(lè),他們可以在這里找到快樂(lè)。而對(duì)于機(jī)構(gòu)而言,提高自己的知名度從而吸引更多的消費(fèi)者就是他們的目的。從技術(shù)角度分析。在我們以往所學(xué)過(guò)的課程中,《JAVA語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,《數(shù)據(jù)庫(kù)原理》,《操作系統(tǒng)知識(shí)》,《網(wǎng)絡(luò)基礎(chǔ)》等為此課題的設(shè)計(jì)與開(kāi)發(fā)提供了堅(jiān)實(shí)的基礎(chǔ)。JSP也是一種簡(jiǎn)單的語(yǔ)言,對(duì)于會(huì)使用HTML語(yǔ)言的人來(lái)說(shuō)JSP很容易懂,所以技術(shù)難度并不高。微博,作為一個(gè)很典型的Web應(yīng)用,其開(kāi)發(fā)所遇到的所有技術(shù)難題已經(jīng)分析到,有好的平臺(tái)和數(shù)據(jù)庫(kù),對(duì)于這樣的問(wèn)題會(huì)很好解決。從操作角度分析。在整個(gè)系統(tǒng)的開(kāi)發(fā)中,能否很好的掌握開(kāi)發(fā)的進(jìn)度,能否科學(xué)的分配時(shí)間與資源,能否使系統(tǒng)的開(kāi)發(fā)不間斷從而使得其能有條不紊的進(jìn)行是分析的重點(diǎn)。只要在開(kāi)發(fā)之前做好充足的準(zhǔn)備工作,制定好完善的計(jì)劃,在開(kāi)發(fā)中根據(jù)實(shí)際情況進(jìn)行修改和完善,在操作中就不會(huì)出現(xiàn)問(wèn)題。綜上所述:如果有良好的經(jīng)濟(jì)支撐和技術(shù)支持,外加操作上的支持,此系統(tǒng)就會(huì)達(dá)到預(yù)期的效果。此系統(tǒng)的開(kāi)發(fā)工具具有投入少、周期短、見(jiàn)效快和以控制的特點(diǎn),所以此系統(tǒng)完全可以開(kāi)發(fā)。3.2系統(tǒng)開(kāi)發(fā)設(shè)計(jì)思想本系統(tǒng)采用的是典型的J2EE平臺(tái)下的MVC三層結(jié)構(gòu),分為模型層(Model),視圖層(View),控制層(Controller)。為了實(shí)現(xiàn)MVC這種三層結(jié)構(gòu),本系統(tǒng)采用了目前廣泛流行的MVC框架Struts。本系統(tǒng)的控制層是Struts的核心類(lèi)org.apache.struts.action.ActionServlet,它根據(jù)struts-config.xml中的配置分發(fā)請(qǐng)求和請(qǐng)求處理完成后系統(tǒng)頁(yè)面的相應(yīng)的跳轉(zhuǎn)。本系統(tǒng)的模型層是相應(yīng)的Java實(shí)體類(lèi)和業(yè)務(wù)邏輯類(lèi),這些類(lèi)是本系統(tǒng)實(shí)現(xiàn)的基礎(chǔ)和根本。本系統(tǒng)的視圖層是傳統(tǒng)的JSP技術(shù),它將后臺(tái)處理完成的數(shù)據(jù)進(jìn)行進(jìn)一步處理,使其適合頁(yè)面的顯示,并根據(jù)業(yè)務(wù)要求的不同,動(dòng)態(tài)的顯示這些數(shù)據(jù),JSP技術(shù)自1999年問(wèn)世以來(lái),經(jīng)過(guò)多年的發(fā)展,其廣泛的應(yīng)用和穩(wěn)定的表現(xiàn),為其作為表現(xiàn)層技術(shù)打下了堅(jiān)實(shí)的基礎(chǔ)。所以本系統(tǒng)采用JSP作為本系統(tǒng)的視圖層。3.3系統(tǒng)功能結(jié)構(gòu)此系統(tǒng)的主要模塊有五個(gè),分別是:我的微博模塊、個(gè)人中心模塊、最新動(dòng)態(tài)模塊、留言板模塊和幫助中心模塊。在我的微博模塊中有查看我的微博和查看我的好友功能,還有更多設(shè)置功能;在個(gè)人中心模塊中具體分為完善資料功能和對(duì)密碼的操作;在最新動(dòng)態(tài)模塊中可以發(fā)表微博和查看歷史微博內(nèi)容;在留言板模塊中可以發(fā)表留言和查看歷史留言信息等;而幫助模塊中主要是對(duì)一些常見(jiàn)問(wèn)題進(jìn)行解答。系統(tǒng)總體用例圖如下:圖3-1系統(tǒng)總用例圖3.3.1我的微博模塊功能分析在我的微博模塊中有查看我的微博和查看我的好友功能,還有更多設(shè)置功能。在這個(gè)模塊中用戶可以根據(jù)自己的需求選擇相應(yīng)的功能進(jìn)行使用,具體如下圖:圖3-2我的微博模塊用例圖在這里,查看我的微博功能可以跳轉(zhuǎn)到微博信息界面,用戶可以查看歷史的微博信息并對(duì)其進(jìn)行操作。查看我的好友功能可以跳轉(zhuǎn)到好友信息界面,可以查看好友的詳信息并且對(duì)好友進(jìn)行相應(yīng)的操作。更多設(shè)置功能是跳轉(zhuǎn)到個(gè)人中心界面,可以對(duì)個(gè)人信息等信息進(jìn)行操作。3.3.2個(gè)人中心模塊功能分析在個(gè)人中心模塊中可以對(duì)好友進(jìn)行管理,還可以完善用戶的基本信息和密碼修改等操作。圖3-3個(gè)人中心模塊用例圖在好友管理功能中用戶可以查看所有好友,還可以查看好友的詳細(xì)信息,當(dāng)然還可以根據(jù)關(guān)鍵字查找好友來(lái)添加好友,刪除好友等。如圖3-4。圖3-4好友管理用例圖在完善資料功能中用戶可以查看自己的資料并且對(duì)其進(jìn)行修改等操作。圖3-5完善資料功能用例圖在密碼操作功能中,用戶可以修改自己的密碼,首先用戶需要填寫(xiě)原密碼,如果原密碼不正確將不能進(jìn)行修改密碼操作,如果原密碼正確則需要輸入新密碼和再次輸入新密碼,如果兩次輸入不一樣也會(huì)給出相應(yīng)的提示并且不能進(jìn)行修改操作。密碼保護(hù)功能就是需要用戶來(lái)選擇一些密碼問(wèn)題來(lái)進(jìn)行保存,也可以自己寫(xiě)問(wèn)題來(lái)寫(xiě)出相應(yīng)答案,可用于密碼找回和保護(hù)。圖3-6密碼操作功能用例圖3.3.3最新動(dòng)態(tài)模塊功能分析最新動(dòng)態(tài)模塊。用戶可以在最新動(dòng)態(tài)模塊中發(fā)表微博信息,還可以查看歷史微博信息并對(duì)其進(jìn)行操作。圖3-7最新動(dòng)態(tài)模塊用例圖3.3.4留言板模塊功能分析留言板模塊。用戶可以在留言板模塊中發(fā)表留言信息,還可以查看歷史留言信息并對(duì)其進(jìn)行操作。圖3-8留言板模塊用例圖3.3.5幫助中心模塊功能分析在幫助中心這個(gè)模塊中主要是針對(duì)一些常見(jiàn)問(wèn)題進(jìn)行解答。例如對(duì)于初用者的提問(wèn)最多莫過(guò)于“如何使用微博系統(tǒng)”、“如何發(fā)表微博信息”等,還有就是主要的一些微博規(guī)則等。圖3-9幫助中心模塊用例圖3.4系統(tǒng)的操作過(guò)程1.首先,用戶會(huì)進(jìn)入到系統(tǒng)的登錄界面,此時(shí)要求用戶輸入賬號(hào)和密碼,只有存在并且正確的賬號(hào)和密碼才能通過(guò)驗(yàn)證并進(jìn)入到系統(tǒng)使用頁(yè)面。2.如果用戶沒(méi)有賬號(hào),可以直接注冊(cè),注冊(cè)時(shí)只需要填寫(xiě)用戶名和密碼就好,進(jìn)入系統(tǒng)使用頁(yè)面后繼續(xù)補(bǔ)充好其他信息即可。3.登錄完成后進(jìn)入系統(tǒng)操作頁(yè)面,用戶可以根據(jù)自己的需求選擇我的微博、個(gè)人中心、最新動(dòng)態(tài)、留言板、幫助中心功能,選擇之后可以選擇進(jìn)一步的子功能。4.選擇相應(yīng)子功能后瀏覽器中會(huì)顯示相應(yīng)的操作供用戶操作。5.使用完畢后點(diǎn)擊退出,此時(shí)會(huì)彈出對(duì)話框詢(xún)問(wèn)用戶是否真的退出,點(diǎn)擊“是”則退出系統(tǒng),直接返回到系統(tǒng)登錄時(shí)的界面;點(diǎn)擊“否”則留在剛剛的界面。3.5系統(tǒng)總體結(jié)構(gòu)圖個(gè)人中心個(gè)人中心微博留言板我的微博最新動(dòng)態(tài)幫助中心查看我的微博查看我的好友更多設(shè)置好友管理對(duì)一些常見(jiàn)問(wèn)題進(jìn)行解答完善資料密碼操作發(fā)表微博查看微博內(nèi)容發(fā)表留言查看留言信息圖3-10系統(tǒng)總體結(jié)構(gòu)圖3.6數(shù)據(jù)庫(kù)的概念當(dāng)人們從不同的角度來(lái)描述這一概念時(shí)就有不同的定義(當(dāng)然是描述性的)。例如,稱(chēng)數(shù)據(jù)庫(kù)是一個(gè)“記錄保存系統(tǒng)”(該定義強(qiáng)調(diào)了數(shù)據(jù)庫(kù)是若干記錄的集合)。又如稱(chēng)數(shù)據(jù)庫(kù)是“人們?yōu)榻鉀Q特定的任務(wù),以一定的組織方式存儲(chǔ)在一起的相關(guān)的數(shù)據(jù)的集合”(該定義側(cè)重于數(shù)據(jù)的組織)。更有甚者稱(chēng)數(shù)據(jù)庫(kù)是“一個(gè)數(shù)據(jù)倉(cāng)庫(kù)”。當(dāng)然,這種說(shuō)法雖然形象,但并不嚴(yán)謹(jǐn)。嚴(yán)格地說(shuō),數(shù)據(jù)庫(kù)是“按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù)”。在經(jīng)濟(jì)管理的日常工作中,常常需要把某些相關(guān)的數(shù)據(jù)放進(jìn)這樣“倉(cāng)庫(kù)”,并根據(jù)管理的需要進(jìn)行相應(yīng)的處理。J.Martin給數(shù)據(jù)庫(kù)下了一個(gè)比較完整的定義:數(shù)據(jù)庫(kù)是存儲(chǔ)在一起的相關(guān)數(shù)據(jù)的集合,這些數(shù)據(jù)是結(jié)構(gòu)化的,無(wú)有害的或不必要的冗余,并為多種應(yīng)用服務(wù);數(shù)據(jù)的存儲(chǔ)獨(dú)立于使用它的程序;對(duì)數(shù)據(jù)庫(kù)插入新數(shù)據(jù),修改和檢索原有數(shù)據(jù)均能按一種公用的和可控制的方式進(jìn)行。當(dāng)某個(gè)系統(tǒng)中存在結(jié)構(gòu)上完全分開(kāi)的若干個(gè)數(shù)據(jù)庫(kù)時(shí),則該系統(tǒng)包含一個(gè)數(shù)據(jù)庫(kù)集合”。3.7數(shù)據(jù)庫(kù)E-R圖概念模型是對(duì)信息世界建模,其表示方法有很多,其中最為常用的是實(shí)體-聯(lián)系模型,即E-R模型,它是用E-R圖來(lái)描述現(xiàn)實(shí)世界的概念模型。E-R圖中用矩形表示實(shí)體,用橢圓表示屬性,用菱形表示聯(lián)系。E-R圖顯示了要建模的數(shù)據(jù)內(nèi)部及數(shù)據(jù)之間的相互關(guān)系。本系統(tǒng)表示實(shí)體及其聯(lián)系的總體E-R圖,見(jiàn)圖3-2。圖3-11系統(tǒng)總體E-R圖3.8系統(tǒng)界面設(shè)計(jì)本系統(tǒng)是Web應(yīng)用,所以采用CSS(層疊樣式表)+DIV模式和框架結(jié)構(gòu),可以通過(guò)簡(jiǎn)單的更改CSS文件,改變網(wǎng)頁(yè)的整體表現(xiàn)形式,可以減少我們的工作量。采用CSS+DIV進(jìn)行網(wǎng)頁(yè)重構(gòu)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)管理系統(tǒng)開(kāi)發(fā)合作協(xié)議
- 農(nóng)業(yè)科技推廣應(yīng)用案例分析
- 維修服務(wù)委托合同
- 金融產(chǎn)品開(kāi)發(fā)合作協(xié)議
- 旅游行業(yè)游客安全與責(zé)任免除合同
- 學(xué)生自制動(dòng)漫電影小感悟
- 昆蟲(chóng)記的讀后感
- 食品營(yíng)養(yǎng)與健康功能性食品知識(shí)點(diǎn)題集
- 寵物行業(yè)智能門(mén)店與健康管理方案
- 市場(chǎng)營(yíng)銷(xiāo)策略效果評(píng)估表格模板(行業(yè)A)
- 2025年哈爾濱鐵道職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)1套
- 國(guó)網(wǎng)公司安全責(zé)任清單
- 2025屆高考百日誓師大會(huì)校長(zhǎng)發(fā)言稿
- 膀胱癌護(hù)理疑難病例討論
- 2025年春期六年級(jí)班主任工作計(jì)劃
- 2025年江西電力職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 譯林版小學(xué)英語(yǔ)四年級(jí)上冊(cè)單詞表(分單元含音標(biāo))
- 2025年江蘇無(wú)錫市屬?lài)?guó)有企業(yè)招聘筆試參考題庫(kù)含答案解析
- 2025新人教版語(yǔ)文七年級(jí)下冊(cè)《第四單元》大單元整體教學(xué)設(shè)計(jì)2022課標(biāo)
- 2024年非高危行業(yè)生產(chǎn)經(jīng)營(yíng)單位主要負(fù)責(zé)人及安全管理人員安全生產(chǎn)知識(shí)和管理能力試題庫(kù)附答案
- 《慢性腎臟病相關(guān)心肌病綜合管理中國(guó)專(zhuān)家共識(shí)(2024版)》解讀
評(píng)論
0/150
提交評(píng)論