J2EE的企業(yè)資產管理系統(tǒng)網(wǎng)上采購模塊分析_第1頁
J2EE的企業(yè)資產管理系統(tǒng)網(wǎng)上采購模塊分析_第2頁
J2EE的企業(yè)資產管理系統(tǒng)網(wǎng)上采購模塊分析_第3頁
J2EE的企業(yè)資產管理系統(tǒng)網(wǎng)上采購模塊分析_第4頁
J2EE的企業(yè)資產管理系統(tǒng)網(wǎng)上采購模塊分析_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

3、TWith 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 man

4、agement 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 emergenc

5、e 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 imperativeThis

6、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 che

7、ck 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 sy

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

27、性查找ActionForm的信息;(3)查找ActionForm的使用范圍,確定在此范圍下是否存在對應的 Form Bean的實例;(4)假如在當前范圍內,相應的 Form Bean的實例己經存在,而且對當前的請求來說是同一類型的話,就可以重用,否則,就要重新構建一個 Form Bean的實例;(5)調用Form Bean的reset()方法;(6)調用對應的set()方法,對狀態(tài)屬性賦值;(7)如果validated屬性值被設置為true,則調用Form Bean的validate()方法;(8)如果validate()方法沒有返回錯誤,控制器將ActionForm作為參數(shù),傳給Action

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

44、在面向對象的設計思想之上的,而ORM(Object Relational Mapping)是Hibernate持久層框架的基本特性,也是Hibernate實現(xiàn)面向對象設計的關鍵技術。ORM為系統(tǒng)面向對象的設計的實現(xiàn)提供了更加自然的實現(xiàn)方式,可以通過ORM將系統(tǒng)中的 Domain Objects自動映像到各個數(shù)據(jù)庫表,從而在編碼過程中只需利用面向對象的方法來處理Objects的相關屬性,而無須對JDBC ResultSets中的字段進行分別處理。(3)可以保證更好的性能。Hibernate持久層框架提供了優(yōu)秀的性能優(yōu)化機制,如內置的數(shù)據(jù)庫連接池支持、PrepareStatement緩存、數(shù)據(jù)緩存

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論