




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 . J2EE的企業(yè)資產(chǎn)管理系統(tǒng)網(wǎng)上采購模塊的設(shè)計(jì)與實(shí)現(xiàn)摘 要隨著經(jīng)濟(jì)一體化進(jìn)程的加快與互聯(lián)網(wǎng)信息技術(shù)的飛速發(fā)展,企業(yè)的信息化的步伐也逐漸加快,從通常的手工操作到辦公自動(dòng)化套件的廣泛應(yīng)用,再到各式各樣企業(yè)管理平臺的大量實(shí)施,以及將來向一體化的方向進(jìn)展,我國的企業(yè)信息化經(jīng)歷了一個(gè)技術(shù)化層面從低到高,集成化程度從分散到集中,管理理念不斷更新,管理方式逐漸走向成熟的過程。期問涌現(xiàn)出許多優(yōu)秀的管理平臺,資產(chǎn)管理系統(tǒng)(EAM)就是其中比較有影響力的一款。EAM系統(tǒng)下的采購管理作為供應(yīng)鏈管理的一個(gè)重要環(huán)節(jié),日漸顯示出其重要性。要想在信息化的浪潮中提高企業(yè)競爭力,建立一套適合企業(yè)發(fā)展的資產(chǎn)管理系統(tǒng)勢在必行,
2、而其中網(wǎng)上采購模塊是其中的一個(gè)重要角色。本系統(tǒng)基于B/S模式,采用應(yīng)用廣泛的J2EE開發(fā)平臺、設(shè)計(jì)與實(shí)現(xiàn)了EAM資產(chǎn)管理系統(tǒng),滿足了企業(yè)管理信息化的需求。系統(tǒng)分為四個(gè)模塊:網(wǎng)上采購、資產(chǎn)核查、資產(chǎn)申請申報(bào)、系統(tǒng)管理。其中網(wǎng)上采購管理模塊目錄管理、信息發(fā)布、報(bào)價(jià)系統(tǒng)構(gòu)成。本文圍繞設(shè)計(jì)與實(shí)現(xiàn)EAM采購管理系統(tǒng),首先對采購管理系統(tǒng)的流程進(jìn)行了詳細(xì)分析,以及各個(gè)模塊與網(wǎng)上采購系統(tǒng)的關(guān)系,明確了需求:然后根據(jù)采購管理系統(tǒng)的需求分析,設(shè)計(jì)了采購管理系統(tǒng)的總體與詳細(xì)架構(gòu),并在此基礎(chǔ)上設(shè)計(jì)了相應(yīng)的數(shù)據(jù)庫;最后展示了采購管理系統(tǒng)的運(yùn)行效果。關(guān)鍵詞:J2EE,EAM,Struts,MVC,采購管理系統(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è)從采購、生產(chǎn)、銷售到全面預(yù)算,處于一個(gè)迅速變化且難于預(yù)測的買方市場,為了提高競爭力,需要采取更加先進(jìn)的制造技術(shù)與管理方法,做出快速響應(yīng)。而實(shí)現(xiàn)按期交貨,滿足客戶的需求,第一個(gè)環(huán)節(jié)就是采購。因此,采購作為企業(yè)運(yùn)作的核心環(huán)節(jié),其地位舉足輕重。采購工作為了企業(yè)生產(chǎn)與管理,以及時(shí)、按質(zhì)與按量的要求供應(yīng)所需的物資,以最小的物資儲(chǔ)備達(dá)到最佳的供貨狀態(tài)。避免物資的積壓與缺料對于一個(gè)企業(yè)來說至關(guān)重要。因此,有必要?jiǎng)?chuàng)建可以集成在EAM的采購管理系統(tǒng),以適應(yīng)電子商務(wù)時(shí)代企業(yè)發(fā)展的需要。該采購管理系統(tǒng)是EAM系統(tǒng)中物流、生產(chǎn)流、資金流中物流與資金流的重要組成部分,在保障信息在不同部門之間的正常流
10、動(dòng),按時(shí)交貨與降低成本起著重要作用。本EAM系統(tǒng)面向中小型制造企業(yè)、適用于多行業(yè)的、可根據(jù)具體業(yè)務(wù)需求進(jìn)行功能裁減并支持企業(yè)業(yè)務(wù)流程重組。并在廣州、珠三角乃至全國制造企業(yè)中推廣應(yīng)用,逐步實(shí)現(xiàn)產(chǎn)業(yè)化。機(jī)械制造業(yè)主要通過對原材料的加工,改造與組裝成為市場所需要的產(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年代至今)。依靠盟測設(shè)備,對設(shè)備運(yùn)行狀態(tài)的進(jìn)行監(jiān)控,然后做出維修決策。通過這種方式,可以大大減輕專業(yè)維修人員的工作量,不僅如此,運(yùn)行人員也可以通過監(jiān)測設(shè)備參與檢修,及時(shí)調(diào)整設(shè)備運(yùn)行狀態(tài),以維護(hù)設(shè)備的正常高效運(yùn)轉(zhuǎn)??v觀設(shè)備維修的
12、發(fā)展史,我們可以發(fā)現(xiàn),每一中設(shè)備維修方法的誕生,都是伴隨著科學(xué)技術(shù)的進(jìn)步應(yīng)運(yùn)而生的。在科學(xué)技術(shù)低下的初期,因?yàn)闆]有先進(jìn)的設(shè)備管理系統(tǒng),設(shè)備維修只能依靠事后維修的方式進(jìn)行;隨著科學(xué)技術(shù)的發(fā)展,首先出現(xiàn)的是低層次的設(shè)備管理系統(tǒng),只能對設(shè)備進(jìn)行簡單的管理,所以可以制定出一定的維修計(jì)劃和設(shè)備的維修周期,進(jìn)行預(yù)防性維護(hù);到了設(shè)備維修的第三個(gè)階段,恰逢信息技術(shù)飛速發(fā)展的時(shí)代,先進(jìn)的管理系統(tǒng),就可以使經(jīng)濟(jì)維修成為可能;到了今天,隨著其他技術(shù),例如監(jiān)測技術(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、平臺就顯得尤為重要,而企業(yè)資產(chǎn)管理系統(tǒng)(EAM)就是在這個(gè)背景下誕生的。EAM的前身是CMMS(Computerized Maintenance Management System:計(jì)算機(jī)化的設(shè)備維護(hù)管理系統(tǒng))。CMMS更多側(cè)重維修管理,包括預(yù)防性、預(yù)測性維修計(jì)劃,從系統(tǒng)的應(yīng)用范圍來看,CMMS更多停留在部門級的水平。EAM系統(tǒng)已經(jīng)在管理的廣度和深度上提高到整個(gè)企業(yè)級,甚至是多企業(yè)的管理,EAM系統(tǒng)支持多組織管理。在這樣的管理模式下,充分保留了各分公司自身的管理特點(diǎn),并在需要時(shí)互相方便地交換信息和共享流程。這樣的EAM系統(tǒng)將幫助管理決策層方便、及時(shí)、完整的了解下屬企業(yè)的運(yùn)營狀況,特別是可以直接
14、在系統(tǒng)中直接對下屬企業(yè)、部門、系統(tǒng)或其混合模式進(jìn)行預(yù)算控制,以此幫助跨國公司、集團(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)變得更加靈活和簡單。隨著計(jì)算機(jī)、數(shù)據(jù)庫,尤其是Internet的廣泛應(yīng)用,EAM系統(tǒng)也從過去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è)對于IT設(shè)施投資,以及維護(hù)的成本。全球EAM軟件及服務(wù)市場規(guī)模早在2000年已超過13億美金,2005年將達(dá)到19億美金。而對
15、于國內(nèi)EAM的市場窄間,各家公司對于具體的數(shù)字說法不一, 而一致的看法是EAM的增長速度是企業(yè)信息產(chǎn)品中發(fā)展最快的。1.3 論文研究內(nèi)容本文對EAM的采購管理系統(tǒng)的各個(gè)模塊進(jìn)行了需求分析,在需求分析的基礎(chǔ)上,設(shè)計(jì)了系統(tǒng)架構(gòu),并實(shí)現(xiàn)了EAM采購管理模塊,滿足了企業(yè)采購信息化的需求。本文的主要工作有:1對采購管理系統(tǒng)進(jìn)行了需求分析。首先,分析了采購管理的總體業(yè)務(wù)流程與采購管理在整個(gè)EAM系統(tǒng)中的地位;然后,將網(wǎng)上超市管理、資產(chǎn)申請、資金申請功能,詳細(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ì)了前臺與后臺的邏輯處理系列圖。4設(shè)計(jì)了相應(yīng)的系統(tǒng)數(shù)據(jù)庫。5對系統(tǒng)模塊中的類與接口、頁面進(jìn)行設(shè)計(jì)與編碼。1.4 論文結(jié)構(gòu)本文分為6章第1章,緒論。簡要敘述了項(xiàng)目背景與開發(fā)采購管理系統(tǒng)的意義,引出了本文主要工作。第2章,系統(tǒng)平臺與技術(shù)。簡單說明了本文涉及的關(guān)鍵技術(shù)J2EE、MVC和SSH框架技術(shù)。第3章,網(wǎng)上采購模塊需求分析。首先分析了采購管理的總體目標(biāo),然后詳細(xì)分析了采購管理涉及的各個(gè)模塊的流程與功能,明確了需求。第4章,網(wǎng)上采購模塊設(shè)計(jì)與實(shí)現(xiàn)。首先設(shè)計(jì)了系統(tǒng)的總體架構(gòu)與原理,然后設(shè)計(jì)了系統(tǒng)的詳細(xì)架構(gòu)設(shè)計(jì)與數(shù)據(jù)庫,最后詳細(xì)闡明系統(tǒng)模塊的主要類
17、與頁面設(shè)計(jì)。以及說明了系統(tǒng)開發(fā)與運(yùn)行環(huán)境,并直觀展現(xiàn)系統(tǒng)部分模塊的運(yùn)行效果。第5章,總結(jié)與展望。對總結(jié)了本文、分析了項(xiàng)目的特點(diǎn)與優(yōu)勢、指明了未來工作的切入點(diǎn)。第2章 系統(tǒng)平臺與技術(shù)2.1 MVC設(shè)計(jì)模式2.1.1 MVC模式的介紹隨著Web開發(fā)的不斷發(fā)展和需要,MVC模式被推薦并成為Sun公司J2EE平臺的設(shè)計(jì)模式,并且在應(yīng)用中受到越來越多的開發(fā)者的歡迎。Model-View-Controller原來是Xerox PARC在八十年代為編程語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)用程序的開發(fā)需要,在開發(fā)與用戶接口相關(guān),特別是對用戶接口要求較復(fù)雜的相關(guān)的應(yīng)用程序時(shí),可以很好地以不同的方式來顯示同一數(shù)據(jù),也就是在不改變軟件功能的前提下,可以實(shí)現(xiàn)用戶對用戶接口的個(gè)性化要求,而MVC模式的最大特點(diǎn)就是將業(yè)務(wù)層與表示層分離,而且提供了很多使顯示接口更加個(gè)性化的卷標(biāo)庫,所以它能更好地實(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平臺的設(shè)計(jì)模式,它強(qiáng)制性地把應(yīng)用程序的輸入、處理和輸出分開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)件對象來處理數(shù)據(jù)庫。被模型返回的數(shù)據(jù)都是中立的,也就是說模型和數(shù)據(jù)格式無關(guān),這樣一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)。由于應(yīng)用于模型的代碼只需寫一次就可以被多個(gè)視圖重用,所以減少了代碼的重復(fù)性。(2)視圖(表示層):即用戶看到并與之交
20、互的接口,是應(yīng)用程序的外在表現(xiàn),通常實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出功能。對老式的Web應(yīng)用程序來說,視圖就是由HTML元素組成的接口,在新式的Web應(yīng)用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術(shù)也層出不窮,它們包括Macromedia Flash和像XHTML、XML/XSL、WML等一些標(biāo)識語言和Web Services。因此如何處理應(yīng)用程序的接口變得越來越有挑戰(zhàn)性。MVC一個(gè)大的好處是它能為你的應(yīng)用程序處理很多不同的視圖。在視圖中其實(shí)沒有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機(jī)存儲(chǔ)的還是一個(gè)雇員列表,作為視圖來講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。(3)控制器(控制層):起到控
21、制整個(gè)業(yè)務(wù)流程的作用,根據(jù)用戶的輸入調(diào)用相應(yīng)的模型和視圖去完成用戶的需求和相關(guān)的操作。具體地來說:控制器本身不輸出任何東西和做出任何處理。它只是接受客戶的請求并進(jìn)一步?jīng)Q定調(diào)用哪個(gè)模型去處理該請求,并根據(jù)處理結(jié)果來確定用哪個(gè)視圖來顯示模型處理之后返回的數(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è)開源專案。Struts作為一個(gè)設(shè)想是Craig R McClanahan于2000年提出的,該設(shè)計(jì)的目標(biāo)是為利用Java技術(shù)開發(fā)基于MVC模式的Web應(yīng)用
22、提供一個(gè)標(biāo)準(zhǔn)模式?;赟truts架構(gòu)的Web應(yīng)用程序基本上符合JSPModel2的設(shè)計(jì)標(biāo)準(zhǔn),是MVC設(shè)計(jì)模式的一種變形,提供了對開發(fā)MVC系統(tǒng)的底層支持,它采用的主要技術(shù)是Servlet、JSP和Custom Tag Library5。Struts框架是一種基于Java的技術(shù),Web應(yīng)用程序開發(fā)人員通過Struts框架即可充分利用面向?qū)ο笤O(shè)計(jì),代碼重用及“編寫一次,到處運(yùn)行”的優(yōu)點(diǎn)。另外,Struts不僅是擁有自己的控制器,同時(shí)整合了其它的一些技術(shù)來實(shí)現(xiàn)模型層和視圖層,例如:在模型層,它可以很容易與數(shù)據(jù)庫的訪問技術(shù)相組合,包括JDBC技術(shù)和EJB技術(shù);在視圖層,它能夠與JSP、XSL等組件相
23、結(jié)合6 。所以從一定的意義上講,采用Struts來實(shí)現(xiàn)基于MVC的Web應(yīng)用的開發(fā),可以根據(jù)具體的需求來選擇設(shè)計(jì)的復(fù)雜程度,具有很好的擴(kuò)展性。Struts的主要優(yōu)勢功能如下:(1)Struts中包含一個(gè)控制器Servlet,用來控制用戶的請求發(fā)送到相應(yīng)的Action對象;(2)在JSP頁面中可以選用自定義標(biāo)簽庫,并且在控制器Servlet中提供關(guān)聯(lián)支持,這樣可以幫助開發(fā)人員方便快捷地創(chuàng)建交互式窗體應(yīng)用;(3)Struts還提供了一系列實(shí)用對象:XML文件處理、通過Java Reflection API自動(dòng)處理JavaBean屬性、國際化的提示和消息。2.2.1 Struts核心組件Struts
24、是一組相互協(xié)作的類、Servlet和JSP標(biāo)記,它們組成了一個(gè)可重用的MVC設(shè)計(jì)模式。這個(gè)定義表示Struts是一個(gè)框架,而不是一個(gè)庫,但同時(shí)Struts也包含了豐富的標(biāo)記庫和獨(dú)立于該框架工作的實(shí)用程序類庫。Struts通過一些組件類來完成框架的功能,這些組件包括:ActionServlet、Action、ActionForm、ActionForward、ActionMapping。1. ActionServletActionServlet繼承自javax.servlet.http.HttpServlet類,它在struts中扮演的角色是中心控制器。它提供了一個(gè)中心位置來主要負(fù)責(zé)將Http客戶
25、請求組裝后,根據(jù)配置文件的指定的描述,轉(zhuǎn)發(fā)到適當(dāng)?shù)奶幚砥鳌A硗?,除了作為?yīng)用程序的前端控制器外,ActionServlet實(shí)例還負(fù)責(zé)初始化和清除應(yīng)用程序的資源。2. Action一個(gè)Action類的角色,就像是客戶請求動(dòng)作和業(yè)務(wù)邏輯處理之間的適配器,它作為應(yīng)用程序響應(yīng)用戶請求的動(dòng)作,將請求與業(yè)務(wù)邏輯分開。這樣用戶的請求和Action類之間可以有多個(gè)點(diǎn)對點(diǎn)的映射。Action最為常用的方法是execute(),典型的Action類一般要在execute()方法中實(shí)現(xiàn)下列邏輯:(l)檢查用戶session的當(dāng)前狀態(tài)。如果session過期或者用戶沒有登錄,要將表示層的頁面跳轉(zhuǎn)到用戶登錄頁面;(2)
26、檢查用戶輸入的合法性。調(diào)用Form Bean實(shí)例的validate()方法檢查一些字段的輸入值是否恰當(dāng)或合法;(3)執(zhí)行業(yè)務(wù)操作。調(diào)用業(yè)務(wù)邏輯Bean的相應(yīng)方法執(zhí)行用戶的業(yè)務(wù)請求;(4)更新服務(wù)器端的對象。將Model的狀態(tài)改變通知給View,并返回請求頁面。3. ActionForm一個(gè)應(yīng)用系統(tǒng)的消息轉(zhuǎn)移(或者說狀態(tài)轉(zhuǎn)移)的非持久性數(shù)據(jù)的存儲(chǔ),通常由ActionForm Bean來負(fù)責(zé),它的主要功能是為Action的操作提供與客戶窗體相映像的數(shù)據(jù)。對于每一個(gè)客戶的請求,一般要經(jīng)歷如下幾個(gè)步驟:(l)檢查Action的映像,確定配置文件中己經(jīng)配置了對ActionForm的映像;(2)根據(jù)Nam
27、e屬性查找ActionForm的信息;(3)查找ActionForm的使用范圍,確定在此范圍下是否存在對應(yīng)的 Form Bean的實(shí)例;(4)假如在當(dāng)前范圍內(nèi),相應(yīng)的 Form Bean的實(shí)例己經(jīng)存在,而且對當(dāng)前的請求來說是同一類型的話,就可以重用,否則,就要重新構(gòu)建一個(gè) Form Bean的實(shí)例;(5)調(diào)用Form Bean的reset()方法;(6)調(diào)用對應(yīng)的set()方法,對狀態(tài)屬性賦值;(7)如果validated屬性值被設(shè)置為true,則調(diào)用Form Bean的validate()方法;(8)如果validate()方法沒有返回錯(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的主要功能就是對將要轉(zhuǎn)向的視圖的地址的一個(gè)封裝。轉(zhuǎn)向的各種屬性也可以在配置文件中設(shè)置性,這樣就大大提高了軟件的復(fù)用性和可維護(hù)性。 5. ActionMappingActionMapping以Java的形式封裝了怎樣將一個(gè)請求URL映射到與其對應(yīng)的Action的一些信息。ActionMapping對象幫助進(jìn)行框架內(nèi)部的流程控制,它們可以將請求URL映像到Action類,并且將Action類與
29、ActionForm Bean相關(guān)聯(lián)。Struts框架的控制器ActionServlet在內(nèi)部使用這些映射將控制轉(zhuǎn)移到特定的Action類的實(shí)例。2.2.2 Struts的工作流程采用Struts框架開發(fā)Web應(yīng)用系統(tǒng)時(shí),在Web應(yīng)用啟動(dòng)時(shí)就會(huì)自動(dòng)地加載并初始化ActionServlet,此時(shí)ActionServlet將會(huì)從Struts-config.xml文件讀取配置信息,并把它們存放到各種對應(yīng)的配置對象中。當(dāng)ActionServlet接受到一個(gè)客戶請求時(shí),將執(zhí)行如下流程:(l)檢索與用戶請求匹配的Action實(shí)例,如果不存在,控制器直接將請求轉(zhuǎn)發(fā)給JSP或靜態(tài)頁面;如果有對應(yīng)的Action
30、,并且這個(gè)Action有一個(gè)相應(yīng)的Form Bean,ActionForm被實(shí)例化并用Http請求的數(shù)據(jù)來填充其屬性,然后保存在ServletCotenxt中,以備其它Action對象或JSP調(diào)用。(2)控制器根據(jù)Struts-config.xml的配置信息將請求切換到具體的Action,對應(yīng)的相關(guān)的 Form Bean的信息也一起發(fā)送給Action類的execute()方法。(3) Action的execute()方法返回一個(gè)ActionForward對象,控制器ActionServlet再通過該ActionForward對象來進(jìn)行轉(zhuǎn)發(fā)工作。(4) Action根據(jù)業(yè)務(wù)處理的不同結(jié)果返回一個(gè)
31、相應(yīng)的目標(biāo)響應(yīng)對象給總控制器,這個(gè)目標(biāo)響應(yīng)對象可以對應(yīng)一個(gè)具體的JSP頁面或者是另外一個(gè)Action。(5)總控制器ActionServlet根據(jù)業(yè)務(wù)功能Action返回的目標(biāo)響應(yīng)對象(多數(shù)情況下,該響應(yīng)目標(biāo)是一個(gè)JSP頁面),將Http請求轉(zhuǎn)換到該目標(biāo)響應(yīng)對象中,進(jìn)一步將結(jié)果頁面展現(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ì)模式需要用戶將自己的代碼抽象出來,把項(xiàng)目在一定的程度上分解為表示,邏輯和控制三部分,每部分之間的關(guān)系相對較小,以便使得軟
32、件結(jié)構(gòu)更加靈活,并具有較好的可重用性和可擴(kuò)展性。在Struts框架中,模型一般有實(shí)現(xiàn)業(yè)務(wù)邏輯的JavaBean或EJB組件構(gòu)成,控制器由ActionServlet和Action來實(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對Model、View和Controller都提供了對應(yīng)的實(shí)現(xiàn)組件:(l)控制器(Controller):控制器的作用是從客戶端接收請求,并且選擇執(zhí)行相應(yīng)的業(yè)務(wù)邏輯,然后把響應(yīng)結(jié)果送回到客
33、戶端。在Struts中Controller功能由ActionServlet和ActionMapping對象構(gòu)成。ActionServlet是MVC設(shè)計(jì)模式的決策控制部分,也是Struts框架的核心。它根據(jù)ActionMapping把Http消息形式的用戶請求轉(zhuǎn)換成相應(yīng)的應(yīng)用程序的動(dòng)作。ActionServlet還負(fù)責(zé)用相應(yīng)的請求參數(shù)填充ActionForm(通常稱之為FormBean),并將其傳給對應(yīng)的動(dòng)作類(通常稱之為ActionBean)。動(dòng)作類Action來實(shí)現(xiàn)核心商業(yè)邏輯,它可以訪問JavaBean或調(diào)用EJB,最后動(dòng)作類指向相應(yīng)的JSP檔,最終生成相關(guān)的視圖。ActionServle
34、t包括一組基于配置的ActionMapping對象,每個(gè)ActionMapping對象實(shí)現(xiàn)了一個(gè)請求到一個(gè)具體的Model部分中Action處理器對象類之間的點(diǎn)到點(diǎn)的映像。ActionMapping中有Action對象的名字和地址的描述,當(dāng)有請求傳入Controller時(shí),它把請求的路徑映像到Action的地址,并把請求傳給那個(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對象,所有的Action處理器對象都是程序開發(fā)者從Struts的Action類派生的子類,并對其中主要的方法進(jìn)行覆蓋。Action處理器對象封裝了具體的業(yè)務(wù)處理邏輯,處理具體的業(yè)務(wù)邏輯操作,并且把響應(yīng)提交到合適的View組件以產(chǎn)生響應(yīng)。Struts提供的ActionForm組件對象,可以通過定義屬性描述客戶端窗體數(shù)據(jù)。我們可以從它派生子類的對象,利用它可以實(shí)現(xiàn)對客戶端的窗體數(shù)據(jù)的良好封裝和支持,相應(yīng)的Action處理器對象可以直接對它的窗體數(shù)據(jù)進(jìn)行讀寫,而不再需要和Request、Response對象進(jìn)行數(shù)據(jù)交互,通過ActionFo
36、rm組件對象實(shí)現(xiàn)了對View和Model之間非持久性數(shù)據(jù)交互的支持。(3)視圖(View):視圖是用戶看到并與之交互的界面。Struts應(yīng)用中的View部分是通過JSP技術(shù)實(shí)現(xiàn)的。Struts提供了自定義的標(biāo)簽庫,通過使用這些卷標(biāo)定義的JSP窗體可以和Model部分中的ActionForm的映像,完成對用戶數(shù)據(jù)的相關(guān)封裝,同時(shí)還可以使用這些標(biāo)簽來豐富JSP頁面。2.3 數(shù)據(jù)持久技術(shù)與Hibernate在采用了Struts技術(shù)的框架中,Struts簡化了Web層的開發(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ù)性,提高開發(fā)效率,需要一個(gè)更加有效的架構(gòu)。因?yàn)榇蠖鄶?shù)的應(yīng)用程序都涉及到的數(shù)據(jù)庫操作,通常數(shù)據(jù)庫表會(huì)很多而且關(guān)系復(fù)雜,如果使用DAO+JDBC訪問數(shù)據(jù)庫將會(huì)使得編程過程復(fù)雜化,進(jìn)而帶來的是大量的維護(hù)工作,特別是層與層之間的耦合性大,表格屬性的變動(dòng)將極大的影響代碼的維護(hù),因此需要有一種方便通用的方案來解決這個(gè)問題。這里將采用對象/關(guān)系映像(Object/Relational Mapping)的數(shù)據(jù)持久化技術(shù)來簡化編程的復(fù)雜度,目前實(shí)現(xiàn)對象關(guān)系映像也已經(jīng)有一些比較成熟的工具,如C
38、aster,JDOGenie,Hibernate等。本文主要應(yīng)用Hibernate:在Struts中,不需要太多的代碼,它能夠?qū)ο笥诚竦疥P(guān)系數(shù)據(jù)庫中的行,不需要編寫復(fù)雜的SQL語句,開發(fā)架構(gòu)也就變成Struts+ DAO+ Hibernate+Database,毫無疑問使用Hibemate實(shí)現(xiàn)持久層是一種有效的選擇,它可以大大減少操作數(shù)據(jù)庫的工作量,并且使得系統(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)的對象。它可以直接映像大部分的JavaBean而不需要做任何修改,即使修改最多也就是在對應(yīng)的Bean里面加上一些私有訪問方法;可以將一個(gè)用戶定義的多個(gè)實(shí)例映像到一張表的同一行;還可以用代理模式簡化加載類的過程14。對于使用JDBC和SQL手工操作數(shù)據(jù)庫來說,使用Hibernate,可以大大減少操作數(shù)據(jù)庫的工作量。因此使用它,既可以用來在Java應(yīng)用程序中取代大部分JDBC代碼,也可以很方便地整合到系統(tǒng)中作為持久層框架。Hibernate使用數(shù)據(jù)庫和配置文件數(shù)據(jù)來給應(yīng)用程序提供相應(yīng)的持久化服務(wù)和持久化的對象PO(Pers
40、istent Objects)。通過簡單地設(shè)置配置文件hibernate.xml和創(chuàng)建每個(gè)數(shù)據(jù)庫表的xml映像文件,可以省去大量復(fù)雜的JDBC編程,Hibernate可以支持17種數(shù)據(jù)庫,同時(shí)它也支持連接池應(yīng)用。2.Hibernate的特點(diǎn)(1)Hibernate是JDBC的輕量級的對象封裝,它是一個(gè)獨(dú)立的對象持久層框架。Hibernate的特點(diǎn)主要是簡單、易用、強(qiáng)大、靈活而且速度夠快。Hibernate可以代替JDBC的編程應(yīng)用的場合,例如Java應(yīng)用程序中訪問數(shù)據(jù)庫部分的代碼,DAO模型中接入數(shù)據(jù)庫時(shí)的訪問代碼,甚至可以是BMP里面的訪問數(shù)據(jù)庫的代碼。另外,Hibernate擁有自己的功能
41、強(qiáng)大的查詢語言 (HQL),HQL與SQL非常相似,HQL基于SQL,但它提供了更加面向?qū)ο蟮姆庋b。(2)Hibernate不同于Entity Bean。Entity Bean由容器處理大部分的資料完整性、資源管理和并發(fā)性功能,因此開發(fā)人員只需要關(guān)注業(yè)務(wù)邏輯和數(shù)據(jù)處理。從軟件整體的框架來看,Hibernate不能用于完全替代 Entity Bean。Hibernate和 Entity Bean都為程序員實(shí)現(xiàn)了透明的持久性,而且程序員都不需要關(guān)心太多的技術(shù)細(xì)節(jié)15。Hibernate另外也為我們提供了更靈活的事務(wù)管理機(jī)制,Hibernate使用Session來管理事務(wù),而 Entity Bean
42、則將事務(wù)管理委派給了EJB容器。Hibernate雖然具有自己的事務(wù)管理,但是實(shí)際上它的事務(wù)管理是對 JDBC Transaction的封裝,或者是對 JTA Transaction的封裝,也就是上面提到的,Hibernate是對JDBC的輕量級對象封裝。值得注意的是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ù)庫有關(guān)系,而與Java程序或者APP Server
43、沒有任何關(guān)系。(4)靈活的對象-系映像方法,可以實(shí)現(xiàn)各種不同類型的映射,而且Hibernate具有簡單易于操作的API接口和豐富的資源配置文文件,這些都使得應(yīng)用程序的開發(fā)更加簡單和快捷。3.Hibernate持久化框架的作用在軟件開發(fā)過程中引入成熟的持久化實(shí)現(xiàn)框架,大大提高了數(shù)據(jù)庫訪問層的開發(fā)效率,具體表現(xiàn)在以下幾個(gè)方面:(l)可以減少乏味代碼的編寫。Hibernate持久層框架封裝了數(shù)據(jù)持久層的很多相關(guān)的技術(shù)細(xì)節(jié),例如事物管理、數(shù)據(jù)庫連接管理、SQL語句的生成等,使得開發(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)方式,可以通過ORM將系統(tǒng)中的 Domain Objects自動(dòng)映像到各個(gè)數(shù)據(jù)庫表,從而在編碼過程中只需利用面向?qū)ο蟮姆椒▉硖幚鞳bjects的相關(guān)屬性,而無須對JDBC ResultSets中的字段進(jìn)行分別處理。(3)可以保證更好的性能。Hibernate持久層框架提供了優(yōu)秀的性能優(yōu)化機(jī)制,如內(nèi)置的數(shù)據(jù)庫連接池支持、PrepareStatement緩存、數(shù)據(jù)
45、緩存等。這些對于上層架構(gòu)完全透明的優(yōu)化機(jī)制的綜合使用大大提高了系統(tǒng)的性能。(4)更好的可移植性?;贘ava的跨平臺特性,開發(fā)的軟件系統(tǒng)可以在不同的操作系統(tǒng)之間切換,但由于數(shù)據(jù)庫之間的差異,系統(tǒng)在數(shù)據(jù)庫平臺之間移植并不太容易實(shí)現(xiàn)。而Hibernate持久層框架由于其設(shè)計(jì)上的良好隔離,提供了對不同數(shù)據(jù)庫的良好支持,只需簡單地修改其配置文件中的數(shù)據(jù)庫的屬性參數(shù),即可實(shí)現(xiàn)底層數(shù)據(jù)庫的切換,更好地提高了系統(tǒng)的可移植性,也更好地保護(hù)了己有的人力和資源投入。2.4 Spring框架的應(yīng)用 Spring是一個(gè)開源框架,它由Rod Johnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用
46、基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。傳統(tǒng)J2EE應(yīng)用的開發(fā)效率低,應(yīng)用服務(wù)器廠商對各種技術(shù)的支持并沒有真正統(tǒng)一,導(dǎo)致J2EE的應(yīng)用沒有真正實(shí)現(xiàn)Write Once及Run Anywhere的承諾。Spring作為開源的中間件,獨(dú)立于各種應(yīng)用服務(wù)器,甚至無須應(yīng)用服務(wù)器的支持,也能提供應(yīng)用服務(wù)器的功能,如聲明式事務(wù)等。Spring致力于J2EE應(yīng)用的各層的解決方案,而不是僅僅專注于某一層的方案16??梢哉fSpring是企業(yè)應(yīng)用開發(fā)的“一站式”選擇,
47、并貫穿表現(xiàn)層、業(yè)務(wù)層及持久層。然而,Spring并不想取代那些已有的框架,而與它們無縫地整合。簡單來說,Spring是一個(gè)一個(gè)輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架:(1)輕量:大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個(gè)大小只有1MB多的JAR檔里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對象不依賴于Spring的特定類。(2)控制反轉(zhuǎn):Spring通過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了IoC,一個(gè)對象依賴的其它對象會(huì)通過被動(dòng)的方式傳遞進(jìn)來,而不是這個(gè)對
48、象自己創(chuàng)建或者查找依賴對象。你可以認(rèn)為IoC與JNDI相反像從容器中查找依賴,而是容器在對象初始化時(shí)不等對象請求就主動(dòng)將依賴傳遞給它。(3)面向切面:Spring提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)(例如審計(jì)(auditing)和事務(wù)管理)進(jìn)行內(nèi)聚性的開發(fā)。應(yīng)用對象只實(shí)現(xiàn)它們應(yīng)該做的完成業(yè)務(wù)邏輯僅此而已。它們并不負(fù)責(zé)(甚至是意識)其它的系統(tǒng)級關(guān)注點(diǎn),例如日志或事務(wù)支持。(4)容器:Spring包含并管理應(yīng)用對象的配置和生命周期,在這個(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)的重量級的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。(5)框架:Spring可以將簡單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對象被聲明式地組合,典型地是在一個(gè)XML檔里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等)。所有Spring的這些特征使編程更干凈、更可管理、并且更易于測試的代碼。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。第3章 網(wǎng)上采購模塊需求分析3.1 采購業(yè)務(wù)程分析整個(gè)資產(chǎn)管理系統(tǒng)模塊結(jié)構(gòu)如圖3-1所示。圖3.1 資產(chǎn)管理系統(tǒng)模塊結(jié)構(gòu)圖網(wǎng)
50、上采購功能支持從計(jì)劃、訂單、收貨、收票,到結(jié)算的全過程的管理。實(shí)現(xiàn)采購系統(tǒng)的物流、資金流、信息流的統(tǒng)一。通過采購過程中價(jià)格管理及事后成本分析,達(dá)到穩(wěn)定產(chǎn)品質(zhì)量,降低采購成本目的。對采購業(yè)務(wù)中的帳務(wù)處理提供支持。采購管理模塊與資產(chǎn)核查、資產(chǎn)申報(bào)、等模塊形成良好接口。采購管理系統(tǒng)涉及到的模塊如圖32所示。圖3.2 采購管理系統(tǒng)結(jié)構(gòu)采購管理全流程涉及員工、部門經(jīng)理、財(cái)務(wù)經(jīng)理、采購員等角色。各個(gè)角色相互協(xié)作,共同完成采購管理這一流程,如圖33所示。圖3.3 采購管理流程3.2 采購業(yè)務(wù)流程詳細(xì)分析采購模塊的包含有有3個(gè)主要功能:網(wǎng)上超市管理,采購申請,資金管理。3.2.1 網(wǎng)上超市管理需求分析包括目錄
51、管理、信息發(fā)布和報(bào)價(jià)系統(tǒng)。目錄管理提供界面方便用戶瀏覽商品,以購物車的方式選取商品,用戶可隨時(shí)查看自己所選擇的商品。在超市中選完商品后,可自動(dòng)生成并保存物資采購申報(bào)表,并可根據(jù)資金情況決定是否能打印輸出。報(bào)價(jià)系統(tǒng)在員工選擇商品時(shí),會(huì)實(shí)時(shí)顯示所選商品的累計(jì)金額、已申報(bào)金額及估計(jì)剩余金額。3.2.2 采購申請需求分析員工在提交了采購訂單之后,交由項(xiàng)目經(jīng)理進(jìn)行審批,如果通過,項(xiàng)目經(jīng)理便通過核查進(jìn)一步提交采購申請。若經(jīng)理不能通過審批則可修改訂單后再提出申請。圖3.4 申購資產(chǎn)流程圖3.2.3 資金管理需求分析部門經(jīng)理提出采購申請之后,有財(cái)務(wù)部門經(jīng)理進(jìn)行審查圖3.5 資金管理流程圖第4章 網(wǎng)上采購模塊的
52、功能分析與設(shè)計(jì)本章主要介紹資產(chǎn)管理系統(tǒng)的采購模塊,以及采用MVC設(shè)計(jì)模式的體系結(jié)構(gòu),這里以該子系統(tǒng)中賬戶管理模塊的設(shè)計(jì)為例說明整個(gè)設(shè)計(jì)開發(fā)過程,其它模塊的設(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í)行請求的操作),視圖層(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ā)送的通知,更新顯示。對于Web應(yīng)用的開發(fā)模型,相對于傳統(tǒng)的三層結(jié)構(gòu),MVC更符合面向?qū)ο蟮脑O(shè)計(jì)思想。多個(gè)視圖使用同一個(gè)模型。模型與視圖的分開使多個(gè)視圖可以使用相同的企業(yè)模型。因此,企業(yè)應(yīng)用程序的模型組件就更容易實(shí)現(xiàn)
54、,測試與維護(hù),因?yàn)樗袑δP偷脑L問都要經(jīng)過這些組件。對客戶機(jī)的新類型更容易支持。要支持客戶機(jī)的新類型,只需為其編寫一個(gè)視圖與控制器,然后在已有的企業(yè)模型中將它們連起來。視圖層使用開源軟件Struts作為前端控制器,控制JSP頁面之間的信息傳遞與流轉(zhuǎn)。視圖層使用遠(yuǎn)程服務(wù)Proxy來調(diào)用后端的構(gòu)件服務(wù)。Struts包含三個(gè)重要的元素。ActionServlet充當(dāng)前端控制器的角色,負(fù)責(zé)接受用戶界面(如:JSPHtml/Xml等)發(fā)出的Http請求,并調(diào)配服務(wù)器端資源,處理用戶請求并向用戶回送結(jié)果頁面。ActionForm從Http請求中提取業(yè)務(wù)數(shù)據(jù),并轉(zhuǎn)換成ValueObjeet,同時(shí)還負(fù)責(zé)業(yè)務(wù)數(shù)
55、據(jù)的驗(yàn)證,修剪等工作。Action是處理用戶請求單元。ActionScrvlet根據(jù)配置參數(shù)選擇對應(yīng)的服務(wù)處理單元。Controller使用SessionBean與MessageBean作為服務(wù)入口,分別提供同步會(huì)話與異步會(huì)話兩種構(gòu)件協(xié)作方式,并提供事務(wù)管理,異常處理等必須的功能。控制層的設(shè)計(jì)巾使用了責(zé)任鏈模式,通過責(zé)任鏈把語法檢查,語義分析與匹配等一系列功能作為可選的服務(wù),如圖4.2所示。圖4.2 控制層處理流程圖按照用戶的配置,逐一掛到責(zé)任鏈上,只有通過了責(zé)任鏈上所有服務(wù)檢查點(diǎn)的核實(shí),消息事件才能到達(dá)目的構(gòu)件。否則,會(huì)生成一個(gè)失敗異常返回給用戶分析。Model負(fù)責(zé)表述業(yè)務(wù)邏輯與數(shù)據(jù),具有兩個(gè)子層:數(shù)據(jù)訪問層與業(yè)務(wù)邏輯層數(shù)據(jù)訪問層,負(fù)責(zé)把外部數(shù)據(jù)(數(shù)據(jù)庫,XML文件,數(shù)據(jù)文件等)映射成為內(nèi)存中的對象VO(Value Object,值對象),它提供了透明的數(shù)據(jù)訪問服務(wù)。由于存放在外部數(shù)據(jù)源的業(yè)務(wù)數(shù)據(jù)一般都非常龐大,而且外部存儲(chǔ)器的訪問速度比內(nèi)存的訪問速度要慢許多,一般慢l至4個(gè)數(shù)量級,需要耗費(fèi)較多的系統(tǒng)時(shí)間,因此數(shù)據(jù)訪問構(gòu)件層的必須擁有良好的執(zhí)行效率。業(yè)務(wù)邏輯層,通過數(shù)據(jù)訪問層獲得所需要的業(yè)務(wù)數(shù)據(jù),并提供對業(yè)務(wù)數(shù)據(jù)
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 培養(yǎng)跨行業(yè)技能的重要性計(jì)劃
- 七年級下冊《幾何圖形與圖文信息問題》課件與練習(xí)
- 2025年氣體摻混設(shè)備項(xiàng)目建議書
- 2025年中文信息處理平臺項(xiàng)目發(fā)展計(jì)劃
- 2025年衛(wèi)星數(shù)據(jù)采集系統(tǒng)項(xiàng)目發(fā)展計(jì)劃
- 2025年EMI屏蔽材料項(xiàng)目發(fā)展計(jì)劃
- 冷鏈物流溫度監(jiān)控實(shí)施細(xì)節(jié)
- 電影制作與發(fā)行合作框架
- 2025年活性白土項(xiàng)目建議書
- 案場物業(yè)經(jīng)理年終工作總結(jié)
- 北師大版五年級下冊數(shù)學(xué)早讀課所背知識點(diǎn)
- 實(shí)驗(yàn)室儀器設(shè)備驗(yàn)收單
- 特殊教育概論第二版PPT完整全套教學(xué)課件
- 高教社高職國際英語 進(jìn)階綜合教程 第2冊 PPT課件高職國際英語進(jìn)階教程第2 冊unit1課文原文和譯文
- 病理科各項(xiàng)制度匯編樣本
- 費(fèi)用通用報(bào)銷單
- PFMEA-沖壓過程模板
- 高中體育足球教學(xué)教案 全冊
- 計(jì)算機(jī)視覺PPT完整全套教學(xué)課件
- 第五章-公眾責(zé)任保險(xiǎn)課件
- 口內(nèi)數(shù)字化印模
評論
0/150
提交評論