基于j2ee的倉庫管理信息系統(tǒng)畢業(yè)論文_第1頁
已閱讀1頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科生畢業(yè)論文</b></p><p><b>  目 錄</b></p><p><b>  摘 要1</b></p><p>  ABSTRACT2</p><p><b>  第一章 緒論3</b></p&g

2、t;<p>  1.1倉庫管理信息系統(tǒng)開發(fā)的背景3</p><p>  1.2倉庫管理信息系統(tǒng)開發(fā)的意義3</p><p>  1.3論文的內(nèi)容和結(jié)構(gòu)4</p><p>  第二章 相關(guān)技術(shù)6</p><p>  2.1 J2EE平臺(tái)6</p><p>  2.1.1 J2EE平臺(tái)簡介6<

3、;/p><p>  2.1.2 MVC組件簡介7</p><p>  2.1.3 持久層組件簡介9</p><p>  2.2 MVC模式11</p><p>  2.2.1 MVC概述11</p><p>  2.2.2為什么選擇MVC12</p><p>  第三章 系統(tǒng)總體分析與設(shè)計(jì)

4、13</p><p>  3.1 需求分析13</p><p>  3.1.1 系統(tǒng)概述與目標(biāo)13</p><p>  3.1.2 系統(tǒng)功能性需求14</p><p>  3.1.3 系統(tǒng)非功能性需求16</p><p>  3.2 系統(tǒng)功能分析16</p><p>  3.2.1

5、系統(tǒng)功能結(jié)構(gòu)16</p><p>  3.2.2 系統(tǒng)功能流程17</p><p>  3.3 數(shù)據(jù)庫設(shè)計(jì)18</p><p>  3.3.1 數(shù)據(jù)庫需求分析18</p><p>  3.3.2 數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)18</p><p>  3.4 系統(tǒng)技術(shù)架構(gòu)設(shè)計(jì)21</p><p> 

6、 3.4.1 系統(tǒng)邏輯結(jié)構(gòu)設(shè)計(jì)21</p><p>  3.4.2 技術(shù)方案實(shí)現(xiàn)22</p><p>  第四章 系統(tǒng)功能模塊的具體實(shí)現(xiàn)24</p><p>  4.1 數(shù)據(jù)持久化層24</p><p>  4.1.1 持久化層的工作流程24</p><p>  4.1.2 透過實(shí)例來看持久化層24<

7、/p><p>  4.2 業(yè)務(wù)邏輯層28</p><p>  4.2.1 業(yè)務(wù)邏輯層的工作流程28</p><p>  4.2.2 透過實(shí)例來看業(yè)務(wù)邏輯層30</p><p>  第五章 結(jié)束語34</p><p><b>  5.1總結(jié)34</b></p><p>

8、<b>  5.2展望35</b></p><p><b>  參考文獻(xiàn)36</b></p><p><b>  附錄37</b></p><p><b>  摘 要</b></p><p>  倉庫管理在企業(yè)的整個(gè)供應(yīng)鏈中起著至關(guān)重要的作用,如果不

9、能保證正確的進(jìn)貨和庫存控制及發(fā)貨,將會(huì)導(dǎo)致管理費(fèi)用的增加,服務(wù)質(zhì)量難以得到保證,從而影響企業(yè)的競爭力。傳統(tǒng)簡單、靜態(tài)的倉儲(chǔ)管理已無法保證企業(yè)各種資源的高效利用。如今的倉庫作業(yè)和庫存控制作業(yè)已十分復(fù)雜化多樣化,僅靠人工記憶和手工錄入,不但費(fèi)時(shí)費(fèi)力,而且容易出錯(cuò),給企業(yè)帶來巨大損失。有鑒于此,需要為倉庫管理活動(dòng)實(shí)現(xiàn)系統(tǒng)管理化。J2EE(Java 2 Platform,Enterprise Edition)技術(shù)作為一種建立企業(yè)跨平臺(tái)應(yīng)用的標(biāo)準(zhǔn)

10、技術(shù)平臺(tái),得到了極其廣泛的應(yīng)用。同時(shí)它也是一個(gè)很優(yōu)秀的企業(yè)應(yīng)用解決方案,它能讓開發(fā)人員開發(fā)出非常穩(wěn)定、健壯的企業(yè)級(jí)應(yīng)用系統(tǒng)。在開發(fā)的過程中,MVC模式的應(yīng)用同樣具有非常重要的意義,因?yàn)樵跇?gòu)建一個(gè)成功的企業(yè)應(yīng)用的時(shí)候,良好的模式運(yùn)用是系統(tǒng)成功的關(guān)鍵所在。MVC(Model/View/Controller)模式是軟件工程學(xué)中一個(gè)非常重要的設(shè)計(jì)模式,它為交互式系統(tǒng)提供了一個(gè)十分優(yōu)秀的開發(fā)模型,它對類和對象依據(jù)功能的不同的分離分層使系統(tǒng)開發(fā)變得

11、很靈活,同時(shí)又提升了系統(tǒng)設(shè)計(jì)的可重用性。該倉庫管理信息系統(tǒng)是一個(gè)小</p><p>  關(guān)鍵詞:倉庫管理;J2EE;MVC</p><p><b>  ABSTRACT</b></p><p>  Warehouse management plays a vital role in the enterprise's entire sup

12、ply chain, if you can not guarantee the right to purchase and inventory control and shipping, will lead to the increase in management fees, service quality is difficult to be guaranteed, thus affecting the competitivenes

13、s of enterprises. Traditional simple static storage management has been unable to guarantee the efficient use of resources. Today's warehouse operations and inventory control operations have been very complicat</p

14、><p>  Keywords:warehouse management;J2EE;MVC</p><p><b>  第一章 緒論</b></p><p>  1.1倉庫管理信息系統(tǒng)開發(fā)的背景</p><p>  傳統(tǒng)的倉庫管理(Warehouse Management)大部分工作以手工為主,增值業(yè)務(wù)少有開展。為了進(jìn)一步提

15、升公司的管理水平,完成在全公司范圍內(nèi)的全面實(shí)施信息化管理,實(shí)現(xiàn)整個(gè)公司內(nèi)部信息共享的目標(biāo)[1]。目前面臨的困難就是:缺乏信息化的服務(wù)手段,那樣就會(huì)丟失客戶、丟失市場。因此,在目前所有的改造中,信息化改造首要先行。從目前的情況來看世界經(jīng)濟(jì)正處于變革的重大轉(zhuǎn)折時(shí)期,在全球范圍內(nèi)進(jìn)行著一場經(jīng)濟(jì)結(jié)構(gòu)調(diào)整的潮流[2]。在這其中,出現(xiàn)了與IT技術(shù)相結(jié)合的,實(shí)行現(xiàn)代管理的企業(yè)。倉庫管理作為一種先進(jìn)的組織方式,被世界各國所廣泛采用,并且形成了一種新興的

16、產(chǎn)業(yè),在國民經(jīng)濟(jì)發(fā)展的步伐中扮演著重要的角色。每筆成功的交易都須具備了三個(gè)基本要素:即倉庫管理、信息流及資金流。其中,倉庫管理是基礎(chǔ),在信息化高度發(fā)展的網(wǎng)絡(luò)營銷年代,倉庫管理與信息技術(shù)的配合變得越來越重要了[3]。于是,在供應(yīng)鏈管理中必然要用到越來越多的倉庫管理結(jié)合了信息管理的技術(shù)。只有商品真正轉(zhuǎn)移到消費(fèi)者手中,即:只有通過倉庫管理的過程,商務(wù)活動(dòng)才能夠得以發(fā)展。網(wǎng)絡(luò)營銷的核心是信息化,這個(gè)信息化不僅體現(xiàn)在選擇商品的支付上,也充分體現(xiàn)在

17、倉庫管理的</p><p>  倉庫管理是供應(yīng)鏈管理中的重要環(huán)節(jié),并且被作為現(xiàn)代經(jīng)濟(jì)的重要組成部分及最為經(jīng)濟(jì)合理的綜合服務(wù)模式,正在迅速的發(fā)展[4]。要成為具有競爭力的市場主力,就必須用信息技術(shù)塑造先進(jìn)的倉庫管理服務(wù)。</p><p>  1.2倉庫管理信息系統(tǒng)開發(fā)的意義</p><p>  倉庫管理信息系統(tǒng)不但能使倉庫管理企業(yè)走上科學(xué)化、網(wǎng)絡(luò)化管理的道路,而且能夠

18、為企業(yè)帶來巨大的經(jīng)濟(jì)效益及管理方式上的發(fā)展。</p><p>  從管理方式上講,系統(tǒng)采用B/S模式部署,用現(xiàn)代化的管理方法,倉庫管理人員在操作過程中能夠快捷地查找貨物信息、客戶訂單以及客戶信息;能夠?qū)ω浳镞M(jìn)行全程跟蹤,了解貨物的托運(yùn)細(xì)節(jié)情況,從而使企業(yè)能夠根據(jù)實(shí)際的情況,做好運(yùn)營過程中的各項(xiàng)準(zhǔn)備工作,并對突發(fā)事件做出及時(shí)和準(zhǔn)確的調(diào)整;能夠確保托運(yùn)人以及收貨人對貨物進(jìn)行及時(shí)處理[5]。</p>&l

19、t;p>  從經(jīng)濟(jì)性上講,該倉庫管理信息系統(tǒng)的業(yè)務(wù)流程規(guī)范、科學(xué),界面友好,操作環(huán)境便捷,將為企業(yè)帶來更多的客戶資源,樹立企業(yè)的品牌形象,提升企業(yè)的經(jīng)濟(jì)效益[6]。</p><p>  1.3論文的內(nèi)容和結(jié)構(gòu)</p><p>  首先在緒論里,介紹倉庫管理信息系統(tǒng)開發(fā)的背景及國內(nèi)外開發(fā)應(yīng)用的現(xiàn)狀,闡明倉庫管理信息系統(tǒng)對于企業(yè)的重要性。</p><p>  其次

20、,對實(shí)現(xiàn)此系統(tǒng)用到的技術(shù)進(jìn)行簡介。第一,介紹了J2EE平臺(tái)。對于J2EE平臺(tái),從J2EE平臺(tái)的概念及J2EE平臺(tái)的體系架構(gòu)兩方面,進(jìn)行了概述;對于MVC組件及ORM組件,則從他們的實(shí)現(xiàn)、工作流程及機(jī)制、優(yōu)缺點(diǎn)及為什么要使用他們進(jìn)行了闡述。第二,從軟件開發(fā)模式、MVC模式概述、MVC模式在Web上的應(yīng)用情況及MVC模式的好處等幾方面[7],簡述了MVC模式。</p><p>  再次,根據(jù)系統(tǒng)需求分析及功能分析,進(jìn)

21、行數(shù)據(jù)庫設(shè)計(jì)及系統(tǒng)技術(shù)架構(gòu)設(shè)計(jì)。第一,從系統(tǒng)概述與目標(biāo)、系統(tǒng)功能性需求、系統(tǒng)非功能性需求共三方面,進(jìn)行了系統(tǒng)的需求分析,并從系統(tǒng)功能模塊劃分以及系統(tǒng)流程等兩方面,進(jìn)行了系統(tǒng)功能的分析。第二,結(jié)合系統(tǒng)需求分析及系統(tǒng)功能分析,從數(shù)據(jù)庫需求分析、數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)等兩方面,進(jìn)行了數(shù)據(jù)庫設(shè)計(jì)。第四,從邏輯結(jié)構(gòu)設(shè)計(jì)、技術(shù)方案實(shí)現(xiàn)等方面,進(jìn)行系統(tǒng)技術(shù)架構(gòu)設(shè)計(jì)。在進(jìn)行系統(tǒng)邏輯結(jié)構(gòu)設(shè)計(jì)時(shí),從邏輯結(jié)構(gòu)分析、表示層設(shè)計(jì)、控制層設(shè)計(jì)、業(yè)務(wù)邏輯層設(shè)計(jì)、持久層設(shè)計(jì)等

22、五個(gè)方面,進(jìn)行了探討;在闡述技術(shù)方案時(shí),從配置web.xml文件、配置mvc.xml文件、c3p0數(shù)據(jù)池的配置文件、Action的編寫過程、業(yè)務(wù)邏輯編寫過程、持久層設(shè)計(jì)以及視圖層開發(fā)技術(shù)等七個(gè)方面,進(jìn)行了介紹。</p><p>  進(jìn)行模塊設(shè)計(jì)時(shí),采用J2EE開發(fā)規(guī)范以及MVC框架,分為Controller(控制器)、Model(模型)、View(視圖)三層[8]。其中,Controller的作用是從客戶端接受請

23、求,并且選擇執(zhí)行相應(yīng)的業(yè)務(wù)邏輯,然后把響應(yīng)結(jié)果送回到客戶端;Model層實(shí)現(xiàn)業(yè)務(wù)邏輯;View層是應(yīng)用程序中用戶界面相關(guān)的部分,負(fù)責(zé)向用戶顯示數(shù)據(jù),并且能接收用戶的輸入數(shù)據(jù)。</p><p>  最后,對該倉庫管理信息系統(tǒng)設(shè)計(jì)進(jìn)行了總結(jié),并對該倉庫管理信息系統(tǒng)應(yīng)用前景進(jìn)行了展望。</p><p>  論文的總體結(jié)構(gòu)如下:</p><p>  第一章簡述論文背景以及論

24、文的內(nèi)容及意義。</p><p>  第二章闡述開發(fā)該倉庫管理信息系統(tǒng)的平臺(tái)和用到的技術(shù)。</p><p>  第三章內(nèi)容為該倉庫管理信息系統(tǒng)需求分析和系統(tǒng)總體設(shè)計(jì),數(shù)據(jù)庫設(shè)計(jì)。</p><p>  第四章對該倉庫管理信息系統(tǒng)的各個(gè)模塊的實(shí)現(xiàn)進(jìn)行了詳述。</p><p>  第五章對該倉庫管理信息系統(tǒng)設(shè)計(jì)進(jìn)行了總結(jié),并對該系統(tǒng)應(yīng)用前景進(jìn)行了展

25、望。</p><p><b>  第二章 相關(guān)技術(shù)</b></p><p>  2.1 J2EE平臺(tái)</p><p>  2.1.1 J2EE平臺(tái)簡介</p><p>  J2EE可以說指Java在數(shù)據(jù)庫信息系統(tǒng)上實(shí)現(xiàn),數(shù)據(jù)庫信息系統(tǒng)從早期的dBase、到Delphi/VB等C/S結(jié)構(gòu),發(fā)展到B/S(Browser瀏覽器

26、/Server服務(wù)器)結(jié)構(gòu),而J2EE主要是指B/S結(jié)構(gòu)的實(shí)現(xiàn)。</p><p>  J2EE主要是為企業(yè)級(jí)開發(fā)提供了一種設(shè)計(jì)模式,sun在每個(gè)領(lǐng)域給了一個(gè)設(shè)計(jì)模式,象嵌入式平臺(tái)的J2ME,桌面平臺(tái)的J2SE。在一個(gè)規(guī)范的J2EE架構(gòu)中,不同層的數(shù)據(jù)表示應(yīng)該被限制在層內(nèi),而不應(yīng)該擴(kuò)散到其它層,這樣可以降低層間的耦合性,提高J2EE架構(gòu)整體的可維護(hù)性和可擴(kuò)展性。比如說Web層的邏輯進(jìn)行了修改,那么只需要修改Form

27、Bean的結(jié)構(gòu),而不需要觸動(dòng)業(yè)務(wù)層和持久層的代碼修改。同樣的,當(dāng)數(shù)據(jù)庫表進(jìn)行了小的調(diào)整,那么也只需要修改持久層數(shù)據(jù)表示,而不需要觸動(dòng)業(yè)務(wù)層代碼和Web層代碼。</p><p>  J2EE技術(shù)在應(yīng)用時(shí)都涉及兩個(gè)部分:容器部分和應(yīng)用部分,Web容器也是指Jsp/Servlet容器,你如果要開發(fā)一個(gè)Web應(yīng)用,無論是編譯或運(yùn)行,都必須要有Jsp/Servlet庫或API支持(除了JDK/J2SE以外)。在許多企業(yè)級(jí)應(yīng)

28、用中,例如數(shù)據(jù)庫連接、郵件服務(wù)、事務(wù)處理等都是一些通用企業(yè)需求模塊,這些模塊如果每次再開發(fā)中都由開發(fā)人員來完成的話,將會(huì)造成開發(fā)周期長和代碼可靠性差等問題。于是許多大公司開發(fā)了自己的通用模塊服務(wù)。這些服務(wù)性的軟件系列統(tǒng)稱為中間件。為了通用必須要提出規(guī)范,不然無法達(dá)到通用在上面的需求基礎(chǔ)之上,許多公司都開發(fā)了自己的中間件,但其與用戶的溝通都各有不同,從而導(dǎo)致用戶無法將各個(gè)公司不同的中間件組裝在一塊為自己服務(wù)。從而產(chǎn)生瓶頸。于是提出標(biāo)準(zhǔn)的概

29、念。所以說,J2EE就是基于JAVA技術(shù)的一系列標(biāo)準(zhǔn)。</p><p>  2.1.2 MVC組件簡介</p><p>  為什么我們在J2EE開發(fā)中需要框架?</p><p>  JSP、Servlet和JavaBean技術(shù)的出現(xiàn)給我們構(gòu)建強(qiáng)大的企業(yè)應(yīng)用系統(tǒng)提供了可能。在此之上,我們還需要一個(gè)規(guī)則,一個(gè)把這些技術(shù)有效的組織起來,讓系統(tǒng)繁而不亂的規(guī)則,這就是框架。S

30、truts應(yīng)運(yùn)而生,是最早的開源框架之一,而且很快成為實(shí)際標(biāo)準(zhǔn)。</p><p>  在J2EE平臺(tái)下,Struts是比較流行的MVC框架,但是本著DIY動(dòng)手能力及探索的精神,這一次沒有用到成熟的Struts來作為MVC框架,而是自己編寫簡單的MVC組件來解決問題[13]。</p><p>  “麻雀雖小五臟俱全”,這次絕不是“重復(fù)的造輪子”的過程,吸收了前輩Struts2的優(yōu)秀特性,結(jié)合

31、了其他MVC框架:尤其是“rails”的“約定優(yōu)于配置”的理念,讓這個(gè)DIY的MVC組件有著小巧,簡潔,方便使用的特性。</p><p>  在現(xiàn)如今大量的MVC框架里面,xml配置文件是很重要的,特別常見的,他們定義了一個(gè)請求的URL及處理該請求的對應(yīng)的Action的地址。但是,這也帶來了一些問題,很多時(shí)候這些繁雜的xml配置文件會(huì)讓人感到厭倦 。</p><p>  于是,我嘗試用其他

32、方法來替代這個(gè)方案:“利用約定來免除大量的配置文件”。先讓我們來看看這個(gè)MVC組件的工作機(jī)制[15]。</p><p>  在此組件中,控制器由MVCFilter及Controller來實(shí)現(xiàn),視圖由一組JSP文件與JSTL標(biāo)簽庫構(gòu)成。</p><p>  此MVC組件包含了以下重要部分:</p><p><b>  (1)視圖</b></

33、p><p>  視圖部分可以采用JSP來實(shí)現(xiàn)。在這些JSP文件中沒有業(yè)務(wù)邏輯,也沒有模型信息,只有標(biāo)簽,這些標(biāo)簽可以是標(biāo)準(zhǔn)的JSP標(biāo)簽或自定義的標(biāo)簽,如JSTL標(biāo)簽庫。</p><p><b> ?。?)控制器</b></p><p><b>  其工作流程如下——</b></p><p><b&

34、gt;  第一步:</b></p><p>  當(dāng)用戶通過視圖向服務(wù)器發(fā)送請求時(shí),請求URI會(huì)被一個(gè)Filter(servlet規(guī)范里的攔截器)攔截,這個(gè)Filter將攔截的URI進(jìn)行處理,根據(jù)從mvc.xml配置文件讀取的映射信息及已經(jīng)定義好的約定,就可以實(shí)現(xiàn)從URI到Action的映射。</p><p><b>  第二步:</b></p>

35、<p>  控制器找到了處理該請求的Action包路徑以后,運(yùn)用反射實(shí)例化之,并調(diào)用execute(來自于Action接口)方法來獲得返回視圖的地址。最后,控制器負(fù)責(zé)轉(zhuǎn)發(fā)視圖資源請求。</p><p> ?。?)區(qū)別于Struts2的地方</p><p>  在Struts2里面,用戶請求是通過核心攔截器來處理及轉(zhuǎn)發(fā)的。這需要一些描述用戶請求路徑及Action映射關(guān)系的配置信

36、息。這些配置映射信息都存儲(chǔ)在特定的XML文件Struts-config.xml中[16]。在該配置文件中,每一個(gè)Action的映射信息都通過一個(gè)<action>元素來配置。</p><p>  這些配置信息在系統(tǒng)啟動(dòng)的時(shí)候,被讀入內(nèi)存,供Struts在運(yùn)行期間使用。在內(nèi)存中,每一個(gè)<action>元素都對應(yīng)一個(gè)ActionMapping類的實(shí)例。</p><p> 

37、 現(xiàn)在,只要根據(jù)既定的約定(URI路徑對應(yīng)這相應(yīng)的Action包路徑),讀取存儲(chǔ)在mvc.xml文件里面的信息,就可以根據(jù)請求的URI映射到對應(yīng)的Action包路徑。從而免去了繁瑣的配置文件,集中精力負(fù)責(zé)其他的設(shè)計(jì)。</p><p>  這就是:“約定優(yōu)于配置”原則下的設(shè)計(jì)。</p><p>  MVC的優(yōu)缺點(diǎn),可以簡單總結(jié)如下:</p><p><b>

38、  (1)優(yōu)點(diǎn) </b></p><p>  衡量J2EE應(yīng)用系統(tǒng)設(shè)計(jì)開發(fā)水平高低的標(biāo)準(zhǔn)就是:解耦性;你的應(yīng)用系統(tǒng)各個(gè)功能是否能夠徹底脫離?是否不相互依賴,也只有這樣,才能體現(xiàn)可維護(hù)性、可拓展性的軟件設(shè)計(jì)目標(biāo)。為了達(dá)到這個(gè)目的,誕生各種框架概念,J2EE框架標(biāo)準(zhǔn)將一個(gè)系統(tǒng)劃分為WEB和EJB主要部分,當(dāng)然我們有時(shí)不是以這個(gè)具體技術(shù)區(qū)分,而是從設(shè)計(jì)上抽象為表現(xiàn)層、服務(wù)層和持久層,這三個(gè)層次從一個(gè)高度將J

39、2EE分離開來,實(shí)現(xiàn)解耦目的。應(yīng)用數(shù)據(jù)的表示應(yīng)該被限制在相應(yīng)的層內(nèi),而不擴(kuò)散到其它層,這樣可以降低數(shù)據(jù)在應(yīng)用層之間的耦合性,提升J2EE整體架構(gòu)的可維護(hù)性及可擴(kuò)展性。</p><p>  同時(shí),得益于JSTL標(biāo)簽庫的使用,拋棄了傳統(tǒng)的jsp標(biāo)簽(事實(shí)上,幾乎沒有正規(guī)的開發(fā)會(huì)用到j(luò)sp原始的標(biāo)簽了),能大大提升開發(fā)效率。</p><p>  約定優(yōu)于配置,通過一個(gè)配置文件里面的1行信息,即可

40、把握整個(gè)系統(tǒng)各部分之間的聯(lián)系,同時(shí)又避免了復(fù)雜的xml配置文件。這對于后期的維護(hù)有著莫大的好處,對團(tuán)隊(duì)合作開發(fā),這種優(yōu)勢體現(xiàn)得很突出。</p><p><b>  (2)缺點(diǎn) </b></p><p>  JSTL標(biāo)簽庫的一大優(yōu)勢是使得jsp頁面的開發(fā)更加簡單,但需要一個(gè)持續(xù)學(xué)習(xí)的過程,學(xué)習(xí)成本顯而易見。</p><p>  比起強(qiáng)大的Stru

41、ts2把視圖資源放置在xml文件里的特性,這個(gè)組件盡可能不使用配置文件,直接把視圖資源硬編碼到Action里面,這樣做的一個(gè)壞處是:每次要改變視圖資源的時(shí)候,必修重修修改Action的代碼,然后重新編譯。</p><p>  2.1.3 持久層組件簡介</p><p>  在Java中將對象自動(dòng)持久化到數(shù)據(jù)庫中,我們需要了解兩個(gè)概念。持久化:就是對數(shù)據(jù)和程序狀態(tài)的保持。大多數(shù)情況下特別是企

42、業(yè)級(jí)開發(fā)應(yīng)用時(shí),數(shù)據(jù)持久化往往也就意味著將內(nèi)存中的數(shù)據(jù)保存到磁盤上,就是把數(shù)據(jù)保存到可掉電式存儲(chǔ)設(shè)備中供之后使用。大多數(shù)情況下特別是企業(yè)級(jí)應(yīng)用,數(shù)據(jù)持久化往往也就意味著將內(nèi)存中的數(shù)據(jù)保存到磁盤上加以固化,而持久化的實(shí)現(xiàn)過程則大多通過各種關(guān)系數(shù)據(jù)庫來完成。那么持久層呢?延續(xù)思路,所謂“持久層”,也就是在系統(tǒng)邏輯層面上,專著于實(shí)現(xiàn)數(shù)據(jù)持久化的一個(gè)相對獨(dú)立的領(lǐng)域(Domain)。持久層是負(fù)責(zé)向(或者從)一個(gè)或者多個(gè)數(shù)據(jù)存儲(chǔ)器中存儲(chǔ)(或者獲?。?/p>

43、數(shù)據(jù)的一組類和組件。這個(gè)層必須包括一個(gè)業(yè)務(wù)領(lǐng)域?qū)嶓w的模型(即使只是一個(gè)元數(shù)據(jù)模型)。不過這里有一個(gè)字需要特別強(qiáng)調(diào),也就是所謂的“層”。對于應(yīng)用系統(tǒng)而言,數(shù)據(jù)持久功能大多是必不可少的組成部分。之所以要獨(dú)立出一個(gè)“持久層”的概念,而不是“持久模塊”,“持久單元”,也就意味著,我們的系統(tǒng)架構(gòu)中,應(yīng)該有一個(gè)相對獨(dú)立的邏輯層面,專著于數(shù)據(jù)持久化邏輯的實(shí)現(xiàn).與系統(tǒng)其他部分相對而言,這個(gè)層面應(yīng)該具有一個(gè)較為清晰和嚴(yán)格的邏輯邊界。</p>

44、<p>  對于一個(gè)框架,僅僅掌握它的使用方法還遠(yuǎn)沒達(dá)到目的,最重要的是:你是否能夠了解它的原理?;谶@點(diǎn),我想很有必要親自模擬并且實(shí)現(xiàn)ORM(持久層的組件,也就是所謂的:對象關(guān)系映射組件)框架最基本的,也是最核心的功能。</p><p>  先來看一下這個(gè)自行設(shè)計(jì)的ORM組件的簡單工作流程:</p><p>  在Service包(或者DAO組件里面)里,可以調(diào)用BaseDA

45、O來完成數(shù)據(jù)操作。而BaseDAO調(diào)用到了模版DAO(SuperDAO),在模版DAO里面,完成了以下功能:</p><p>  (1)根據(jù)DAO方法生成對應(yīng)的SQL語句。</p><p>  ORM組件的特點(diǎn)可以簡單總結(jié)如下:</p><p><b>  1.易用性</b></p><p>  O/R映射及數(shù)據(jù)的持久化

46、,更改維護(hù)在這里僅僅通過調(diào)用BaseDAO的各個(gè)方法就可以完成簡單的操作。大部分時(shí)候,都無需自己編寫SQL語句。</p><p><b>  2.開發(fā)靈活性</b></p><p>  開發(fā)靈活性高,例如,提供了查詢集合與對象的映射關(guān)系,具體操作數(shù)據(jù)庫全開放。</p><p><b>  3.系統(tǒng)運(yùn)行速度</b></

47、p><p>  在一個(gè)web系統(tǒng)里面常常會(huì)出現(xiàn)數(shù)據(jù)庫的訪問成為了整個(gè)系統(tǒng)的性能瓶頸。為了優(yōu)化性能,用到了c3p0數(shù)據(jù)池。這樣可以提升數(shù)據(jù)庫連接速度,另一方面,數(shù)據(jù)池的sql語句緩存,查詢statement緩存也成為了提升性能的途徑。</p><p><b>  2.2 MVC模式</b></p><p>  2.2.1 MVC概述</p>

48、;<p>  MVC是一種目前廣泛流行的軟件設(shè)計(jì)模式, M代表模型(Model),V代表視圖(View),C代表控制器(Controller)。MVC設(shè)計(jì)模型即把一個(gè)應(yīng)用的輸入、處理、輸出流程按照M-V-C的方式進(jìn)行分離。</p><p>  為什么需要MVC模式?</p><p>  大多數(shù)復(fù)雜應(yīng)用需要使用幾種不同的方式查看和操作數(shù)據(jù):對數(shù)據(jù)顯示所作的任何修改,都需要在所有

49、相關(guān)位置進(jìn)行當(dāng)數(shù)據(jù)操作邏輯、格式化和顯示代碼同用戶事件處理混雜在一起的時(shí)候,應(yīng)用維護(hù)變得非常困難,特別是在時(shí)間跨度非常大的情況下的副作用如果應(yīng)用邏輯已經(jīng)同現(xiàn)有界面的代碼混合在一起,用戶界面就不能被重新利用增加功能要求對現(xiàn)有的代碼進(jìn)行多處修改,而這些需要修改的位置很難發(fā)現(xiàn)對單獨(dú)一段代碼進(jìn)行修改會(huì)造成深遠(yuǎn)的副作用。</p><p>  MVC模式把多個(gè)組件集成到一起,相互合作,協(xié)調(diào)一致的進(jìn)行工作。</p>

50、<p>  模型:封裝應(yīng)用數(shù)據(jù)(關(guān)系數(shù)據(jù)庫或EJB),處理商業(yè)邏輯</p><p>  視圖:呈現(xiàn)給用戶的界面(JSP或應(yīng)用GUI)</p><p>  控制器:接受用戶動(dòng)作,并對應(yīng)用數(shù)據(jù)進(jìn)行適當(dāng)?shù)奶幚恚⊿ervlet)</p><p>  MVC的目的是增加代碼的重用率,減少數(shù)據(jù)表達(dá)、數(shù)據(jù)描述及應(yīng)用操作的耦合度。同時(shí),也使得軟件的可維護(hù)性、可修復(fù)性、

51、可擴(kuò)展性、靈活性以及封裝性大大提升。</p><p>  當(dāng)前國內(nèi)的主流建站程序都是采用了MVC三層架構(gòu)來開發(fā),對于網(wǎng)站的后期維護(hù)與應(yīng)用過程,都有很大的裨益。由于MVC開發(fā)模式將前端設(shè)計(jì)、程序開發(fā)進(jìn)行了明確的定義與分工,</p><p>  MVC模式的結(jié)構(gòu)如下圖所示:</p><p>  2.2.2為什么選擇MVC</p><p>  1.

52、各施其職,互不干涉</p><p>  在MVC模式中,三個(gè)層各施其職,一旦哪一層的需求發(fā)生了變化,只需要更改相應(yīng)層中的代碼而不會(huì)影響到其它層中的代碼。</p><p>  2.有利于開發(fā)中的分工</p><p>  在MVC模式中,由于按層把系統(tǒng)分開,那么就能更好地實(shí)現(xiàn)開發(fā)中的分工。網(wǎng)頁設(shè)計(jì)人員可以開發(fā)視圖層中的JSP頁面,對業(yè)務(wù)熟悉的人員可以開發(fā)業(yè)務(wù)層,而其他開

53、發(fā)人員可以開發(fā)控制層[19]。</p><p>  3.有利于組件的重用</p><p>  分層后有利于組件的重用。例如控制層可獨(dú)立成一個(gè)通用的組件,視圖層也可做成通用的操作界面。</p><p>  第三章 系統(tǒng)總體分析與設(shè)計(jì)</p><p><b>  3.1 需求分析</b></p><p&g

54、t;  3.1.1 系統(tǒng)概述與目標(biāo)</p><p>  系統(tǒng)需求分析是整個(gè)設(shè)計(jì)過程的基礎(chǔ),是系統(tǒng)設(shè)計(jì)的起點(diǎn)。系統(tǒng)建設(shè)前首先必須準(zhǔn)確了解與分析用戶的知識(shí)需求。需求分析是否準(zhǔn)確反映了用戶的實(shí)際要求,將直接影響到后面各個(gè)階段的設(shè)計(jì),并影響到交付的產(chǎn)品是否合理和實(shí)用。需求分析如果做得不好,甚至?xí)?dǎo)致整個(gè)系統(tǒng)設(shè)計(jì)的返工重做。</p><p>  需求分析的重點(diǎn)是調(diào)查、收集與分析用戶在知識(shí)管理中的知識(shí)

55、要求、處理要求、安全性與完整性要求。知識(shí)要求是指用戶需要從系統(tǒng)中獲得知識(shí)的內(nèi)容與性質(zhì),根據(jù)用戶的知識(shí)需求就可以確定在系統(tǒng)中要存儲(chǔ)哪些知識(shí);處理要求是指用戶要求完成什么處理功能,還有對處理時(shí)間和處理方式的要求。系統(tǒng)必須能夠滿足用戶的各類需求,需求分析的重點(diǎn)是明確系統(tǒng)的應(yīng)用場景和環(huán)境。</p><p>  通過對一些典型的倉庫管理管理系統(tǒng)的使用考察和分析,要求本系統(tǒng)具有以下特點(diǎn)。</p><p&g

56、t; ?。?)采用B/S架構(gòu),基于瀏覽器的管理界面,無需安裝,更新客戶端;</p><p> ?。?)功能符合倉庫管理管理實(shí)際要求,操作簡單,擴(kuò)展性強(qiáng),穩(wěn)定性高;</p><p>  (3)系統(tǒng)無操作系統(tǒng)限制,方便不同平臺(tái)之間的移植。</p><p>  通過對倉庫管理企業(yè)及相關(guān)行業(yè)信息的調(diào)查,該倉庫管理信息系統(tǒng)具有以下功能:</p><p>

57、; ?。?)通過系統(tǒng)流程圖,全面展示企業(yè)的形象,全面介紹企業(yè)的服務(wù)項(xiàng)目;</p><p>  (2)實(shí)現(xiàn)對貨物信息的管理;</p><p>  (3)實(shí)現(xiàn)對貨物供應(yīng)商信息的管理;</p><p>  (4)實(shí)現(xiàn)對發(fā)貨客戶信息的管理;</p><p>  (5)實(shí)現(xiàn)對單據(jù)的管理,包括入庫單,出庫單;</p><p>  

58、(6)實(shí)現(xiàn)對財(cái)務(wù)的管理;</p><p> ?。?)具備易的操作界面;</p><p> ?。?)每個(gè)角色職位有不同的權(quán)限,管理員可以配置這些信息和對不同的人員授權(quán)操作。</p><p>  一個(gè)易于維護(hù)的系統(tǒng),就是可復(fù)用率較高的系統(tǒng);而一個(gè)可復(fù)用較好的系統(tǒng),就是一個(gè)易于維護(hù)的系統(tǒng)。也就是說這個(gè)系統(tǒng)的設(shè)計(jì)目標(biāo)應(yīng)該具有擴(kuò)展性、靈活性。</p><p

59、>  開發(fā)該系統(tǒng)的最終目的是為管理員管理訂單提供方便,得到客戶的及時(shí)反饋,從而提升公司的整體水平,提升公司效率。為了滿足客戶需要,本系統(tǒng)在設(shè)計(jì)時(shí)應(yīng)實(shí)現(xiàn)以下幾個(gè)目標(biāo):</p><p> ?。?)系統(tǒng)界面力求簡單,人性化;</p><p> ?。?)能夠滿足倉庫管理的需求,能夠?qū)蛻簦?yīng)商及貨物信息進(jìn)行管理;</p><p>  (3)能夠根據(jù)不斷變化的需求進(jìn)行

60、功能上的擴(kuò)充。</p><p>  3.1.2 系統(tǒng)功能性需求 </p><p><b> ?。?)供應(yīng)商管理</b></p><p>  該部分包括供應(yīng)商信息的增加、編輯、刪除及查詢的功能。</p><p><b> ?。?)客戶管理</b></p><p>  該部分包

61、括客戶信息的增加、編輯、刪除及查詢的功能。</p><p> ?。?)入庫出庫單據(jù)管理</p><p>  該部分包括單據(jù)(包括入庫單,出庫單)信息的增加、編輯、刪除及查詢的功能。</p><p><b> ?。?)庫存貨物管理</b></p><p>  該部分包括貨物信息的增加、編輯、刪除及查詢的功能。</p&

62、gt;<p><b> ?。?)財(cái)務(wù)管理</b></p><p>  能夠準(zhǔn)確查看單據(jù)收支情況,貨物情況,實(shí)現(xiàn)對普通的發(fā)貨單及根據(jù)固定貨物生成的發(fā)貨單進(jìn)行進(jìn)行填寫,以及查看財(cái)務(wù)報(bào)表的功能。</p><p>  (6)用戶和角色管理</p><p>  管理員可以對用戶授權(quán),可以增加,刪除用戶。</p><p&g

63、t;  具體的用例圖如圖3-1:</p><p>  3.1.3 系統(tǒng)非功能性需求</p><p>  結(jié)合目前網(wǎng)絡(luò)上倉庫管理配送系統(tǒng)的設(shè)計(jì)方案,對客戶做的調(diào)查結(jié)果以及企業(yè)的實(shí)際需求,本項(xiàng)目在設(shè)計(jì)時(shí)應(yīng)該滿足以下目標(biāo):</p><p>  (1)界面設(shè)計(jì)美觀大方、操作簡單;</p><p> ?。?)功能完善、結(jié)構(gòu)清晰;</p>

64、<p> ?。?)能夠及時(shí)、準(zhǔn)確地對系統(tǒng)進(jìn)行維護(hù)及更新;</p><p>  (4)良好的數(shù)據(jù)庫系統(tǒng)支持;</p><p> ?。?)最大限度地實(shí)現(xiàn)易安裝性、易維護(hù)性及易操作性;</p><p> ?。?)系統(tǒng)運(yùn)行穩(wěn)定,具備良好的安全措施。</p><p>  3.2 系統(tǒng)功能分析 </p><p>  3

65、.2.1 系統(tǒng)功能結(jié)構(gòu)</p><p>  該倉庫管理信息系統(tǒng)功能包括管理員登錄、管理員編輯密碼、瀏覽貨物信息、編輯貨物信息、刪除貨物信息、增加貨物信息、建立發(fā)貨單(或是采購單)、回執(zhí)發(fā)貨單(或是采購單)確認(rèn)、瀏覽發(fā)貨單(或是采購單)、刪除發(fā)貨單(或是采購單)、查詢發(fā)貨客戶(或是貨物供應(yīng)商)、增加發(fā)貨客戶(或是貨物供應(yīng)商)、刪除發(fā)貨客戶(或是貨物供應(yīng)商)。</p><p>  圖3-2為系

66、統(tǒng)功能結(jié)構(gòu)圖:</p><p>  3.2.2 系統(tǒng)功能流程</p><p>  該倉庫管理信息系統(tǒng)的貨物入庫出庫是核心功能,可以分成2塊來分析,即:向供應(yīng)商購買貨物——入庫;向客戶提供他們想要的貨物——出庫。</p><p>  (1)貨物出庫流程:客戶通過通訊等輔助手段,向倉庫管理公司提交訂單;管理員登錄系統(tǒng)后,根據(jù)客戶提交的訂單要求,進(jìn)行貨物查詢、貨物確認(rèn)、填

67、寫發(fā)貨單;管理員安排貨物發(fā)出后,進(jìn)行電話跟蹤,貨物到達(dá)后,收貨人進(jìn)行到達(dá)確認(rèn),管理員進(jìn)行回執(zhí)單確認(rèn)。</p><p> ?。?)貨物入庫流程:管理員登錄系統(tǒng)后,根據(jù)已經(jīng)對供應(yīng)商下的訂單,填寫貨物入庫清單;管理員待貨物達(dá)到后,收貨人進(jìn)行到達(dá)確認(rèn),管理員進(jìn)行入庫清單確認(rèn)。</p><p><b>  3.3 數(shù)據(jù)庫設(shè)計(jì)</b></p><p>  

68、3.3.1 數(shù)據(jù)庫需求分析</p><p>  由于此系統(tǒng)是一個(gè)小型管理系統(tǒng),所以采用了開源小巧的MySQL數(shù)據(jù)庫。它是一個(gè)小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉庫內(nèi)。這樣就增加了速度并提升了靈活性。MySQL的SQL“結(jié)構(gòu)化查詢語言”。SQL是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。由于其體積小、速

69、度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。</p><p>  根據(jù)系統(tǒng)需求分析,系統(tǒng)有用戶及權(quán)限控制,供應(yīng)商,客戶,入庫單據(jù),出庫單據(jù),庫存貨物表,各表的關(guān)系如下圖所示:</p><p>  3.3.2 數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)</p><p>  客戶信息表:customer</p>

70、<p>  訂單明細(xì)表:order_detail</p><p>  訂單表:orders</p><p>  產(chǎn)品表:product</p><p>  貨物類別表:product-type</p><p>  供應(yīng)商表:provider</p><p>  采購單表:stock</p>&

71、lt;p>  采購單明細(xì)表:stock-detail</p><p><b>  用戶表:user</b></p><p>  商品視圖:product-view</p><p>  3.4 系統(tǒng)技術(shù)架構(gòu)設(shè)計(jì)</p><p>  3.4.1 系統(tǒng)邏輯結(jié)構(gòu)設(shè)計(jì)</p><p>  系統(tǒng)邏輯結(jié)構(gòu)

72、設(shè)計(jì)關(guān)系到整個(gè)軟件的質(zhì)量及開發(fā)進(jìn)度,因此,工作重點(diǎn)是進(jìn)行該系統(tǒng)邏輯結(jié)構(gòu)設(shè)計(jì)。下面分為五點(diǎn)進(jìn)行闡述。</p><p><b>  1.邏輯結(jié)構(gòu)分析</b></p><p>  該倉庫管理信息系統(tǒng)表示層負(fù)責(zé)提供訪問者數(shù)據(jù)的展示以及操作接口;控制層負(fù)責(zé)接收來自表示層提交的訪問者請求,調(diào)用業(yè)務(wù)層處理業(yè)務(wù)邏輯;業(yè)務(wù)層接受來自控制層的調(diào)用,調(diào)用數(shù)據(jù)邏輯層操作數(shù)據(jù)庫;數(shù)據(jù)邏輯層負(fù)責(zé)

73、接受業(yè)務(wù)層的調(diào)用,完成具體的數(shù)據(jù)存取操作,在這里就是指持久層(Persistence)。系統(tǒng)采用MVC組件來進(jìn)行開發(fā),系統(tǒng)被劃分為四層,即Persistence層、Business Runic層、Controller層、View層。</p><p><b>  2.表示層設(shè)計(jì)</b></p><p>  表示層(View層)大部分負(fù)責(zé)為用戶提供應(yīng)用服務(wù)的圖形界面,當(dāng)用

74、戶發(fā)出請求后調(diào)用相應(yīng)的業(yè)務(wù)邏輯處理,并選擇下一個(gè)頁面為用戶響應(yīng)。</p><p>  表示層是根據(jù)風(fēng)格定義設(shè)計(jì)相應(yīng)的顯示,并把用戶的交互信息傳遞給業(yè)務(wù)邏輯層,負(fù)責(zé)提供訪問者數(shù)據(jù)的展示以及操作接口,此層與Controller層結(jié)合比較緊密,需要二者結(jié)合起來協(xié)同開發(fā)。</p><p><b>  3.控制層設(shè)計(jì)</b></p><p>  控制層(

75、Controller層)負(fù)責(zé)接收來自表示層提交的訪問者請求,調(diào)用業(yè)務(wù)層處理業(yè)務(wù)邏輯。針對具體的業(yè)務(wù)流程,會(huì)有不同的控制器。</p><p><b>  4.業(yè)務(wù)層設(shè)計(jì)</b></p><p>  業(yè)務(wù)邏輯層(Business Logic層)接受來自控制層的調(diào)用,調(diào)用持久層操作數(shù)據(jù)庫。業(yè)務(wù)邏輯層通過數(shù)據(jù)持久層與數(shù)據(jù)庫交互,它封裝了所有的業(yè)務(wù)邏輯處理。</p>

76、<p><b>  5.持久層設(shè)計(jì)</b></p><p>  持久層(Persistence層),負(fù)責(zé)接受業(yè)務(wù)層的調(diào)用,完成具體數(shù)據(jù)存取操作。該層實(shí)現(xiàn)方案采用DIY ORM組件,其核心組件是SuperDAO(DAO操作通用的模板)。此組件相對于Ibatis、Hibernate等持久化實(shí)現(xiàn)方案,這是最簡潔的,但是核心功能都具備。由于數(shù)據(jù)源是多樣化的,可能是XML或者是關(guān)系數(shù)據(jù)庫

77、,而且關(guān)系數(shù)據(jù)庫又有不同的產(chǎn)品,如SQL Server、MySQL或者Oracle。通過開發(fā)核心組件SuperDAO來連接業(yè)務(wù)方法及數(shù)據(jù)源,業(yè)務(wù)核心部分就不用關(guān)心數(shù)據(jù)層是如何數(shù)據(jù)庫操作的,實(shí)現(xiàn)了兩者的解藕。另外,數(shù)據(jù)源可以隨意調(diào)換。如圖3-3為系統(tǒng)持久層實(shí)現(xiàn)示意圖[20]:</p><p>  3.4.2 技術(shù)方案實(shí)現(xiàn)</p><p>  本系統(tǒng)采用的是MVC + ORM組件方案來實(shí)現(xiàn)的,

78、數(shù)據(jù)庫使用的mysql。下面簡要介紹一下MVC + ORM組件的配置以及系統(tǒng)的開發(fā)過程。</p><p>  1.配置mvc.xml</p><p>  根據(jù)既定的約定(URI路徑對應(yīng)這相應(yīng)的Action包路徑),讀取存儲(chǔ)在mvc.xml文件里面的信息,就可以根據(jù)請求的URI映射到對應(yīng)的Action包路徑。</p><p>  2.配置c3p0-config.xml

79、</p><p>  c3p0數(shù)據(jù)池通過c3p0-config.xml文件的配置信息,這樣就可以提升數(shù)據(jù)庫訪問的速度。</p><p>  3.Action的編寫過程</p><p>  編寫的Action實(shí)現(xiàn)了Action接口。實(shí)現(xiàn)execute方法,該方法返回的是導(dǎo)向頁面的地址。</p><p>  Action的作用:通常是發(fā)送到服務(wù)器

80、端的一個(gè)請求,能夠集中控制及處理一些與用戶交互的操作。</p><p>  4.業(yè)務(wù)邏輯編寫過程</p><p>  編寫AdminService.java、ProductService.java、CustomerService.java、等業(yè)務(wù)邏輯,其中大部分是數(shù)據(jù)操作,包括調(diào)用數(shù)據(jù)庫連接操作文件DBConnection.java。</p><p>  其中,Ad

81、minService類用來對管理員基本情況的各個(gè)屬性執(zhí)行各種SQL語句的方法,執(zhí)行SQL查詢、編輯、刪除以及增加的語句;ProductService類用來對貨物基本情況的各個(gè)屬性執(zhí)行各種SQL語句的方法,執(zhí)行SQL查詢、編輯、刪除以及增加的語句;CustomerService類用來對發(fā)貨客戶基本情況的各個(gè)屬性執(zhí)行各種SQL語句的方法,執(zhí)行SQL查詢、編輯、刪除以及增加的語句。</p><p>  5.持久類編寫過

82、程.</p><p>  持久類編寫過程包括創(chuàng)建POJO(POJO,Plain Ordinary Java Object,即普通的JavaBean)、創(chuàng)建映射文件、創(chuàng)建DAO實(shí)現(xiàn)數(shù)據(jù)操作。其中,創(chuàng)建DAO實(shí)現(xiàn)數(shù)據(jù)操作步驟實(shí)現(xiàn)核心組件SuperDAO的數(shù)據(jù)的增加、編輯、修改、刪除、查詢等操作。</p><p><b>  6.視圖層</b></p><

83、;p>  視圖層大部分是利用JSP頁面開發(fā)技術(shù)。</p><p>  第四章 系統(tǒng)功能模塊的具體實(shí)現(xiàn)</p><p>  4.1 數(shù)據(jù)持久化層</p><p>  4.1.1 持久化層的工作流程</p><p>  持久化層是實(shí)現(xiàn)和數(shù)據(jù)庫讀取功能相關(guān)的層,實(shí)現(xiàn)對數(shù)據(jù)庫里數(shù)據(jù)的增刪改查等操作,先來看看該系統(tǒng)的數(shù)據(jù)持久層是如何工作的。<

84、;/p><p>  4.1.2 透過實(shí)例來看持久化層</p><p>  實(shí)現(xiàn)數(shù)據(jù)持久化過程要經(jīng)過如下步驟:創(chuàng)建數(shù)據(jù)表、創(chuàng)建POJO、編寫配置文件mvc.xml和數(shù)據(jù)庫連接池配置文件c3p0.config.xml、編寫Service層以供調(diào)用。下面分別一一闡述。</p><p><b> ?。?)創(chuàng)建表:</b></p><p&

85、gt;  根據(jù)3.3的數(shù)據(jù)庫表的設(shè)計(jì),分別創(chuàng)建9個(gè)表和1個(gè)視圖。</p><p> ?。?)編寫VO包的POJO:</p><p>  每一個(gè)POJO都是標(biāo)準(zhǔn)的java bean。</p><p> ?。?)編寫配置文件:</p><p>  首先編寫的是mvc.xml的配置。</p><p>  該系統(tǒng)使用的是自定義

86、的ORM組件, showSQL屬性可以控制是否在控制臺(tái)顯示SQL語句,在調(diào)試程序的時(shí)候,這樣會(huì)很有用。根據(jù)SQL語句可以找到一些提示信息,以便于改正代碼的錯(cuò)誤。</p><p>  接下來是數(shù)據(jù)連接池c3p0-config.xml的配置(只顯示了部分,附帶注釋)。</p><p>  c3p0數(shù)據(jù)池可以緩存數(shù)據(jù)庫的連接,緩存查詢結(jié)果,避免每次都重新創(chuàng)建復(fù)雜的一些對象和過程,這樣就可以提升數(shù)

87、據(jù)庫訪問的速度。因?yàn)閺膶?shí)踐情況來看,系統(tǒng)的性能瓶頸出現(xiàn)在數(shù)據(jù)庫的訪問上,所有很有必要提升數(shù)據(jù)庫的訪問速度,現(xiàn)如今,不使用數(shù)據(jù)庫連接池的系統(tǒng)已經(jīng)很少見了。</p><p> ?。?)編寫service層</p><p>  所有和數(shù)據(jù)庫的操作相關(guān)的都放到了service層,這樣做的好處很明顯,可以讓系統(tǒng)各個(gè)部件分工明確,責(zé)任清晰,使得整個(gè)系統(tǒng)更加具有可擴(kuò)展性和可維護(hù)性。</p>

88、<p>  在編寫service層里,大量用到了利用java反射實(shí)現(xiàn)的ORM組件。提升了編碼效率。</p><p>  下面給出一個(gè)例子:(查詢所有貨物的Service包里的一個(gè)類)</p><p>  按照MVC的慣例和構(gòu)架,將由業(yè)務(wù)邏輯層調(diào)用。實(shí)現(xiàn)了業(yè)務(wù)邏輯和底層的數(shù)據(jù)持久相分離。下面將要展示的是業(yè)務(wù)邏輯層。</p><p><b>  4

89、.2 業(yè)務(wù)邏輯層</b></p><p>  4.2.1 業(yè)務(wù)邏輯層的工作流程</p><p>  此系統(tǒng)用到了自己模仿Struts2的一個(gè)MVC組件,之前有過詳細(xì)介紹。該組件實(shí)現(xiàn)業(yè)務(wù)邏輯的核心是一個(gè)個(gè)的實(shí)現(xiàn)了Action接口的類。</p><p>  實(shí)現(xiàn)了Action接口的類是用戶請求和業(yè)務(wù)邏輯之間的橋梁,每個(gè)Action充當(dāng)客戶的一項(xiàng)業(yè)務(wù)邏輯處理。

90、</p><p>  圖4-3為邏輯層的處理流程圖:</p><p>  在Action接口里,定義了一個(gè)方法:execute,這個(gè)方法用來實(shí)現(xiàn)邏輯處理,而該方法返回的一個(gè)String字符串就成了邏輯處理完畢之后將要導(dǎo)航到的視圖地址。</p><p>  具體的工作流程如下:</p><p> ?。?)服務(wù)器收到客戶端瀏覽器的發(fā)送請求時(shí),請求

91、URI會(huì)被一個(gè)Filter,即:MVCFilter(servlet規(guī)范里的攔截器)攔截,這個(gè)Filter將攔截的URI進(jìn)行處理,根據(jù)從mvc.xml配置文件讀取的映射信息及已經(jīng)定義好的約定,就可以實(shí)現(xiàn)從URI到Action的映射。</p><p> ?。?)控制器找到了處理該請求的Action包路徑(根據(jù)定義好的約定,可以實(shí)現(xiàn)從URI到Action包路徑的映射)以后,運(yùn)用反射實(shí)例化之,并調(diào)用execute(來自于

92、Action接口)方法來獲得返回視圖的地址。最后,控制器負(fù)責(zé)轉(zhuǎn)發(fā)視圖資源請求,由此,將導(dǎo)航到視圖資源地址。</p><p>  什么是既定的,實(shí)現(xiàn)從URI路徑到包路徑映射的約定?</p><p>  這里用一個(gè)例子來說明:</p><p>  首先看一看保存在mvc.xml文件里面的關(guān)于約定的信息。</p><p>  根據(jù)上述配置及約定:一

93、個(gè)“/csu/finance/showStock.do”的URI請求地址對應(yīng)著的Action是:“csu.action.finance.showStockAction”。</p><p>  這就是既定的約定。這讓我的此次開發(fā)避免了很多繁雜的xml配置文件的編寫,因?yàn)橹暗膕truts是每一個(gè)Action都要明確有對應(yīng)的xml映射才能工作的。(在struts里,如果不明確聲明映射Action的路徑,將采取默認(rèn)的路

94、徑。)</p><p>  4.2.2 透過實(shí)例來看業(yè)務(wù)邏輯層</p><p>  以貨物入庫為例,用具體的流程和代碼來展示邏輯層是如何工作的。</p><p><b>  具體步驟如下:</b></p><p> ?。?)編寫貨物入庫頁面:管理員登陸系統(tǒng)之后,點(diǎn)擊頁面左側(cè)導(dǎo)航欄的“貨物入庫”鏈接,進(jìn)入到查詢?nèi)霂靻雾撁妗?/p>

95、</p><p>  該鏈接的地址是:/csu/storage/showStock.do,根據(jù)我們的約定規(guī)則,此地址即將調(diào)用的Action是csu.action.storage.ShowStockAction。</p><p>  在MVC組件里,利用java的一大動(dòng)態(tài)特性:反射,實(shí)例化該Action,并利用反射調(diào)用ShowStockAction的execute方法。</p>

96、<p>  接下來是編寫該Action的時(shí)候了。</p><p> ?。?)編寫ShowStockAction:這是一個(gè)標(biāo)準(zhǔn)的實(shí)現(xiàn)了Action接口的邏輯Action,可以用來處理我們所需要的邏輯,這是其代碼實(shí)現(xiàn):</p><p>  可以清楚的看到,該Action實(shí)現(xiàn)了mvc.action.Action接口,并且,在execute方法里面,實(shí)現(xiàn)了對邏輯的處理。在execute

97、方法里,掉用到了Service包,這正是之前的持久化層的一個(gè)重要組成部分。該service類是:csu.service.query.QueryStockService。從命名上,可以看得出來,這個(gè)service的作用是查詢所有采購單,也就是入庫單的。</p><p> ?。?)編寫對應(yīng)的Service處理類:該service類的作用就在于對單表:stock(入庫單)進(jìn)行查詢操作,在不同的查詢條件下,需要編寫不同的

98、方法。如代碼所示:</p><p>  可以看到,目前的需求來看,一共有2個(gè)方法。對于“queryAll”是查詢所有的入庫單,對于“queryByStorage_state”,則是根據(jù)是否入庫這一條件來查詢的。</p><p>  到這里就結(jié)束了邏輯處理,接下來,只要根據(jù)Action里execute方法返回的值,就可以確定最終的視圖資源。</p><p>  在之前

99、的execute方法里,返回的String是:“"fd-->/storage/storage.jsp"”,這意味著將要由服務(wù)器將請求轉(zhuǎn)發(fā)到“/csu/storage/storage.jsp”。</p><p> ?。?)編寫視圖資源:storage.jsp</p><p>  Storage.jsp用來顯示倉庫里貨物入庫出庫操作。該頁面用到了JSTL標(biāo)準(zhǔn)標(biāo)簽庫,使

100、得使用起來,比起古老的jsp腳本要舒適的多。等到服務(wù)器完成了編譯工作,就可以在瀏覽器看到頁面效果了。這些效果附圖,將在附錄里展示給出來。</p><p><b>  第五章 結(jié)束語</b></p><p><b>  5.1總結(jié)</b></p><p>  該倉庫信息系統(tǒng)功能切合現(xiàn)代倉庫管理步驟,大部分功能包括管理員登錄驗(yàn)

101、證、貨物信息管理、倉庫配貨過程管理、發(fā)貨單管理以及發(fā)貨客戶信息管理。系統(tǒng)采用MVC模式設(shè)計(jì),被劃分為持久層(Persistence層)、業(yè)務(wù)邏輯層(Business Runic層)、控制層(Controller層)、表示層(View層)等四層,相應(yīng)的應(yīng)用程序被分成三個(gè)核心模塊:模型(Model)、控制器(Controller)、視圖(View),它們各自處理自己的任務(wù)。其中,表示層負(fù)責(zé)提供訪問者數(shù)據(jù)的展示以及操作接口,并把用戶的交互信息

102、傳遞給業(yè)務(wù)邏輯層;控制層負(fù)責(zé)接收來自表示層提交的訪問者請求,調(diào)用業(yè)務(wù)層處理業(yè)務(wù)邏輯,并選擇下一個(gè)頁面響應(yīng)用戶的請求;業(yè)務(wù)邏輯層接受來自控制層的調(diào)用,調(diào)用持久層與數(shù)據(jù)庫進(jìn)行交互;持久層負(fù)責(zé)接受業(yè)務(wù)層的調(diào)用,完成具體的數(shù)據(jù)存取操作。</p><p><b>  本系統(tǒng)的特色在于:</b></p><p> ?。?)分層設(shè)計(jì),系統(tǒng)層次結(jié)構(gòu)清晰。系統(tǒng)采用MVC框架,分層設(shè)計(jì),

103、系統(tǒng)的整體層次性好,開發(fā)采用模塊化管理,有利于團(tuán)隊(duì)合作、分工,也有利于運(yùn)行期的維護(hù)。</p><p> ?。?)采用ORM技術(shù)進(jìn)行持久層設(shè)計(jì)。利用ORM技術(shù)設(shè)計(jì)持久層,系統(tǒng)結(jié)構(gòu)清晰,數(shù)據(jù)庫操作與業(yè)務(wù)邏輯各自獨(dú)立,有利于系統(tǒng)功能的擴(kuò)展,也有利于提升系統(tǒng)運(yùn)行性能。</p><p> ?。?)通用模塊的設(shè)計(jì)。在處理系統(tǒng)中某些類似問題的時(shí)候,通過抽象其中的相同點(diǎn),區(qū)分出不同點(diǎn),設(shè)計(jì)出獲取系統(tǒng)時(shí)間操

104、作類、數(shù)據(jù)庫持久化類、分頁Bean等通用的業(yè)務(wù)模塊。這種處理方法使開發(fā)效率有很大的提升。</p><p> ?。?)業(yè)務(wù)流程清晰。通過詳細(xì)的需求分析,設(shè)計(jì)出清晰的業(yè)務(wù)流程。這不僅使系統(tǒng)的功能與現(xiàn)代倉庫管理的實(shí)際步驟吻合,更使系統(tǒng)的開發(fā)變得有序。</p><p><b>  5.2展望</b></p><p>  該倉庫信息系統(tǒng)不但能夠促進(jìn)倉庫企

105、業(yè)規(guī)范管理,提升市場競爭力,而且能夠?yàn)閭}庫企業(yè)帶來巨大的經(jīng)濟(jì)效益。</p><p>  從管理層次上講,由于系統(tǒng)采用B/S模式部署,倉庫管理人員無論在何時(shí)何地,都能夠訪問系統(tǒng),完成倉庫全過程的協(xié)調(diào)、控制,實(shí)現(xiàn)從網(wǎng)絡(luò)前端到終端客戶的托運(yùn)過程服務(wù);能夠加快訂單處理速度,縮短貨倉庫轉(zhuǎn)時(shí)間,實(shí)現(xiàn)貨物的快速交付,提升顧客滿意度;也便于加強(qiáng)對在途貨物的監(jiān)控,及時(shí)發(fā)現(xiàn)、處理配送過程中的意外事件,確保貨物及時(shí)、安全送達(dá)到目的地。

106、</p><p>  從經(jīng)濟(jì)性上講,該倉庫信息系統(tǒng)的流程規(guī)范、科學(xué),界面友好,易于操作,將為倉庫企業(yè)贏得更多商機(jī),帶來更多的客戶資源,提升企業(yè)的經(jīng)濟(jì)效益。</p><p>  從系統(tǒng)研發(fā)技術(shù)上講,該倉庫信息系統(tǒng)采用MVC框架,提升了系統(tǒng)的運(yùn)行性能及安全性能,改善了軟件的易管理性,便于系統(tǒng)升級(jí)、跨平臺(tái)移植,其功能切合倉庫管理流程的特征及分層設(shè)計(jì)的理念,可供相關(guān)行業(yè)借鑒,具有較好的研究、推廣價(jià)

107、值。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 萬曉,周寧;我國商業(yè)連鎖企業(yè)的物流系統(tǒng)配送分析[J];北方交通大學(xué)學(xué)報(bào)(社科版);2003年02期 </p><p>  [2] 文龍光,單山鳴;倉庫管理與物流配送[J];經(jīng)濟(jì)師;2003年02期 </p><p>  [3] 梁紅巖;論物流

108、配送是連鎖經(jīng)營成功的關(guān)鍵環(huán)節(jié)[J];生產(chǎn)力研究;2002年04期 </p><p>  [4] 李云,王平;共同配送體系結(jié)構(gòu)[J];重慶郵電學(xué)院學(xué)報(bào)(自然科學(xué)版);2002年02期 </p><p>  [5] 劉大風(fēng),施放;電子商務(wù)與倉庫管理協(xié)同運(yùn)行模式探索[J];商業(yè)研究;2002年02期 </p><p>  [6] 李慎恒;我國第三方物流企業(yè)的現(xiàn)狀及發(fā)展對策

109、[J];經(jīng)濟(jì)體制改革;2003年02期 </p><p>  [7] 徐同連;共同配送合并策略的仿真研究與系統(tǒng)實(shí)現(xiàn)[D];吉林大學(xué);2007年 </p><p>  [8] 王雪峰;連鎖經(jīng)營企業(yè)物流配送系統(tǒng)集成規(guī)劃模型及算法研究[D];上海交通大學(xué);2008年 </p><p>  [9] 寧方華,陳子辰,熊勵(lì),梅益;電子商務(wù)中制造業(yè)的物流策略[J];制造業(yè)自動(dòng)化;

110、2004年05期 </p><p>  [10] 江瑋璠;何建民;金琳;;基于AHP的模糊綜合評價(jià)法在倉庫管理伙伴選擇中的應(yīng)用[J];價(jià)值工程;2005年12期 </p><p>  [11] 王焰;中國連鎖經(jīng)營商業(yè)企業(yè)發(fā)展戰(zhàn)略研究[D];西北農(nóng)林科技大學(xué);2001年 </p><p>  [12] 彭海珍;中國連鎖經(jīng)營發(fā)展戰(zhàn)略研究[D];河海大學(xué);2002年 &l

111、t;/p><p>  [13] 馬麗;對中國大型零售企業(yè)存在問題的分析[D];哈爾濱工程大學(xué);2002年 </p><p>  [14] 陳業(yè)瑋;我國經(jīng)濟(jì)型飯店連鎖化擴(kuò)張路徑研究[D];浙江大學(xué);2002年 </p><p>  [15] 吉文;廣西柳州商控物流中心的建設(shè)研究[D];南京理工大學(xué);2002年 </p><p>  [16] 許道濤

112、;多時(shí)期多配送中心選址點(diǎn)的最優(yōu)變化軌跡問題研究[D];浙江大學(xué);2004年 </p><p>  [17] 杜亮;連鎖經(jīng)營企業(yè)物流配送的研究[D];武漢理工大學(xué);2004年 </p><p>  [18] 嚴(yán)峻;基于XML的連鎖企業(yè)物流配送信息系統(tǒng)研究與實(shí)現(xiàn)[D];西安理工大學(xué);2004年 </p><p>  [19] 張玉剛;論我國零售業(yè)物流的發(fā)展[D];中央民

溫馨提示

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

最新文檔

評論

0/150

提交評論