J2EE的企業(yè)資產(chǎn)管理系統(tǒng)網(wǎng)上采購(gòu)模塊分析報(bào)告_第1頁(yè)
J2EE的企業(yè)資產(chǎn)管理系統(tǒng)網(wǎng)上采購(gòu)模塊分析報(bào)告_第2頁(yè)
J2EE的企業(yè)資產(chǎn)管理系統(tǒng)網(wǎng)上采購(gòu)模塊分析報(bào)告_第3頁(yè)
J2EE的企業(yè)資產(chǎn)管理系統(tǒng)網(wǎng)上采購(gòu)模塊分析報(bào)告_第4頁(yè)
J2EE的企業(yè)資產(chǎn)管理系統(tǒng)網(wǎng)上采購(gòu)模塊分析報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 . J2EE的企業(yè)資產(chǎn)管理系統(tǒng)網(wǎng)上采購(gòu)模塊的設(shè)計(jì)與實(shí)現(xiàn)摘 要隨著經(jīng)濟(jì)一體化進(jìn)程的加快與互聯(lián)網(wǎng)信息技術(shù)的飛速發(fā)展,企業(yè)的信息化的步伐也逐漸加快,從通常的手工操作到辦公自動(dòng)化套件的廣泛應(yīng)用,再到各式各樣企業(yè)管理平臺(tái)的大量實(shí)施,以及將來(lái)向一體化的方向進(jìn)展,我國(guó)的企業(yè)信息化經(jīng)歷了一個(gè)技術(shù)化層面從低到高,集成化程度從分散到集中,管理理念不斷更新,管理方式逐漸走向成熟的過(guò)程。期問(wèn)涌現(xiàn)出許多優(yōu)秀的管理平臺(tái),資產(chǎn)管理系統(tǒng)(EAM)就是其中比較有影響力的一款。EAM系統(tǒng)下的采購(gòu)管理作為供應(yīng)鏈管理的一個(gè)重要環(huán)節(jié),日漸顯示出其重要性。要想在信息化的浪潮中提高企業(yè)競(jìng)爭(zhēng)力,建立一套適合企業(yè)發(fā)展的資產(chǎn)管理系統(tǒng)勢(shì)在必行,

2、而其中網(wǎng)上采購(gòu)模塊是其中的一個(gè)重要角色。本系統(tǒng)基于B/S模式,采用應(yīng)用廣泛的J2EE開(kāi)發(fā)平臺(tái)、設(shè)計(jì)與實(shí)現(xiàn)了EAM資產(chǎn)管理系統(tǒng),滿足了企業(yè)管理信息化的需求。系統(tǒng)分為四個(gè)模塊:網(wǎng)上采購(gòu)、資產(chǎn)核查、資產(chǎn)申請(qǐng)申報(bào)、系統(tǒng)管理。其中網(wǎng)上采購(gòu)管理模塊目錄管理、信息發(fā)布、報(bào)價(jià)系統(tǒng)構(gòu)成。本文圍繞設(shè)計(jì)與實(shí)現(xiàn)EAM采購(gòu)管理系統(tǒng),首先對(duì)采購(gòu)管理系統(tǒng)的流程進(jìn)行了詳細(xì)分析,以及各個(gè)模塊與網(wǎng)上采購(gòu)系統(tǒng)的關(guān)系,明確了需求:然后根據(jù)采購(gòu)管理系統(tǒng)的需求分析,設(shè)計(jì)了采購(gòu)管理系統(tǒng)的總體與詳細(xì)架構(gòu),并在此基礎(chǔ)上設(shè)計(jì)了相應(yīng)的數(shù)據(jù)庫(kù);最后展示了采購(gòu)管理系統(tǒng)的運(yùn)行效果。關(guān)鍵詞:J2EE,EAM,Struts,MVC,采購(gòu)管理系統(tǒng),ABSTR

3、ACTWith the rapid development of the economic globalization and informationtechnology such as the Internet,computer technology and network technology,companies accelerate thepace of informationizationFrom usual manual to extensive use of office automationsoftware,to the kinds of various enterprise m

4、anagement platformS implementationand futureS direction ofthe integration progressour countryS informationization ofcompany in technology level from low to high,the degree of integration fromdecentralized to centralized,develop management theories and management modemove to maturityDuring the emerge

5、nce of many excellent system,EAM is one of themore influentialEAM procurementmanagement as an important part of supply chain management,it is increasingly importantIn order to improving the competitive of enterprise,establishingprocurement management system which adapt to enterprise is imperativeThi

6、s paper bases on B/S system ,adopt J2EE development platform,design and implement all EAM procurement management system,achieve the enterprise procurement management information requirementsThe EAM procurement management system involve four sub-modules related, such as procurement module,materials c

7、heck module, purchase order module,system manage moduleAnd the procurement module divided into 3 specific modulesThe paper focuses on Catalogue manage Module,InformationModule,Price Reporting Module.Then,with the requirements of EAM procurement management system,we determine the architecture of the

8、system,functional designing,and scheme out the databasesAt last,the paper demonstrates the runtime effectiveness of some modules,concludes the characteristics and limitations of the system,and points out the prospect of future workKey Words:J2EE,EAM,Struts,MVC,Procurement Management System第1章 引言1.1

9、選題的目的和意義企業(yè)從采購(gòu)、生產(chǎn)、銷售到全面預(yù)算,處于一個(gè)迅速變化且難于預(yù)測(cè)的買方市場(chǎng),為了提高競(jìng)爭(zhēng)力,需要采取更加先進(jìn)的制造技術(shù)與管理方法,做出快速響應(yīng)。而實(shí)現(xiàn)按期交貨,滿足客戶的需求,第一個(gè)環(huán)節(jié)就是采購(gòu)。因此,采購(gòu)作為企業(yè)運(yùn)作的核心環(huán)節(jié),其地位舉足輕重。采購(gòu)工作為了企業(yè)生產(chǎn)與管理,以及時(shí)、按質(zhì)與按量的要求供應(yīng)所需的物資,以最小的物資儲(chǔ)備達(dá)到最佳的供貨狀態(tài)。避免物資的積壓與缺料對(duì)于一個(gè)企業(yè)來(lái)說(shuō)至關(guān)重要。因此,有必要?jiǎng)?chuàng)建可以集成在EAM的采購(gòu)管理系統(tǒng),以適應(yīng)電子商務(wù)時(shí)代企業(yè)發(fā)展的需要。該采購(gòu)管理系統(tǒng)是EAM系統(tǒng)中物流、生產(chǎn)流、資金流中物流與資金流的重要組成部分,在保障信息在不同部門之間的正常流

10、動(dòng),按時(shí)交貨與降低成本起著重要作用。本EAM系統(tǒng)面向中小型制造企業(yè)、適用于多行業(yè)的、可根據(jù)具體業(yè)務(wù)需求進(jìn)行功能裁減并支持企業(yè)業(yè)務(wù)流程重組。并在廣州、珠三角乃至全國(guó)制造企業(yè)中推廣應(yīng)用,逐步實(shí)現(xiàn)產(chǎn)業(yè)化。機(jī)械制造業(yè)主要通過(guò)對(duì)原材料的加工,改造與組裝成為市場(chǎng)所需要的產(chǎn)品。主要包括機(jī)械加工、機(jī)床加工與組裝性行業(yè)。其中涉及的工業(yè)領(lǐng)域主要有機(jī)械設(shè)備、汽車、造船、飛行器、機(jī)車與日用器具等等。1.2 企業(yè)資產(chǎn)管理系統(tǒng)的發(fā)展?fàn)顩r工業(yè)發(fā)展經(jīng)歷了從手工作坊到機(jī)械化、自動(dòng)化再到集成化的變遷,因此各個(gè)時(shí)期的檢修方式也隨之不斷更新和發(fā)展。從總體上看,可分為以下幾個(gè)階段: 第一階段:事后維修和預(yù)防性維修(從18世紀(jì)第一次產(chǎn)業(yè)

11、革命到20世紀(jì)初)。事后維修是指當(dāng)設(shè)備發(fā)生故障時(shí)進(jìn)行的非計(jì)劃性維修,預(yù)防性維修即實(shí)施定期的點(diǎn)檢及早期維護(hù)。第二階段:經(jīng)濟(jì)檢修(從20世紀(jì)初至80年代),隨著科學(xué)技術(shù)的發(fā)展,檢修方式也變的多種多樣,于是就產(chǎn)生了以節(jié)約成本為宗旨的綜合檢修方式。即將各利一檢修方式根據(jù)需要,有機(jī)地結(jié)合在一起的檢修方式。其顯著的特點(diǎn)是設(shè)備現(xiàn)代化、管理現(xiàn)代化。第三階段:狀態(tài)和預(yù)知維修(從20世紀(jì)80年代至今)。依靠盟測(cè)設(shè)備,對(duì)設(shè)備運(yùn)行狀態(tài)的進(jìn)行監(jiān)控,然后做出維修決策。通過(guò)這種方式,可以大大減輕專業(yè)維修人員的工作量,不僅如此,運(yùn)行人員也可以通過(guò)監(jiān)測(cè)設(shè)備參與檢修,及時(shí)調(diào)整設(shè)備運(yùn)行狀態(tài),以維護(hù)設(shè)備的正常高效運(yùn)轉(zhuǎn)。縱觀設(shè)備維修的

12、發(fā)展史,我們可以發(fā)現(xiàn),每一中設(shè)備維修方法的誕生,都是伴隨著科學(xué)技術(shù)的進(jìn)步應(yīng)運(yùn)而生的。在科學(xué)技術(shù)低下的初期,因?yàn)闆](méi)有先進(jìn)的設(shè)備管理系統(tǒng),設(shè)備維修只能依靠事后維修的方式進(jìn)行;隨著科學(xué)技術(shù)的發(fā)展,首先出現(xiàn)的是低層次的設(shè)備管理系統(tǒng),只能對(duì)設(shè)備進(jìn)行簡(jiǎn)單的管理,所以可以制定出一定的維修計(jì)劃和設(shè)備的維修周期,進(jìn)行預(yù)防性維護(hù);到了設(shè)備維修的第三個(gè)階段,恰逢信息技術(shù)飛速發(fā)展的時(shí)代,先進(jìn)的管理系統(tǒng),就可以使經(jīng)濟(jì)維修成為可能;到了今天,隨著其他技術(shù),例如監(jiān)測(cè)技術(shù)的飛速發(fā)展,使得系統(tǒng)可以實(shí)時(shí)監(jiān)控設(shè)備的運(yùn)行狀態(tài),這就可以根據(jù)設(shè)備的實(shí)時(shí)狀態(tài)進(jìn)行預(yù)防性維修。正是基于當(dāng)今設(shè)備維修發(fā)展的需要,一套先進(jìn)的,融合最新技術(shù)的設(shè)備管理

13、平臺(tái)就顯得尤為重要,而企業(yè)資產(chǎn)管理系統(tǒng)(EAM)就是在這個(gè)背景下誕生的。EAM的前身是CMMS(Computerized Maintenance Management System:計(jì)算機(jī)化的設(shè)備維護(hù)管理系統(tǒng))。CMMS更多側(cè)重維修管理,包括預(yù)防性、預(yù)測(cè)性維修計(jì)劃,從系統(tǒng)的應(yīng)用范圍來(lái)看,CMMS更多停留在部門級(jí)的水平。EAM系統(tǒng)已經(jīng)在管理的廣度和深度上提高到整個(gè)企業(yè)級(jí),甚至是多企業(yè)的管理,EAM系統(tǒng)支持多組織管理。在這樣的管理模式下,充分保留了各分公司自身的管理特點(diǎn),并在需要時(shí)互相方便地交換信息和共享流程。這樣的EAM系統(tǒng)將幫助管理決策層方便、及時(shí)、完整的了解下屬企業(yè)的運(yùn)營(yíng)狀況,特別是可以直接

14、在系統(tǒng)中直接對(duì)下屬企業(yè)、部門、系統(tǒng)或其混合模式進(jìn)行預(yù)算控制,以此幫助跨國(guó)公司、集團(tuán)企業(yè)全局掌控和管理資產(chǎn),最大程度降低管理成本,實(shí)現(xiàn)企業(yè)價(jià)值最大化。IT技術(shù)的應(yīng)用同時(shí),EAM幫助企業(yè)把實(shí)現(xiàn)企業(yè)設(shè)備資產(chǎn)管理的戰(zhàn)略目標(biāo)變得更加靈活和簡(jiǎn)單。隨著計(jì)算機(jī)、數(shù)據(jù)庫(kù),尤其是Internet的廣泛應(yīng)用,EAM系統(tǒng)也從過(guò)去CMMS可以單機(jī)安裝發(fā)展到今天的網(wǎng)絡(luò)化運(yùn)行。任何地點(diǎn)、任何時(shí)間, 用戶只需要運(yùn)用標(biāo)準(zhǔn)Internet瀏覽器即可登錄系統(tǒng),獲取實(shí)時(shí)的管理信息。這樣的運(yùn)作方式同時(shí)降低了企業(yè)對(duì)于IT設(shè)施投資,以及維護(hù)的成本。全球EAM軟件及服務(wù)市場(chǎng)規(guī)模早在2000年已超過(guò)13億美金,2005年將達(dá)到19億美金。而對(duì)

15、于國(guó)內(nèi)EAM的市場(chǎng)窄間,各家公司對(duì)于具體的數(shù)字說(shuō)法不一, 而一致的看法是EAM的增長(zhǎng)速度是企業(yè)信息產(chǎn)品中發(fā)展最快的。1.3 論文研究?jī)?nèi)容本文對(duì)EAM的采購(gòu)管理系統(tǒng)的各個(gè)模塊進(jìn)行了需求分析,在需求分析的基礎(chǔ)上,設(shè)計(jì)了系統(tǒng)架構(gòu),并實(shí)現(xiàn)了EAM采購(gòu)管理模塊,滿足了企業(yè)采購(gòu)信息化的需求。本文的主要工作有:1對(duì)采購(gòu)管理系統(tǒng)進(jìn)行了需求分析。首先,分析了采購(gòu)管理的總體業(yè)務(wù)流程與采購(gòu)管理在整個(gè)EAM系統(tǒng)中的地位;然后,將網(wǎng)上超市管理、資產(chǎn)申請(qǐng)、資金申請(qǐng)功能,詳細(xì)分析,明確需求。2設(shè)計(jì)了系統(tǒng)的總體架構(gòu)。總體架構(gòu)分為視圖層、代理層、控制層、模型層與DAO層,設(shè)計(jì)了系統(tǒng)的總體業(yè)務(wù)流程和各層處理邏輯。3設(shè)計(jì)了系統(tǒng)的詳

16、細(xì)架構(gòu)。首先設(shè)計(jì)了詳細(xì)架構(gòu)通信圖與數(shù)據(jù)流;然后分別設(shè)計(jì)了前臺(tái)與后臺(tái)的邏輯處理系列圖。4設(shè)計(jì)了相應(yīng)的系統(tǒng)數(shù)據(jù)庫(kù)。5對(duì)系統(tǒng)模塊中的類與接口、頁(yè)面進(jìn)行設(shè)計(jì)與編碼。1.4 論文結(jié)構(gòu)本文分為6章第1章,緒論。簡(jiǎn)要敘述了項(xiàng)目背景與開(kāi)發(fā)采購(gòu)管理系統(tǒng)的意義,引出了本文主要工作。第2章,系統(tǒng)平臺(tái)與技術(shù)。簡(jiǎn)單說(shuō)明了本文涉及的關(guān)鍵技術(shù)J2EE、MVC和SSH框架技術(shù)。第3章,網(wǎng)上采購(gòu)模塊需求分析。首先分析了采購(gòu)管理的總體目標(biāo),然后詳細(xì)分析了采購(gòu)管理涉及的各個(gè)模塊的流程與功能,明確了需求。第4章,網(wǎng)上采購(gòu)模塊設(shè)計(jì)與實(shí)現(xiàn)。首先設(shè)計(jì)了系統(tǒng)的總體架構(gòu)與原理,然后設(shè)計(jì)了系統(tǒng)的詳細(xì)架構(gòu)設(shè)計(jì)與數(shù)據(jù)庫(kù),最后詳細(xì)闡明系統(tǒng)模塊的主要類

17、與頁(yè)面設(shè)計(jì)。以及說(shuō)明了系統(tǒng)開(kāi)發(fā)與運(yùn)行環(huán)境,并直觀展現(xiàn)系統(tǒng)部分模塊的運(yùn)行效果。第5章,總結(jié)與展望。對(duì)總結(jié)了本文、分析了項(xiàng)目的特點(diǎn)與優(yōu)勢(shì)、指明了未來(lái)工作的切入點(diǎn)。第2章 系統(tǒng)平臺(tái)與技術(shù)2.1 MVC設(shè)計(jì)模式2.1.1 MVC模式的介紹隨著Web開(kāi)發(fā)的不斷發(fā)展和需要,MVC模式被推薦并成為Sun公司J2EE平臺(tái)的設(shè)計(jì)模式,并且在應(yīng)用中受到越來(lái)越多的開(kāi)發(fā)者的歡迎。Model-View-Controller原來(lái)是Xerox PARC在八十年代為編程語(yǔ)Smalltalk-80發(fā)明的一種應(yīng)用程序的框架結(jié)構(gòu),至今已被廣泛使用。該框架結(jié)構(gòu)支持三層結(jié)構(gòu)的類:表現(xiàn)應(yīng)用程序狀態(tài)層、屏幕表現(xiàn)層和控制流層,因此這三層被稱

18、為模式(Model)、視圖(View)和控制器(Controller)。MVC是可以滿足那些需要為同樣的數(shù)據(jù)提供多個(gè)視圖的應(yīng)用程序的開(kāi)發(fā)需要,在開(kāi)發(fā)與用戶接口相關(guān),特別是對(duì)用戶接口要求較復(fù)雜的相關(guān)的應(yīng)用程序時(shí),可以很好地以不同的方式來(lái)顯示同一數(shù)據(jù),也就是在不改變軟件功能的前提下,可以實(shí)現(xiàn)用戶對(duì)用戶接口的個(gè)性化要求,而MVC模式的最大特點(diǎn)就是將業(yè)務(wù)層與表示層分離,而且提供了很多使顯示接口更加個(gè)性化的卷標(biāo)庫(kù),所以它能更好地實(shí)現(xiàn)用戶接口的各種個(gè)性化需求。MVC通常用于分布式應(yīng)用系統(tǒng)的設(shè)計(jì)和分析,如:大型商業(yè)網(wǎng)站、企業(yè)信息系統(tǒng)、管理信息系統(tǒng)、決策支持系統(tǒng)等,但它本身并不局限于某一個(gè)特定的領(lǐng)域。MVC設(shè)

19、計(jì)模式,最近幾年被推薦為SIJN公司JZEE平臺(tái)的設(shè)計(jì)模式,它強(qiáng)制性地把應(yīng)用程序的輸入、處理和輸出分開(kāi)3。它的三個(gè)核心部件分別是模型、視圖和控制器,它們各自處理各自的任務(wù):(1)模型(業(yè)務(wù)邏輯層):表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則,實(shí)現(xiàn)具體的業(yè)務(wù)邏輯、狀態(tài)管理的功能。在MVC的三個(gè)部件中,模型擁有最多的處理任務(wù)。例如它可能用像EJB和ColdFusion Companies這樣的構(gòu)件對(duì)象來(lái)處理數(shù)據(jù)庫(kù)。被模型返回的數(shù)據(jù)都是中立的,也就是說(shuō)模型和數(shù)據(jù)格式無(wú)關(guān),這樣一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)。由于應(yīng)用于模型的代碼只需寫一次就可以被多個(gè)視圖重用,所以減少了代碼的重復(fù)性。(2)視圖(表示層):即用戶看到并與之交

20、互的接口,是應(yīng)用程序的外在表現(xiàn),通常實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出功能。對(duì)老式的Web應(yīng)用程序來(lái)說(shuō),視圖就是由HTML元素組成的接口,在新式的Web應(yīng)用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術(shù)也層出不窮,它們包括Macromedia Flash和像XHTML、XML/XSL、WML等一些標(biāo)識(shí)語(yǔ)言和Web Services。因此如何處理應(yīng)用程序的接口變得越來(lái)越有挑戰(zhàn)性。MVC一個(gè)大的好處是它能為你的應(yīng)用程序處理很多不同的視圖。在視圖中其實(shí)沒(méi)有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機(jī)存儲(chǔ)的還是一個(gè)雇員列表,作為視圖來(lái)講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。(3)控制器(控制層):起到控

21、制整個(gè)業(yè)務(wù)流程的作用,根據(jù)用戶的輸入調(diào)用相應(yīng)的模型和視圖去完成用戶的需求和相關(guān)的操作。具體地來(lái)說(shuō):控制器本身不輸出任何東西和做出任何處理。它只是接受客戶的請(qǐng)求并進(jìn)一步?jīng)Q定調(diào)用哪個(gè)模型去處理該請(qǐng)求,并根據(jù)處理結(jié)果來(lái)確定用哪個(gè)視圖來(lái)顯示模型處理之后返回的數(shù)據(jù)。它們?nèi)咧g的關(guān)系如圖3.1所示。 圖2.1 MVC組件類型的關(guān)系和功能2.2 Struts項(xiàng)目概述 Struts是Apache組織的一個(gè)項(xiàng)目,像其它的Apache組織的項(xiàng)目一樣,它也是一個(gè)開(kāi)源專案。Struts作為一個(gè)設(shè)想是Craig R McClanahan于2000年提出的,該設(shè)計(jì)的目標(biāo)是為利用Java技術(shù)開(kāi)發(fā)基于MVC模式的Web應(yīng)用

22、提供一個(gè)標(biāo)準(zhǔn)模式。基于Struts架構(gòu)的Web應(yīng)用程序基本上符合JSPModel2的設(shè)計(jì)標(biāo)準(zhǔn),是MVC設(shè)計(jì)模式的一種變形,提供了對(duì)開(kāi)發(fā)MVC系統(tǒng)的底層支持,它采用的主要技術(shù)是Servlet、JSP和Custom Tag Library5。Struts框架是一種基于Java的技術(shù),Web應(yīng)用程序開(kāi)發(fā)人員通過(guò)Struts框架即可充分利用面向?qū)ο笤O(shè)計(jì),代碼重用及“編寫一次,到處運(yùn)行”的優(yōu)點(diǎn)。另外,Struts不僅是擁有自己的控制器,同時(shí)整合了其它的一些技術(shù)來(lái)實(shí)現(xiàn)模型層和視圖層,例如:在模型層,它可以很容易與數(shù)據(jù)庫(kù)的訪問(wèn)技術(shù)相組合,包括JDBC技術(shù)和EJB技術(shù);在視圖層,它能夠與JSP、XSL等組件相

23、結(jié)合6 。所以從一定的意義上講,采用Struts來(lái)實(shí)現(xiàn)基于MVC的Web應(yīng)用的開(kāi)發(fā),可以根據(jù)具體的需求來(lái)選擇設(shè)計(jì)的復(fù)雜程度,具有很好的擴(kuò)展性。Struts的主要優(yōu)勢(shì)功能如下:(1)Struts中包含一個(gè)控制器Servlet,用來(lái)控制用戶的請(qǐng)求發(fā)送到相應(yīng)的Action對(duì)象;(2)在JSP頁(yè)面中可以選用自定義標(biāo)簽庫(kù),并且在控制器Servlet中提供關(guān)聯(lián)支持,這樣可以幫助開(kāi)發(fā)人員方便快捷地創(chuàng)建交互式窗體應(yīng)用;(3)Struts還提供了一系列實(shí)用對(duì)象:XML文件處理、通過(guò)Java Reflection API自動(dòng)處理JavaBean屬性、國(guó)際化的提示和消息。2.2.1 Struts核心組件Struts

24、是一組相互協(xié)作的類、Servlet和JSP標(biāo)記,它們組成了一個(gè)可重用的MVC設(shè)計(jì)模式。這個(gè)定義表示Struts是一個(gè)框架,而不是一個(gè)庫(kù),但同時(shí)Struts也包含了豐富的標(biāo)記庫(kù)和獨(dú)立于該框架工作的實(shí)用程序類庫(kù)。Struts通過(guò)一些組件類來(lái)完成框架的功能,這些組件包括:ActionServlet、Action、ActionForm、ActionForward、ActionMapping。1. ActionServletActionServlet繼承自javax.servlet.http.HttpServlet類,它在struts中扮演的角色是中心控制器。它提供了一個(gè)中心位置來(lái)主要負(fù)責(zé)將Http客戶

25、請(qǐng)求組裝后,根據(jù)配置文件的指定的描述,轉(zhuǎn)發(fā)到適當(dāng)?shù)奶幚砥?。另外,除了作為?yīng)用程序的前端控制器外,ActionServlet實(shí)例還負(fù)責(zé)初始化和清除應(yīng)用程序的資源。2. Action一個(gè)Action類的角色,就像是客戶請(qǐng)求動(dòng)作和業(yè)務(wù)邏輯處理之間的適配器,它作為應(yīng)用程序響應(yīng)用戶請(qǐng)求的動(dòng)作,將請(qǐng)求與業(yè)務(wù)邏輯分開(kāi)。這樣用戶的請(qǐng)求和Action類之間可以有多個(gè)點(diǎn)對(duì)點(diǎn)的映射。Action最為常用的方法是execute(),典型的Action類一般要在execute()方法中實(shí)現(xiàn)下列邏輯:(l)檢查用戶session的當(dāng)前狀態(tài)。如果session過(guò)期或者用戶沒(méi)有登錄,要將表示層的頁(yè)面跳轉(zhuǎn)到用戶登錄頁(yè)面;(2)

26、檢查用戶輸入的合法性。調(diào)用Form Bean實(shí)例的validate()方法檢查一些字段的輸入值是否恰當(dāng)或合法;(3)執(zhí)行業(yè)務(wù)操作。調(diào)用業(yè)務(wù)邏輯Bean的相應(yīng)方法執(zhí)行用戶的業(yè)務(wù)請(qǐng)求;(4)更新服務(wù)器端的對(duì)象。將Model的狀態(tài)改變通知給View,并返回請(qǐng)求頁(yè)面。3. ActionForm一個(gè)應(yīng)用系統(tǒng)的消息轉(zhuǎn)移(或者說(shuō)狀態(tài)轉(zhuǎn)移)的非持久性數(shù)據(jù)的存儲(chǔ),通常由ActionForm Bean來(lái)負(fù)責(zé),它的主要功能是為Action的操作提供與客戶窗體相映像的數(shù)據(jù)。對(duì)于每一個(gè)客戶的請(qǐng)求,一般要經(jīng)歷如下幾個(gè)步驟:(l)檢查Action的映像,確定配置文件中己經(jīng)配置了對(duì)ActionForm的映像;(2)根據(jù)Nam

27、e屬性查找ActionForm的信息;(3)查找ActionForm的使用范圍,確定在此范圍下是否存在對(duì)應(yīng)的 Form Bean的實(shí)例;(4)假如在當(dāng)前范圍內(nèi),相應(yīng)的 Form Bean的實(shí)例己經(jīng)存在,而且對(duì)當(dāng)前的請(qǐng)求來(lái)說(shuō)是同一類型的話,就可以重用,否則,就要重新構(gòu)建一個(gè) Form Bean的實(shí)例;(5)調(diào)用Form Bean的reset()方法;(6)調(diào)用對(duì)應(yīng)的set()方法,對(duì)狀態(tài)屬性賦值;(7)如果validated屬性值被設(shè)置為true,則調(diào)用Form Bean的validate()方法;(8)如果validate()方法沒(méi)有返回錯(cuò)誤,控制器將ActionForm作為參數(shù),傳給Acti

28、on實(shí)例的execute()方法執(zhí)行。 4. ActionForward當(dāng)Action實(shí)例的execute()方法運(yùn)行完畢后,控制器根據(jù)Mapping可以將響應(yīng)信息轉(zhuǎn)到適當(dāng)?shù)牡胤?,ActionForward的主要功能就是對(duì)將要轉(zhuǎn)向的視圖的地址的一個(gè)封裝。轉(zhuǎn)向的各種屬性也可以在配置文件中設(shè)置性,這樣就大大提高了軟件的復(fù)用性和可維護(hù)性。 5. ActionMappingActionMapping以Java的形式封裝了怎樣將一個(gè)請(qǐng)求URL映射到與其對(duì)應(yīng)的Action的一些信息。ActionMapping對(duì)象幫助進(jìn)行框架內(nèi)部的流程控制,它們可以將請(qǐng)求URL映像到Action類,并且將Action類與

29、ActionForm Bean相關(guān)聯(lián)。Struts框架的控制器ActionServlet在內(nèi)部使用這些映射將控制轉(zhuǎn)移到特定的Action類的實(shí)例。2.2.2 Struts的工作流程采用Struts框架開(kāi)發(fā)Web應(yīng)用系統(tǒng)時(shí),在Web應(yīng)用啟動(dòng)時(shí)就會(huì)自動(dòng)地加載并初始化ActionServlet,此時(shí)ActionServlet將會(huì)從Struts-config.xml文件讀取配置信息,并把它們存放到各種對(duì)應(yīng)的配置對(duì)象中。當(dāng)ActionServlet接受到一個(gè)客戶請(qǐng)求時(shí),將執(zhí)行如下流程:(l)檢索與用戶請(qǐng)求匹配的Action實(shí)例,如果不存在,控制器直接將請(qǐng)求轉(zhuǎn)發(fā)給JSP或靜態(tài)頁(yè)面;如果有對(duì)應(yīng)的Action

30、,并且這個(gè)Action有一個(gè)相應(yīng)的Form Bean,ActionForm被實(shí)例化并用Http請(qǐng)求的數(shù)據(jù)來(lái)填充其屬性,然后保存在ServletCotenxt中,以備其它Action對(duì)象或JSP調(diào)用。(2)控制器根據(jù)Struts-config.xml的配置信息將請(qǐng)求切換到具體的Action,對(duì)應(yīng)的相關(guān)的 Form Bean的信息也一起發(fā)送給Action類的execute()方法。(3) Action的execute()方法返回一個(gè)ActionForward對(duì)象,控制器ActionServlet再通過(guò)該ActionForward對(duì)象來(lái)進(jìn)行轉(zhuǎn)發(fā)工作。(4) Action根據(jù)業(yè)務(wù)處理的不同結(jié)果返回一個(gè)

31、相應(yīng)的目標(biāo)響應(yīng)對(duì)象給總控制器,這個(gè)目標(biāo)響應(yīng)對(duì)象可以對(duì)應(yīng)一個(gè)具體的JSP頁(yè)面或者是另外一個(gè)Action。(5)總控制器ActionServlet根據(jù)業(yè)務(wù)功能Action返回的目標(biāo)響應(yīng)對(duì)象(多數(shù)情況下,該響應(yīng)目標(biāo)是一個(gè)JSP頁(yè)面),將Http請(qǐng)求轉(zhuǎn)換到該目標(biāo)響應(yīng)對(duì)象中,進(jìn)一步將結(jié)果頁(yè)面展現(xiàn)給用戶。2.2.3 Struts框架實(shí)現(xiàn)MVC模型Struts實(shí)質(zhì)上就是JSP Model2的基礎(chǔ)上實(shí)現(xiàn)的一個(gè)MVC模式框架,MVC設(shè)計(jì)模式為構(gòu)建可擴(kuò)展、可重用的體系結(jié)構(gòu)打下了很好的基礎(chǔ),該設(shè)計(jì)模式需要用戶將自己的代碼抽象出來(lái),把項(xiàng)目在一定的程度上分解為表示,邏輯和控制三部分,每部分之間的關(guān)系相對(duì)較小,以便使得軟

32、件結(jié)構(gòu)更加靈活,并具有較好的可重用性和可擴(kuò)展性。在Struts框架中,模型一般有實(shí)現(xiàn)業(yè)務(wù)邏輯的JavaBean或EJB組件構(gòu)成,控制器由ActionServlet和Action來(lái)實(shí)現(xiàn),視圖由一組JSP檔構(gòu)成,Struts實(shí)現(xiàn)的MVC框架如圖3.4所示。 圖2.2 Struts實(shí)現(xiàn)的MVC模型Struts是Apache組織的一個(gè)項(xiàng)目,提供了一個(gè)實(shí)現(xiàn)MVC架構(gòu)的高度自動(dòng)化的方式,作為一個(gè)MVC的框架,Struts對(duì)Model、View和Controller都提供了對(duì)應(yīng)的實(shí)現(xiàn)組件:(l)控制器(Controller):控制器的作用是從客戶端接收請(qǐng)求,并且選擇執(zhí)行相應(yīng)的業(yè)務(wù)邏輯,然后把響應(yīng)結(jié)果送回到客

33、戶端。在Struts中Controller功能由ActionServlet和ActionMapping對(duì)象構(gòu)成。ActionServlet是MVC設(shè)計(jì)模式的決策控制部分,也是Struts框架的核心。它根據(jù)ActionMapping把Http消息形式的用戶請(qǐng)求轉(zhuǎn)換成相應(yīng)的應(yīng)用程序的動(dòng)作。ActionServlet還負(fù)責(zé)用相應(yīng)的請(qǐng)求參數(shù)填充ActionForm(通常稱之為FormBean),并將其傳給對(duì)應(yīng)的動(dòng)作類(通常稱之為ActionBean)。動(dòng)作類Action來(lái)實(shí)現(xiàn)核心商業(yè)邏輯,它可以訪問(wèn)JavaBean或調(diào)用EJB,最后動(dòng)作類指向相應(yīng)的JSP檔,最終生成相關(guān)的視圖。ActionServle

34、t包括一組基于配置的ActionMapping對(duì)象,每個(gè)ActionMapping對(duì)象實(shí)現(xiàn)了一個(gè)請(qǐng)求到一個(gè)具體的Model部分中Action處理器對(duì)象類之間的點(diǎn)到點(diǎn)的映像。ActionMapping中有Action對(duì)象的名字和地址的描述,當(dāng)有請(qǐng)求傳入Controller時(shí),它把請(qǐng)求的路徑映像到Action的地址,并把請(qǐng)求傳給那個(gè)Action類。ActionMapping類也包括一些程序中可能的唯一的信息,例如本地變量,特定環(huán)境數(shù)據(jù),或者URL。(2)模型(Model):表示應(yīng)用程序的狀態(tài)和業(yè)務(wù)邏輯9。MVC系統(tǒng)中的Model部分從概念上可以分為兩類:系統(tǒng)的內(nèi)部狀態(tài)和改變系統(tǒng)狀態(tài)的動(dòng)作。Stru

35、ts為Model部分提供了Action和ActionForm對(duì)象,所有的Action處理器對(duì)象都是程序開(kāi)發(fā)者從Struts的Action類派生的子類,并對(duì)其中主要的方法進(jìn)行覆蓋。Action處理器對(duì)象封裝了具體的業(yè)務(wù)處理邏輯,處理具體的業(yè)務(wù)邏輯操作,并且把響應(yīng)提交到合適的View組件以產(chǎn)生響應(yīng)。Struts提供的ActionForm組件對(duì)象,可以通過(guò)定義屬性描述客戶端窗體數(shù)據(jù)。我們可以從它派生子類的對(duì)象,利用它可以實(shí)現(xiàn)對(duì)客戶端的窗體數(shù)據(jù)的良好封裝和支持,相應(yīng)的Action處理器對(duì)象可以直接對(duì)它的窗體數(shù)據(jù)進(jìn)行讀寫,而不再需要和Request、Response對(duì)象進(jìn)行數(shù)據(jù)交互,通過(guò)ActionFo

36、rm組件對(duì)象實(shí)現(xiàn)了對(duì)View和Model之間非持久性數(shù)據(jù)交互的支持。(3)視圖(View):視圖是用戶看到并與之交互的界面。Struts應(yīng)用中的View部分是通過(guò)JSP技術(shù)實(shí)現(xiàn)的。Struts提供了自定義的標(biāo)簽庫(kù),通過(guò)使用這些卷標(biāo)定義的JSP窗體可以和Model部分中的ActionForm的映像,完成對(duì)用戶數(shù)據(jù)的相關(guān)封裝,同時(shí)還可以使用這些標(biāo)簽來(lái)豐富JSP頁(yè)面。2.3 數(shù)據(jù)持久技術(shù)與Hibernate在采用了Struts技術(shù)的框架中,Struts簡(jiǎn)化了Web層的開(kāi)發(fā),實(shí)現(xiàn)了應(yīng)用程序的顯示邏輯和業(yè)務(wù)邏輯的分離,使應(yīng)用程序更趨模塊化,應(yīng)用程序更加容易維護(hù)。這種應(yīng)用程序的基本架構(gòu)是MVC(Strut

37、s)+DAO(Data Access Object)+JDBC+Databases。為了進(jìn)一步地提高代碼的可復(fù)用性和可維護(hù)性,提高開(kāi)發(fā)效率,需要一個(gè)更加有效的架構(gòu)。因?yàn)榇蠖鄶?shù)的應(yīng)用程序都涉及到的數(shù)據(jù)庫(kù)操作,通常數(shù)據(jù)庫(kù)表會(huì)很多而且關(guān)系復(fù)雜,如果使用DAO+JDBC訪問(wèn)數(shù)據(jù)庫(kù)將會(huì)使得編程過(guò)程復(fù)雜化,進(jìn)而帶來(lái)的是大量的維護(hù)工作,特別是層與層之間的耦合性大,表格屬性的變動(dòng)將極大的影響代碼的維護(hù),因此需要有一種方便通用的方案來(lái)解決這個(gè)問(wèn)題。這里將采用對(duì)象/關(guān)系映像(Object/Relational Mapping)的數(shù)據(jù)持久化技術(shù)來(lái)簡(jiǎn)化編程的復(fù)雜度,目前實(shí)現(xiàn)對(duì)象關(guān)系映像也已經(jīng)有一些比較成熟的工具,如C

38、aster,JDOGenie,Hibernate等。本文主要應(yīng)用Hibernate:在Struts中,不需要太多的代碼,它能夠?qū)?duì)象映像到關(guān)系數(shù)據(jù)庫(kù)中的行,不需要編寫復(fù)雜的SQL語(yǔ)句,開(kāi)發(fā)架構(gòu)也就變成Struts+ DAO+ Hibernate+Database,毫無(wú)疑問(wèn)使用Hibemate實(shí)現(xiàn)持久層是一種有效的選擇,它可以大大減少操作數(shù)據(jù)庫(kù)的工作量,并且使得系統(tǒng)更加易于維護(hù)。2.3.1 Hibernate的概述和特點(diǎn)1.Hibernate概述Hibernate是一種很好的ORM(Object/Relational Mapping)映射工具,支持使用各種Java思想如:inheritance,

39、association,composition,collections等實(shí)現(xiàn)的對(duì)象。它可以直接映像大部分的JavaBean而不需要做任何修改,即使修改最多也就是在對(duì)應(yīng)的Bean里面加上一些私有訪問(wèn)方法;可以將一個(gè)用戶定義的多個(gè)實(shí)例映像到一張表的同一行;還可以用代理模式簡(jiǎn)化加載類的過(guò)程14。對(duì)于使用JDBC和SQL手工操作數(shù)據(jù)庫(kù)來(lái)說(shuō),使用Hibernate,可以大大減少操作數(shù)據(jù)庫(kù)的工作量。因此使用它,既可以用來(lái)在Java應(yīng)用程序中取代大部分JDBC代碼,也可以很方便地整合到系統(tǒng)中作為持久層框架。Hibernate使用數(shù)據(jù)庫(kù)和配置文件數(shù)據(jù)來(lái)給應(yīng)用程序提供相應(yīng)的持久化服務(wù)和持久化的對(duì)象PO(Pers

40、istent Objects)。通過(guò)簡(jiǎn)單地設(shè)置配置文件hibernate.xml和創(chuàng)建每個(gè)數(shù)據(jù)庫(kù)表的xml映像文件,可以省去大量復(fù)雜的JDBC編程,Hibernate可以支持17種數(shù)據(jù)庫(kù),同時(shí)它也支持連接池應(yīng)用。2.Hibernate的特點(diǎn)(1)Hibernate是JDBC的輕量級(jí)的對(duì)象封裝,它是一個(gè)獨(dú)立的對(duì)象持久層框架。Hibernate的特點(diǎn)主要是簡(jiǎn)單、易用、強(qiáng)大、靈活而且速度夠快。Hibernate可以代替JDBC的編程應(yīng)用的場(chǎng)合,例如Java應(yīng)用程序中訪問(wèn)數(shù)據(jù)庫(kù)部分的代碼,DAO模型中接入數(shù)據(jù)庫(kù)時(shí)的訪問(wèn)代碼,甚至可以是BMP里面的訪問(wèn)數(shù)據(jù)庫(kù)的代碼。另外,Hibernate擁有自己的功能

41、強(qiáng)大的查詢語(yǔ)言 (HQL),HQL與SQL非常相似,HQL基于SQL,但它提供了更加面向?qū)ο蟮姆庋b。(2)Hibernate不同于Entity Bean。Entity Bean由容器處理大部分的資料完整性、資源管理和并發(fā)性功能,因此開(kāi)發(fā)人員只需要關(guān)注業(yè)務(wù)邏輯和數(shù)據(jù)處理。從軟件整體的框架來(lái)看,Hibernate不能用于完全替代 Entity Bean。Hibernate和 Entity Bean都為程序員實(shí)現(xiàn)了透明的持久性,而且程序員都不需要關(guān)心太多的技術(shù)細(xì)節(jié)15。Hibernate另外也為我們提供了更靈活的事務(wù)管理機(jī)制,Hibernate使用Session來(lái)管理事務(wù),而 Entity Bean

42、則將事務(wù)管理委派給了EJB容器。Hibernate雖然具有自己的事務(wù)管理,但是實(shí)際上它的事務(wù)管理是對(duì) JDBC Transaction的封裝,或者是對(duì) JTA Transaction的封裝,也就是上面提到的,Hibernate是對(duì)JDBC的輕量級(jí)對(duì)象封裝。值得注意的是Hibernate的事務(wù)管理更加靈活,它可以在 JDBC Transaction和JTA Transaction之間進(jìn)行選擇,默認(rèn)情況下將使用JDBC Transaction。(3) Hibernate是一個(gè)和JDBC密切關(guān)聯(lián)的框架,Hibernate的兼容性只與JDBC驅(qū)動(dòng)和數(shù)據(jù)庫(kù)有關(guān)系,而與Java程序或者APP Server

43、沒(méi)有任何關(guān)系。(4)靈活的對(duì)象-系映像方法,可以實(shí)現(xiàn)各種不同類型的映射,而且Hibernate具有簡(jiǎn)單易于操作的API接口和豐富的資源配置文文件,這些都使得應(yīng)用程序的開(kāi)發(fā)更加簡(jiǎn)單和快捷。3.Hibernate持久化框架的作用在軟件開(kāi)發(fā)過(guò)程中引入成熟的持久化實(shí)現(xiàn)框架,大大提高了數(shù)據(jù)庫(kù)訪問(wèn)層的開(kāi)發(fā)效率,具體表現(xiàn)在以下幾個(gè)方面:(l)可以減少乏味代碼的編寫。Hibernate持久層框架封裝了數(shù)據(jù)持久層的很多相關(guān)的技術(shù)細(xì)節(jié),例如事物管理、數(shù)據(jù)庫(kù)連接管理、SQL語(yǔ)句的生成等,使得開(kāi)發(fā)人員可以避免重復(fù)的JDBC編程,將精力投入到業(yè)務(wù)邏輯具體實(shí)現(xiàn)中去。(2)更加面向?qū)ο蟮脑O(shè)計(jì)。Hibernate持久層框架是

44、建立在面向?qū)ο蟮脑O(shè)計(jì)思想之上的,而ORM(Object Relational Mapping)是Hibernate持久層框架的基本特性,也是Hibernate實(shí)現(xiàn)面向?qū)ο笤O(shè)計(jì)的關(guān)鍵技術(shù)。ORM為系統(tǒng)面向?qū)ο蟮脑O(shè)計(jì)的實(shí)現(xiàn)提供了更加自然的實(shí)現(xiàn)方式,可以通過(guò)ORM將系統(tǒng)中的 Domain Objects自動(dòng)映像到各個(gè)數(shù)據(jù)庫(kù)表,從而在編碼過(guò)程中只需利用面向?qū)ο蟮姆椒▉?lái)處理Objects的相關(guān)屬性,而無(wú)須對(duì)JDBC ResultSets中的字段進(jìn)行分別處理。(3)可以保證更好的性能。Hibernate持久層框架提供了優(yōu)秀的性能優(yōu)化機(jī)制,如內(nèi)置的數(shù)據(jù)庫(kù)連接池支持、PrepareStatement緩存、數(shù)據(jù)

45、緩存等。這些對(duì)于上層架構(gòu)完全透明的優(yōu)化機(jī)制的綜合使用大大提高了系統(tǒng)的性能。(4)更好的可移植性?;贘ava的跨平臺(tái)特性,開(kāi)發(fā)的軟件系統(tǒng)可以在不同的操作系統(tǒng)之間切換,但由于數(shù)據(jù)庫(kù)之間的差異,系統(tǒng)在數(shù)據(jù)庫(kù)平臺(tái)之間移植并不太容易實(shí)現(xiàn)。而Hibernate持久層框架由于其設(shè)計(jì)上的良好隔離,提供了對(duì)不同數(shù)據(jù)庫(kù)的良好支持,只需簡(jiǎn)單地修改其配置文件中的數(shù)據(jù)庫(kù)的屬性參數(shù),即可實(shí)現(xiàn)底層數(shù)據(jù)庫(kù)的切換,更好地提高了系統(tǒng)的可移植性,也更好地保護(hù)了己有的人力和資源投入。2.4 Spring框架的應(yīng)用 Spring是一個(gè)開(kāi)源框架,它由Rod Johnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開(kāi)發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用

46、基本的JavaBean來(lái)完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開(kāi)發(fā)。從簡(jiǎn)單性、可測(cè)試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。傳統(tǒng)J2EE應(yīng)用的開(kāi)發(fā)效率低,應(yīng)用服務(wù)器廠商對(duì)各種技術(shù)的支持并沒(méi)有真正統(tǒng)一,導(dǎo)致J2EE的應(yīng)用沒(méi)有真正實(shí)現(xiàn)Write Once及Run Anywhere的承諾。Spring作為開(kāi)源的中間件,獨(dú)立于各種應(yīng)用服務(wù)器,甚至無(wú)須應(yīng)用服務(wù)器的支持,也能提供應(yīng)用服務(wù)器的功能,如聲明式事務(wù)等。Spring致力于J2EE應(yīng)用的各層的解決方案,而不是僅僅專注于某一層的方案16??梢哉f(shuō)Spring是企業(yè)應(yīng)用開(kāi)發(fā)的“一站式”選擇,

47、并貫穿表現(xiàn)層、業(yè)務(wù)層及持久層。然而,Spring并不想取代那些已有的框架,而與它們無(wú)縫地整合。簡(jiǎn)單來(lái)說(shuō),Spring是一個(gè)一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架:(1)輕量:大小與開(kāi)銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個(gè)大小只有1MB多的JAR檔里發(fā)布。并且Spring所需的處理開(kāi)銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對(duì)象不依賴于Spring的特定類。(2)控制反轉(zhuǎn):Spring通過(guò)一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了IoC,一個(gè)對(duì)象依賴的其它對(duì)象會(huì)通過(guò)被動(dòng)的方式傳遞進(jìn)來(lái),而不是這個(gè)對(duì)

48、象自己創(chuàng)建或者查找依賴對(duì)象。你可以認(rèn)為IoC與JNDI相反像從容器中查找依賴,而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就主動(dòng)將依賴傳遞給它。(3)面向切面:Spring提供了面向切面編程的豐富支持,允許通過(guò)分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)(例如審計(jì)(auditing)和事務(wù)管理)進(jìn)行內(nèi)聚性的開(kāi)發(fā)。應(yīng)用對(duì)象只實(shí)現(xiàn)它們應(yīng)該做的完成業(yè)務(wù)邏輯僅此而已。它們并不負(fù)責(zé)(甚至是意識(shí))其它的系統(tǒng)級(jí)關(guān)注點(diǎn),例如日志或事務(wù)支持。(4)容器:Spring包含并管理應(yīng)用對(duì)象的配置和生命周期,在這個(gè)意義上它是一種容器,你可以配置你的每個(gè)bean如何被創(chuàng)建基于一個(gè)可配置原型(prototype),你的bean可以創(chuàng)建一個(gè)單獨(dú)的實(shí)

49、例或者每次需要時(shí)都生成一個(gè)新的實(shí)例以及它們是如何相互關(guān)聯(lián)的17。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級(jí)的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。(5)框架:Spring可以將簡(jiǎn)單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對(duì)象被聲明式地組合,典型地是在一個(gè)XML檔里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等)。所有Spring的這些特征使編程更干凈、更可管理、并且更易于測(cè)試的代碼。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。第3章 網(wǎng)上采購(gòu)模塊需求分析3.1 采購(gòu)業(yè)務(wù)程分析整個(gè)資產(chǎn)管理系統(tǒng)模塊結(jié)構(gòu)如圖3-1所示。圖3.1 資產(chǎn)管理系統(tǒng)模塊結(jié)構(gòu)圖網(wǎng)

50、上采購(gòu)功能支持從計(jì)劃、訂單、收貨、收票,到結(jié)算的全過(guò)程的管理。實(shí)現(xiàn)采購(gòu)系統(tǒng)的物流、資金流、信息流的統(tǒng)一。通過(guò)采購(gòu)過(guò)程中價(jià)格管理及事后成本分析,達(dá)到穩(wěn)定產(chǎn)品質(zhì)量,降低采購(gòu)成本目的。對(duì)采購(gòu)業(yè)務(wù)中的帳務(wù)處理提供支持。采購(gòu)管理模塊與資產(chǎn)核查、資產(chǎn)申報(bào)、等模塊形成良好接口。采購(gòu)管理系統(tǒng)涉及到的模塊如圖32所示。圖3.2 采購(gòu)管理系統(tǒng)結(jié)構(gòu)采購(gòu)管理全流程涉及員工、部門經(jīng)理、財(cái)務(wù)經(jīng)理、采購(gòu)員等角色。各個(gè)角色相互協(xié)作,共同完成采購(gòu)管理這一流程,如圖33所示。圖3.3 采購(gòu)管理流程3.2 采購(gòu)業(yè)務(wù)流程詳細(xì)分析采購(gòu)模塊的包含有有3個(gè)主要功能:網(wǎng)上超市管理,采購(gòu)申請(qǐng),資金管理。3.2.1 網(wǎng)上超市管理需求分析包括目錄

51、管理、信息發(fā)布和報(bào)價(jià)系統(tǒng)。目錄管理提供界面方便用戶瀏覽商品,以購(gòu)物車的方式選取商品,用戶可隨時(shí)查看自己所選擇的商品。在超市中選完商品后,可自動(dòng)生成并保存物資采購(gòu)申報(bào)表,并可根據(jù)資金情況決定是否能打印輸出。報(bào)價(jià)系統(tǒng)在員工選擇商品時(shí),會(huì)實(shí)時(shí)顯示所選商品的累計(jì)金額、已申報(bào)金額及估計(jì)剩余金額。3.2.2 采購(gòu)申請(qǐng)需求分析員工在提交了采購(gòu)訂單之后,交由項(xiàng)目經(jīng)理進(jìn)行審批,如果通過(guò),項(xiàng)目經(jīng)理便通過(guò)核查進(jìn)一步提交采購(gòu)申請(qǐng)。若經(jīng)理不能通過(guò)審批則可修改訂單后再提出申請(qǐng)。圖3.4 申購(gòu)資產(chǎn)流程圖3.2.3 資金管理需求分析部門經(jīng)理提出采購(gòu)申請(qǐng)之后,有財(cái)務(wù)部門經(jīng)理進(jìn)行審查圖3.5 資金管理流程圖第4章 網(wǎng)上采購(gòu)模塊的

52、功能分析與設(shè)計(jì)本章主要介紹資產(chǎn)管理系統(tǒng)的采購(gòu)模塊,以及采用MVC設(shè)計(jì)模式的體系結(jié)構(gòu),這里以該子系統(tǒng)中賬戶管理模塊的設(shè)計(jì)為例說(shuō)明整個(gè)設(shè)計(jì)開(kāi)發(fā)過(guò)程,其它模塊的設(shè)計(jì)思想相同。4.1 總體設(shè)計(jì)此系統(tǒng)的技術(shù)架構(gòu)設(shè)計(jì)是基于J2EE架構(gòu)思想與MVC模式以及實(shí)現(xiàn)這種模式的Struts技術(shù)。系統(tǒng)的總體技術(shù)架構(gòu)如圖41所示。圖4.1 系統(tǒng)總體構(gòu)架按照MVC設(shè)計(jì)模式把系統(tǒng)劃分為模型,控制與視圖三個(gè)基本層次,其思想主要是用面向?qū)ο蟮脑O(shè)計(jì)方法將用戶界面與業(yè)務(wù)邏輯隔離。由模型層(Model,執(zhí)行請(qǐng)求的操作),視圖層(View,顯示應(yīng)用的狀態(tài)),控制器層(Controller,處理用戶輸入,設(shè)備與程序間的交互)三部分構(gòu)成。

53、Model負(fù)責(zé)數(shù)據(jù)處理,實(shí)現(xiàn)特定的業(yè)務(wù)功能。包括應(yīng)用數(shù)據(jù)的獲取,數(shù)據(jù)的處理,事務(wù)處理,狀態(tài)變更。因此,它包含了傳統(tǒng)的三層結(jié)構(gòu)的“數(shù)據(jù)層”全部與“邏輯層”的部分功能。Controller決定應(yīng)用的行為。接受用戶輸入,根據(jù)輸入選擇特定的Model,選擇輸出所用的View。View按特定的方式顯示“業(yè)務(wù)邏輯模式”的數(shù)據(jù)。通常是主動(dòng)直接從Model獲取數(shù)據(jù);也允許接受Model的數(shù)據(jù)變化時(shí)發(fā)送的通知,更新顯示。對(duì)于Web應(yīng)用的開(kāi)發(fā)模型,相對(duì)于傳統(tǒng)的三層結(jié)構(gòu),MVC更符合面向?qū)ο蟮脑O(shè)計(jì)思想。多個(gè)視圖使用同一個(gè)模型。模型與視圖的分開(kāi)使多個(gè)視圖可以使用相同的企業(yè)模型。因此,企業(yè)應(yīng)用程序的模型組件就更容易實(shí)現(xiàn)

54、,測(cè)試與維護(hù),因?yàn)樗袑?duì)模型的訪問(wèn)都要經(jīng)過(guò)這些組件。對(duì)客戶機(jī)的新類型更容易支持。要支持客戶機(jī)的新類型,只需為其編寫一個(gè)視圖與控制器,然后在已有的企業(yè)模型中將它們連起來(lái)。視圖層使用開(kāi)源軟件Struts作為前端控制器,控制JSP頁(yè)面之間的信息傳遞與流轉(zhuǎn)。視圖層使用遠(yuǎn)程服務(wù)Proxy來(lái)調(diào)用后端的構(gòu)件服務(wù)。Struts包含三個(gè)重要的元素。ActionServlet充當(dāng)前端控制器的角色,負(fù)責(zé)接受用戶界面(如:JSPHtml/Xml等)發(fā)出的Http請(qǐng)求,并調(diào)配服務(wù)器端資源,處理用戶請(qǐng)求并向用戶回送結(jié)果頁(yè)面。ActionForm從Http請(qǐng)求中提取業(yè)務(wù)數(shù)據(jù),并轉(zhuǎn)換成ValueObjeet,同時(shí)還負(fù)責(zé)業(yè)務(wù)數(shù)

55、據(jù)的驗(yàn)證,修剪等工作。Action是處理用戶請(qǐng)求單元。ActionScrvlet根據(jù)配置參數(shù)選擇對(duì)應(yīng)的服務(wù)處理單元。Controller使用SessionBean與MessageBean作為服務(wù)入口,分別提供同步會(huì)話與異步會(huì)話兩種構(gòu)件協(xié)作方式,并提供事務(wù)管理,異常處理等必須的功能??刂茖拥脑O(shè)計(jì)巾使用了責(zé)任鏈模式,通過(guò)責(zé)任鏈把語(yǔ)法檢查,語(yǔ)義分析與匹配等一系列功能作為可選的服務(wù),如圖4.2所示。圖4.2 控制層處理流程圖按照用戶的配置,逐一掛到責(zé)任鏈上,只有通過(guò)了責(zé)任鏈上所有服務(wù)檢查點(diǎn)的核實(shí),消息事件才能到達(dá)目的構(gòu)件。否則,會(huì)生成一個(gè)失敗異常返回給用戶分析。Model負(fù)責(zé)表述業(yè)務(wù)邏輯與數(shù)據(jù),具有兩個(gè)子層:數(shù)據(jù)訪問(wèn)層與業(yè)務(wù)邏輯層數(shù)據(jù)訪問(wèn)層,負(fù)責(zé)把外部數(shù)據(jù)(數(shù)據(jù)庫(kù),XML文件,數(shù)據(jù)文件等)映射成為內(nèi)存中的對(duì)象VO(Value Object,值對(duì)象),它提供了透明的數(shù)據(jù)訪問(wèn)服務(wù)。由于存放在外部數(shù)據(jù)源的業(yè)務(wù)數(shù)據(jù)一般都非常龐大,而且外部存儲(chǔ)器的訪問(wèn)速度比內(nèi)存的訪問(wèn)速度要慢許多,一般慢l至4個(gè)數(shù)量級(jí),需要耗費(fèi)較多的系統(tǒng)時(shí)間,因此數(shù)據(jù)訪問(wèn)構(gòu)件層的必須擁有良好的執(zhí)行效率。業(yè)務(wù)邏輯層,通過(guò)數(shù)據(jù)訪問(wèn)層獲得所需要的業(yè)務(wù)數(shù)據(jù),并提供對(duì)業(yè)務(wù)數(shù)據(jù)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論