基于MVC的客戶管理子系統(tǒng)的設計與實現(xiàn)_第1頁
基于MVC的客戶管理子系統(tǒng)的設計與實現(xiàn)_第2頁
基于MVC的客戶管理子系統(tǒng)的設計與實現(xiàn)_第3頁
基于MVC的客戶管理子系統(tǒng)的設計與實現(xiàn)_第4頁
基于MVC的客戶管理子系統(tǒng)的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 學號_ 密級_武漢大學本科畢業(yè)論文基于MVC的客戶管理子系統(tǒng)的設計與實現(xiàn)院(系)名 稱:國際軟件學院專 業(yè) 名 稱 :軟件工程學 生 姓 名 :查智指 導 教 師 :李曉劍 二九年五月鄭 重 聲 明本人呈交的學位論文,是在導師的指導下,獨立進行研究工作所取得的成果,所有數(shù)據(jù)、圖片資料真實可靠。盡我所知,除文中已經(jīng)注明引用的內(nèi)容外,本學位論文的研究成果不包含他人享有著作權的內(nèi)容。對本論文所涉及的研究工作做出貢獻的其他個人和集體,均已在文中以明確的方式標明。本學位論文的知識產(chǎn)權歸屬于培養(yǎng)單位。本人簽名: 日期: sBACHELOR'S DEGREE THESIS OF WUHAN UNI

2、VERSITY The Research and Implementation of Client Management System Based on MVCCollege :Subject :Software EngineeringName : ZhazhiDirected by : May 2009 摘 要隨著金融業(yè)的不斷發(fā)展,各商業(yè)銀行越來越注重信用卡業(yè)務的開拓,信用卡管理的信息化,也隨著計算機技術的發(fā)展,在不斷地完善提高。信用卡管理信息的多樣化和數(shù)據(jù)資源的復雜性,都對信用卡管理軟件的實現(xiàn)模式提出了很高的要求,而基于Web 的傳統(tǒng)的軟件構(gòu)架已經(jīng)不能滿足軟件設計的要求,很多新興

3、技術的發(fā)展和應用正在不斷地改善傳統(tǒng)的開發(fā)設計構(gòu)架。本文結(jié)合信用卡管理的需求和當前比較先進的設計思想,利用MVC設計模式進行設計,并對該設計模式進行了改進,加入了數(shù)據(jù)持久層和業(yè)務邏輯層的實現(xiàn)。Struts是基于MVC模式的Web應用開發(fā)框架。它有效的分離了表示層和業(yè)務邏輯層,但它并沒用對復雜的數(shù)據(jù)持久層提供支持。而Hibernate提供了靈活的數(shù)據(jù)持久層支持。因此通過將這兩個框架整合起來,并結(jié)合貫穿整個表現(xiàn)層、業(yè)務層、持久層的Spring,可以得到一個開發(fā)靈活、低耦合及易擴展的企業(yè)應用完整解決方案。UML(Unified Modeling Language) 是一種通用的可視化建模語言。由于其定

4、義良好、易于使用、功能強大且普遍適用的特點,并且融合了當前一些面向?qū)ο蟮闹饕拍詈图夹g,已經(jīng)成為軟件開發(fā)事實上的標準。結(jié)合商業(yè)銀行相關標準,本文設計并實現(xiàn)了一個基于Struts、Hibernate和Spring的信用卡管理系統(tǒng)中的客戶管理子系統(tǒng)。系統(tǒng)采用UML語言和面向?qū)ο蟮姆椒ㄟM行系統(tǒng)分析和設計,從而降低了開發(fā)風險,提高了開發(fā)效率。系統(tǒng)基本實現(xiàn)了信用卡客戶管理的功能,如賬戶管理、存取款管理、結(jié)算管理、賬單管理等。關鍵詞: MVC;Struts;Hibernate;UMLABSTRACTWith the banking business and the computer technology

5、developing fast, credit card management is becoming more and more important, and the informatization of credit card management is developing well. Since the information related to credit card management is very multiple and the data is very complex, the requirement to the design mode of credit card

6、management software is high; whats more, the traditional Web design mode can never meet the requirement. Combined with the situation of credit card management and the present advanced design method, the thesis develops the software based on MVC model with adding a data persistence manager layer and

7、a business logic layer.Struts is a development framework based on MVC pattern for Web applications. It provides a way to separate presentation layer and business logic layer, but it does not support complex data persistent layer. Hibernate is a framework for flexible data persistent layer. Thus, by

8、combining the two with the Spring which throughout the presentation layer, business layer, persistence layer; we can obtain a comprehensive solution for enterprise application integration which can achieve flexible development, loose coupling and expansibility. UML is a commonly-used visual modeling

9、 language. Because of its features such as well definition, easy to use, powerful function and pervasive usage, and integration with object-oriented concepts and technology, it has become a de facto standard of software development.Combination of commercial bank-related standards, we design and impl

10、ement a client management system of credit card management system based on Struts, Hibernate and Spring. We apply UML modeling language and object-oriented method to conducting system analysis and design. By doing this, the risk of software development is reduced and the efficiency is increased. Thi

11、s system meets the basic functional requirement of the client management including account management, deposit management, billing management, bill management.Key Words: client management system, MVC, Struts, Hibernate, Spring, UML第1章 引言1.1 選題的目的和意義隨著經(jīng)濟全球化的推進與中國金融業(yè)改革的不斷深化,人們的生活消費方式也有了顯著的變化,最明顯的就是人們隨

12、身攜帶的不再是大量的現(xiàn)金,而是一張張小而輕巧的信用卡。信用卡(Credit Card)作為非現(xiàn)金交易付款方式,以其便于攜帶、使用方便、交易安全等優(yōu)點,在歐美國家得到了普遍地使用。本世紀初,信用卡開始在中國流行,近幾年來得到了迅速的發(fā)展,據(jù)統(tǒng)計,截至2008年6月30日,中國信用卡發(fā)行量已猛增到1.22億張。目前,多數(shù)商業(yè)銀行都推出了信用卡業(yè)務,隨著發(fā)卡量的增加,如何提高信用卡管理與結(jié)算效率并將信用卡管理人員從繁雜的手工勞動中解放出來,成為一個迫切需要解決的問題。在這樣的背景之下,“軟酷網(wǎng)”卓越實驗室研發(fā)六部經(jīng)過分析研究,選擇了“信用卡管理系統(tǒng)”作為實訓項目。該系統(tǒng)采用便于使用與維護的B/S開發(fā)

13、模式,這樣信用卡管理人員只需要通過瀏覽器便可在銀行內(nèi)網(wǎng)中進行各項管理操作,同時還采用了基于MVC(Model-View-Controller)的Struts+Spring+Hiberate框架進行軟件的開發(fā),能夠很好的實現(xiàn)模型與表示層的分離,由控制器來進行業(yè)務流程控制,符合J2EE Web應用系統(tǒng)開發(fā)的基本要求,也有利于軟件后期的升級與維護。1.2 信用卡管理系統(tǒng)的發(fā)展狀況近年來,隨著網(wǎng)絡技術和金融業(yè)的不斷發(fā)展,各商業(yè)銀行越來越注重信用卡業(yè)務的開拓,因此對信用卡管理提出了更高的要求。改變原有的管理模式,運用先進的手段進行管理,已經(jīng)成為現(xiàn)在信用卡管理的必然選擇。這樣,各種針對信用卡管理的應用軟件

14、不斷涌現(xiàn),并且經(jīng)歷了從單機版到網(wǎng)絡版的轉(zhuǎn)化。網(wǎng)絡信用卡管理軟件的發(fā)展更加有力地提高了信用卡管理水平,借助金融業(yè)網(wǎng)絡信用體系構(gòu)建信用卡管理系統(tǒng),可以合理利用Internet的網(wǎng)絡資源和Web跨平臺的數(shù)據(jù)訪問能力,通過網(wǎng)絡來進行交易記賬、結(jié)算及存取款,信用卡用戶們可以通過瀏覽器來直接參與信用卡的管理。同時,信用卡系統(tǒng)的管理人員可以很方便地獲取及時、準確、全面的數(shù)據(jù)和相關信息,將銀行卡部員工從繁瑣的手工勞動中解放出來,提高生產(chǎn)率,進而從整體上提高了信用卡管理的水平。然而信用卡管理系統(tǒng)的設計也不能一勞永逸,由于各商業(yè)銀行經(jīng)營理念的不同、結(jié)算體系的不同及信用評估的不同,而各不相同,沒有統(tǒng)一的標準,也很難

15、建立一個統(tǒng)一的標準,系統(tǒng)的適用性、通用性很難實現(xiàn)。所以,現(xiàn)在信用卡軟件的開發(fā)設計在向各種流行的設計模式靠攏提高系統(tǒng)的可移植性和可擴展性的同時,還要考慮到自身信用卡管理的特點,以便更好地滿足信用卡管理的需求。1.3 論文研究內(nèi)容當前計算機技術越來越趨于成熟,各種設計思想不斷涌現(xiàn),MVC成為適用于各種大型Web應用的構(gòu)架技術。它的目的就說最大限度地降低系統(tǒng)各部分之間地耦合度,提高系統(tǒng)的可擴展性,提高代碼的重用率1?;贛VC的J2EE技術的應用更是廣泛,本文這里也主要采用Struts框架來實現(xiàn)上述技術,并以此作為信用卡管理子系統(tǒng)的技術解決方案。本文的主要工作如下:(1)詳細介紹了MVC開發(fā)模式的設

16、計思想,分析了兩種常見的JSP Model的優(yōu)缺點,并介紹了實現(xiàn)MVC設計思想的Struts框架,并分析了Struts的工作流程,以及Struts開發(fā)的優(yōu)勢。(2)以MVC模型為設計思想,運用Struts框架來實現(xiàn)信用卡管理系統(tǒng)的開發(fā)設計。本文采用當前比較流行和便捷的B/S模式開發(fā)模式,采用Struts框架來實現(xiàn)系統(tǒng)表現(xiàn)層與業(yè)務層的分離,更加有利于系統(tǒng)的開發(fā)與維護。進一步在系統(tǒng)的業(yè)務實現(xiàn)層和數(shù)據(jù)庫之間加入了數(shù)據(jù)持久層,使得系統(tǒng)對數(shù)據(jù)庫的訪問實現(xiàn)面向?qū)ο蟮脑O計。簡單介紹了數(shù)據(jù)持久化技術以及本文實現(xiàn)數(shù)據(jù)庫持久層的工具Hibernate持久化框架。(3)對信用卡系統(tǒng)進行總體的分析,對信用卡管理中主要

17、業(yè)務進行了分析,并進一步確定了系統(tǒng)的技術構(gòu)架。以客戶管理子模塊為例,說明系統(tǒng)開發(fā)設計的流程和具體的業(yè)務實現(xiàn)。介紹了貫穿表現(xiàn)層、業(yè)務層、持久層的Spring框架,作為一個依賴注入的容器,對Struts與Hibernate實施監(jiān)控的同時,且可以做安全、日志工作。1.4 論文結(jié)構(gòu)本文主要研究在J2EE平臺下基于MVC設計模式開發(fā)信用卡管理軟件WEB應用程序的相關技術,在傳統(tǒng)的WEB應用程序開發(fā)的基礎上,對基本的設計模式進行了改進,采用三層開發(fā)模式來降低系統(tǒng)各個模塊之間的耦合性,并通過一個具體模塊的實現(xiàn)來說明各個層次的設計和實現(xiàn)。全文共分為五章:第1章,引言。介紹了信用卡管理軟件的發(fā)展現(xiàn)狀,并進一步分

18、析了該類軟件開發(fā)過程中存在的問題;第2章,信用卡系統(tǒng)總體設計分析。概括分析說明了信用卡管理的主要業(yè)務,在了解用戶需求的基礎上,設計了系統(tǒng)的總體功能模塊,采用了UML語言對系統(tǒng)進行建模;第3章,系統(tǒng)研發(fā)技術。闡述了MVC設計模式以及常見的JSP設計模式,并介紹了Struts這個用來實現(xiàn)MVC設計思想的開源項目,另外還對引入的數(shù)據(jù)持久技術和本文實現(xiàn)這種技術的Hibernate持久框架做了介紹,也對整合前兩個框架實現(xiàn)依賴注入與切面編程的Spring做了簡要介紹;第4章,客戶管理子系統(tǒng)的設計與實現(xiàn)。通過對該模塊的實現(xiàn),來體現(xiàn)整個設計思想,并介紹了本文實踐項目的一些亮點與獨到之處;第5章,系統(tǒng)評價。主要

19、從系統(tǒng)安全和性能特點兩方面來介紹;第6章,總結(jié)語??偨Y(jié)整個設計,并說明不足及進一步改善的方向。第2章 信用卡管理系統(tǒng)總體分析2.1 系統(tǒng)簡介信用卡管理系統(tǒng)是集賬戶管理、信用卡管理、用戶信息維護、報表信息管理為一體的業(yè)各系統(tǒng),具有靈活的應用架構(gòu)、費用結(jié)構(gòu)和產(chǎn)品定義,在系統(tǒng)、機構(gòu)、產(chǎn)品、客戶、賬戶、交易等各個層面均實現(xiàn)參數(shù)化,是一個以客戶為中心的多產(chǎn)品、多賬戶、多卡綜合應用系統(tǒng)。2.2 信用卡管理系統(tǒng)的總體功能框架信用卡管理系統(tǒng)主要實現(xiàn)銀行信用卡和客戶間交易的記賬和管理功能。信用卡管理涉及到的內(nèi)容很多,但從大體上來看,它的主要業(yè)務可以歸納為四個部分:賬戶管理、信用卡管理、報表管理、系統(tǒng)管理;主要面

20、對三類用戶:銀行普通員工、銀行部門經(jīng)理、系統(tǒng)管理員。信用卡管理系統(tǒng)的總體功能框架如圖2.1所示。圖2.1 信用卡管理系統(tǒng)功能結(jié)構(gòu)圖2.3 系統(tǒng)的開發(fā)原則(1) 可延展性和包容性系統(tǒng)應具有較好的可延展性和包容性。系統(tǒng)的可延展性應包括能夠很好的兼容已有的系統(tǒng)和能夠在今后一段時間內(nèi)實現(xiàn)對系統(tǒng)軟硬件擴展,能有效地保護已有的投資,系統(tǒng)易于擴充升級,既要滿足當前業(yè)務的需求,又能隨時進行擴展和維護。(2) 系統(tǒng)簡潔,易使用、易維護系統(tǒng)的設計符合日常辦公運作的需求,功能不僅要實用,還應該簡單易學,具有比較友好的用戶界面,易于擴充。整個開發(fā)設計層次簡單明了,便于管理,易于擴充。(3) 為員工,經(jīng)理提供良好的信息

21、服務系統(tǒng)對信用卡信息進行了合理的布局,以便于提供優(yōu)質(zhì)、高效的業(yè)務管理和事務處理,是系統(tǒng)用戶對信用卡賬戶進行維護,完成信用卡交易記賬和管理(4) 可靠運行,安全保密在該系統(tǒng)的開發(fā)過程中,將通過身份認證,權限檢查,來解決信用卡管理系統(tǒng)的安全性、保密性問題,確保系統(tǒng)的有效和安全運行。2.4 系統(tǒng)功能概述信用卡管理系統(tǒng)不僅要管理信用卡使用的各個環(huán)節(jié):如開卡到記賬、存取款的業(yè)務活動,還要管理所涉及到的各種對象和資源:如管理員、系統(tǒng)用戶、賬戶、信用卡等;同時信用卡管理系統(tǒng)還要提供相應的算法來結(jié)算賬單。其中客戶管理模塊主要的業(yè)務功能實現(xiàn),將在以下進行相關的介紹。(1) 客戶開戶申請管理子模塊客戶提交開戶申請

22、表,進行合法性驗證,交給銀行員工審核,如果審核通過,將客戶信息填入客戶信息表,并為客戶開通信用卡服務所需的賬號,客戶開戶管理子模塊的業(yè)務流程如圖2.2所示。圖2.2 客戶開戶管理子模塊業(yè)務流程示意圖(2)賬戶信息維護子模塊通過對開戶客戶的消費、取現(xiàn)、透支等交易記錄統(tǒng)計,銀行員工修改相應賬戶的信用額度,同時完成賬戶的銷戶工作。該模塊的業(yè)務流程如圖2.3所示。圖2.3 賬戶信息維護子模塊業(yè)務流程示意圖(3) 取款管理子模塊取款管理子模塊主要完成取款申請、取款合法性驗證、自動完成取款額與可用額、信用額度的核對等,最大限度的實現(xiàn)取款的自動化。該模塊的業(yè)務流程如圖2.4所示。圖2.4 取款管理子模塊業(yè)務

23、流程示意圖圖2.5 賬單管理子模塊業(yè)務流程示意圖(4) 賬單管理子模塊賬單管理是信用卡管理中很重要的一部分。該模塊主要列出客戶交易賬單的信息,并對每月賬單進行相應的結(jié)算,以便客戶進行查詢與打印。該模塊的業(yè)務流程如圖2.5所示。(5) 報表管理子模塊報表管理是信用卡管理中只針對銀行經(jīng)理一個模塊。通過查看報表,銀行經(jīng)理可以了解銀行開戶、戶頭信用額、信用卡透支的現(xiàn)狀及其發(fā)展趨勢,清晰的把握信用卡業(yè)務的發(fā)展脈絡,制定出相應的發(fā)展策略。該模塊的業(yè)務流程如圖2.6所示。圖2.6 報表管理子模塊業(yè)務流程示意圖以上描述了客戶管理、報表管理的大致功能及其數(shù)據(jù)流圖,而信用卡的管理及系統(tǒng)管理,其業(yè)務流程與客戶管理開

24、戶與信息維護的流程大致相似,因此這里不做過多介紹。2.5 系統(tǒng)技術構(gòu)架本系統(tǒng)采用了先進的設計理念和一些主流的技術。系統(tǒng)采用基于MVC的J2EE技術和Web技術來實現(xiàn)的。傳統(tǒng)的Web技術平臺是一個三層結(jié)構(gòu)。如圖2.6所示。圖2.7 WEB三層結(jié)構(gòu)示意圖目前,Web技術都是通過Http來實現(xiàn)客戶端和服務器的通訊的,對于簡單的HTML靜態(tài)文本來說,Http是一個很好的選擇。但Http卻不能很好地應用于復雜的業(yè)務處理,因為當用Http進行通訊時,必須以Web服務器作為中介。然而當同一時刻客戶訪問量過大時,Web服務器則將成為整個系統(tǒng)的瓶頸。而基于MVC的J2EE技術能很好地解決以上問題。根據(jù)項目需求分

25、析,確定本系統(tǒng)必須具備的性能有:(1)具有良好的交互性:工作內(nèi)容中有相當大的部分是人機交互,這就要求系統(tǒng)的交互性要強,從而滿足需求。(2)具有較好的可擴展性:工作的內(nèi)容和形式具有多變性,從而要求系統(tǒng)具有良好的可擴展性。(3)良好的可維護性:系統(tǒng)投入使用后,主要是由管理員承擔系統(tǒng)維護的工作,維護人員不定期變動,這就要求系統(tǒng)的可維護性強。(4)較好的跨平臺性:用戶可能使用各種不同的操作系統(tǒng),而且為了適應今后可能的變化,系統(tǒng)應具有較好的跨平臺性。一個典型的J2EE應用能很好地滿足以上的性能要求,它至少包括表現(xiàn)層、業(yè)務層、數(shù)據(jù)持久層和數(shù)據(jù)庫服務器四個部分。在開發(fā)信用卡管理軟件組件模板時,本文采用Str

26、uts來實現(xiàn)信用卡系統(tǒng)的表現(xiàn)層,數(shù)據(jù)持久層選擇了OR Mapping Tools(Hibernate),業(yè)務邏輯層則用普通Java對象,把Struts和Hibernate這兩種在業(yè)內(nèi)比較推崇的開源技術相結(jié)合2,并引入Spring依賴注入,使用JavaBean代替EJB,進一步整合前兩個框架,提升了項目開發(fā)的效率和易維護性。這樣也相應地擴展了傳統(tǒng)Web的三層體系結(jié)構(gòu),本文開發(fā)的系統(tǒng)體系架構(gòu)如圖2.8所示。圖2.8 信用卡管理系統(tǒng)技術結(jié)構(gòu)圖 這種設計使服務器端和數(shù)據(jù)服務端可以根據(jù)系統(tǒng)的需求進行配置,為系統(tǒng)結(jié)構(gòu)提供極大的靈活性和收縮性。采用該多層結(jié)構(gòu)技術的另一個優(yōu)勢是“瘦”客戶端的設計和實現(xiàn)。主程序

27、和主要的業(yè)務功能模塊都放在應用服務器上,客戶端只需安裝瀏覽器就可以在本地運行。本信用卡系統(tǒng)設計中,客戶端為瀏覽器,中間層以Tomcat作為應用服務器支持業(yè)務邏輯的處理,以MySQL Server5.0作為數(shù)據(jù)庫服務平臺。第3章 系統(tǒng)平臺與技術3.1 MVC設計模式3.1.1 MVC模式的介紹隨著Web開發(fā)的不斷發(fā)展和需要,MVC模式被推薦并成為Sun公司J2EE平臺的設計模式,并且在應用中受到越來越多的開發(fā)者的歡迎。Model-View-Controller原來是Xerox PARC在八十年代為編程語Smalltalk-80發(fā)明的一種應用程序的框架結(jié)構(gòu),至今已被廣泛使用。該框架結(jié)構(gòu)支持三層結(jié)構(gòu)

28、的類:表現(xiàn)應用程序狀態(tài)層、屏幕表現(xiàn)層和控制流層,因此這三層被稱為模式(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)

29、、決策支持系統(tǒng)等,但它本身并不局限于某一個特定的領域。MVC設計模式,最近幾年被推薦為SIJN公司JZEE平臺的設計模式,它強制性地把應用程序的輸入、處理和輸出分開3。它的三個核心部件分別是模型、視圖和控制器,它們各自處理各自的任務:(1)模型(業(yè)務邏輯層):表示企業(yè)數(shù)據(jù)和業(yè)務規(guī)則,實現(xiàn)具體的業(yè)務邏輯、狀態(tài)管理的功能。在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用像EJB和ColdFusion Companies這樣的構(gòu)件對象來處理數(shù)據(jù)庫。被模型返回的數(shù)據(jù)都是中立的,也就是說模型和數(shù)據(jù)格式無關,這樣一個模型能為多個視圖提供數(shù)據(jù)。由于應用于模型的代碼只需寫一次就可以被多個視圖重用,所

30、以減少了代碼的重復性。(2)視圖(表示層):即用戶看到并與之交互的界面,是應用程序的外在表現(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)機存儲的還是一個雇員列表,作為視圖來講,它只是作為一

31、種輸出數(shù)據(jù)并允許用戶操縱的方式。(3)控制器(控制層):起到控制整個業(yè)務流程的作用,根據(jù)用戶的輸入調(diào)用相應的模型和視圖去完成用戶的需求和相關的操作。具體地來說:控制器本身不輸出任何東西和做出任何處理。它只是接受客戶的請求并進一步?jīng)Q定調(diào)用哪個模型去處理該請求,并根據(jù)處理結(jié)果來確定用哪個視圖來顯示模型處理之后返回的數(shù)據(jù)。它們?nèi)咧g的關系如圖3.1所示。 圖3.1 MVC組件類型的關系和功能3.1.2 MVC開發(fā)的優(yōu)勢經(jīng)過以上對MVC開發(fā)模式的介紹,以及兩種JSP開發(fā)模式的比較,我們對MVC開發(fā)模式有了一定的認識,這里將進一步介紹說明利用MVC模式開發(fā)的優(yōu)勢,具體表現(xiàn)在以下幾個方面:(1)MVC模

32、式很好地解決了軟件工程中如何使軟件系統(tǒng)各模塊之間最大限度地降低其復雜的耦合關系,以及系統(tǒng)顯示邏輯和業(yè)務邏輯之間的矛盾(即用戶界面的多變性和業(yè)務邏輯的相對不變性),可以盡可能地提高系統(tǒng)的可維護性和可擴展性。(2)模型、視圖、控制器三者的相互獨立,當我們改變其中一部分時,其他兩部分不會受到影響,進而構(gòu)造出良好的松耦合構(gòu)件。(3)所有的模型和視圖都是由控制器連接和調(diào)用的,控制器控制功能使得它可以根據(jù)用戶不同階段的不同需求選擇不同的模型進行處理,并選擇不同的視圖將處理結(jié)果顯示給用戶,很好地提高了系統(tǒng)的靈活性。(4)一個模型可以擁有多個視圖或者說多個視圖可以共享一個模型。多個視圖能夠提供多種數(shù)據(jù)顯示方式

33、,以滿足不同用戶的需求。變化傳播機制可以確保所有相關的視圖和其模型達到同步,這一切都可以通過控制器的協(xié)調(diào)來實現(xiàn)。(5)模型的可移植性和伸縮性。模型的相對獨立性使得它很容易被移植到新的平臺工作,很容易被改變業(yè)務規(guī)則而不影響視圖和控制器4。然而,由于MVC是一個非常復雜的系統(tǒng),所以采用MVC實現(xiàn)Web應用時,最好選一個現(xiàn)有的MVC框架,在此之下進行開發(fā)。由于Struts具有完整的文檔并且相對來講比較簡單,所以一般采用它來開發(fā)MVC系統(tǒng),實際上,Struts就是在 JSPModel2的基礎上實現(xiàn)的一個MVC框架。3.2 Struts項目概述 Struts是Apache組織的一個項目,像其他的Apac

34、he組織的項目一樣,它也是一個開源項目。Struts作為一個設想是Craig R McClanahan于2000年提出的,該設計的目標是為利用Java技術開發(fā)基于MVC模式的Web應用提供一個標準模式。基于Struts架構(gòu)的Web應用程序基本上符合JSPModel2的設計標準,是MVC設計模式的一種變形,提供了對開發(fā)MVC系統(tǒng)的底層支持,它采用的主要技術是Servlet、JSP和Custom Tag Library5。Struts框架是一種基于Java的技術,Web應用程序開發(fā)人員通過Struts框架即可充分利用面向?qū)ο笤O計,代碼重用及“編寫一次,到處運行”的優(yōu)點。另外,Struts不僅是擁有

35、自己的控制器,同時整合了其他的一些技術來實現(xiàn)模型層和視圖層,例如:在模型層,它可以很容易與數(shù)據(jù)庫的訪問技術相組合,包括JDBC技術和EJB技術;在視圖層,它能夠與JSP、XSL等組件相結(jié)合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)St

36、ruts還提供了一系列實用對象:XML文件處理、通過Java Reflection API自動處理JavaBean屬性、國際化的提示和消息。3.2.1 Struts核心組件Struts是一組相互協(xié)作的類、Servlet和JSP標記,它們組成了一個可重用的MVC設計模式。這個定義表示Struts是一個框架,而不是一個庫,但同時Struts也包含了豐富的標記庫和獨立于該框架工作的實用程序類庫。Struts通過一些組件類來完成框架的功能,這些組件包括:ActionServlet、Action、ActionForm、ActionForward、ActionMapping。1. ActionServle

37、tActionServlet繼承自javax.servlet.http.HttpServlet類,它在struts中扮演的角色是中心控制器。它提供了一個中心位置來主要負責將Http客戶請求組裝后,根據(jù)配置文件的指定的描述,轉(zhuǎn)發(fā)到適當?shù)奶幚砥?。另外,除了作為應用程序的前端控制器外,ActionServlet實例還負責初始化和清除應用程序的資源。2. Action一個Action類的角色,就像是客戶請求動作和業(yè)務邏輯處理之間的適配器,它作為應用程序響應用戶請求的動作,將請求與業(yè)務邏輯分開。這樣用戶的請求和Action類之間可以有多個點對點的映射。Action最為常用的方法是execute(),典型

38、的Action類一般要在execute()方法中實現(xiàn)下列邏輯:(l)檢查用戶session的當前狀態(tài)。如果session過期或者用戶沒有登錄,要將表示層的頁面跳轉(zhuǎn)到用戶登錄頁面;(2)檢查用戶輸入的合法性。調(diào)用Form Bean實例的validate()方法檢查一些字段的輸入值是否恰當或合法;(3)執(zhí)行業(yè)務操作。調(diào)用業(yè)務邏輯Bean的相應方法執(zhí)行用戶的業(yè)務請求;(4)更新服務器端的對象。將Model的狀態(tài)改變通知給View,并返回請求頁面。3. ActionForm一個應用系統(tǒng)的消息轉(zhuǎn)移(或者說狀態(tài)轉(zhuǎn)移)的非持久性數(shù)據(jù)的存儲,通常由ActionForm Bean來負責,它的主要功能是為Acti

39、on的操作提供與客戶表單相映射的數(shù)據(jù)。對于每一個客戶的請求,一般要經(jīng)歷如下幾個步驟:(l)檢查Action的映射,確定配置文件中己經(jīng)配置了對ActionForm的映射;(2)根據(jù)Name屬性查找ActionForm的信息;(3)查找ActionForm的使用范圍,確定在此范圍下是否存在對應的 Form Bean的實例;(4)假如在當前范圍內(nèi),相應的 Form Bean的實例己經(jīng)存在,而且對當前的請求來說是同一類型的話,就可以重用,否則,就要重新構(gòu)建一個 Form Bean的實例;(5)調(diào)用Form Bean的reset()方法;(6)調(diào)用對應的set()方法,對狀態(tài)屬性賦值;(7)如果vali

40、dated屬性值被設置為true,則調(diào)用Form Bean的validate()方法;(8)如果validate()方法沒有返回錯誤,控制器將ActionForm作為參數(shù),傳給Action實例的execute()方法執(zhí)行。 4. ActionForward當Action實例的execute()方法運行完畢后,控制器根據(jù)Mapping可以將響應信息轉(zhuǎn)到適當?shù)牡胤?,ActionForward的主要功能就是對將要轉(zhuǎn)向的視圖的地址的一個封裝。轉(zhuǎn)向的各種屬性也可以在配置文件中設置性,這樣就大大提高了軟件的復用性和可維護性。 5. ActionMappingActionMapping以Java的形式封裝了

41、怎樣將一個請求URL映射到與其對應的Action的一些信息。ActionMapping對象幫助進行框架內(nèi)部的流程控制,它們可以將請求URL映射到Action類,并且將Action類與 ActionForm Bean相關聯(lián)。Struts框架的控制器ActionServlet在內(nèi)部使用這些映射將控制轉(zhuǎn)移到特定的Action類的實例。3.2.2 Struts的工作流程采用Struts框架開發(fā)Web應用系統(tǒng)時,在Web應用啟動時就會自動地加載并初始化ActionServlet,此時ActionServlet將會從Struts-config.xml文件讀取配置信息,并把它們存放到各種對應的配置對象中。當

42、ActionServlet接受到一個客戶請求時,將執(zhí)行如下流程:(l)檢索與用戶請求匹配的Action實例,如果不存在,控制器直接將請求轉(zhuǎn)發(fā)給JSP或靜態(tài)頁面;如果有對應的Action,并且這個Action有一個相應的Form Bean,ActionForm被實例化并用Http請求的數(shù)據(jù)來填充其屬性,然后保存在ServletCotenxt中,以備其它Action對象或JSP調(diào)用。(2)控制器根據(jù)Struts-config.xml的配置信息將請求切換到具體的Action,對應的相關的 Form Bean的信息也一起發(fā)送給Action類的execute()方法。(3) Action的execute

43、()方法返回一個ActionForward對象,控制器ActionServlet再通過該ActionForward對象來進行轉(zhuǎn)發(fā)工作。(4) Action根據(jù)業(yè)務處理的不同結(jié)果返回一個相應的目標響應對象給總控制器,這個目標響應對象可以對應一個具體的JSP頁面或者是另外一個Action。(5)總控制器ActionServlet根據(jù)業(yè)務功能Action返回的目標響應對象(多數(shù)情況下,該響應目標是一個JSP頁面),將Http請求轉(zhuǎn)換到該目標響應對象中,進一步將結(jié)果頁面展現(xiàn)給用戶。3.2.3 Struts框架實現(xiàn)MVC模型Struts實質(zhì)上就是JSP Model2的基礎上實現(xiàn)的一個MVC模式框架,MV

44、C設計模式為構(gòu)建可擴展、可重用的體系結(jié)構(gòu)打下了很好的基礎,該設計模式需要用戶將自己的代碼抽象出來,把項目在一定的程度上分解為表示,邏輯和控制三部分,每部分之間的關系相對較小,以便使得軟件結(jié)構(gòu)更加靈活,并具有較好的可重用性和可擴展性。在Struts框架中,模型一般有實現(xiàn)業(yè)務邏輯的JavaBean或EJB組件構(gòu)成,控制器由ActionServlet和Action來實現(xiàn),視圖由一組JSP文件構(gòu)成,Struts實現(xiàn)的MVC框架如圖3.4所示。 圖3.2 Struts實現(xiàn)的MVC模型Struts是Apache組織的一個項目,提供了一個實現(xiàn)MVC架構(gòu)的高度自動化的方式,作為一個MVC的框架,Struts對

45、Model、View和Controller都提供了對應的實現(xiàn)組件:(l)控制器(Controller):控制器的作用是從客戶端接收請求,并且選擇執(zhí)行相應的業(yè)務邏輯,然后把響應結(jié)果送回到客戶端。在Struts中Controller功能由ActionServlet和ActionMapping對象構(gòu)成。ActionServlet是MVC設計模式的決策控制部分,也是Struts框架的核心。它根據(jù)ActionMapping把Http消息形式的用戶請求轉(zhuǎn)換成相應的應用程序的動作。ActionServlet還負責用相應的請求參數(shù)填充ActionForm(通常稱之為FormBean),并將其傳給對應的動作類(

46、通常稱之為ActionBean)。動作類Action來實現(xiàn)核心商業(yè)邏輯,它可以訪問JavaBean或調(diào)用EJB,最后動作類指向相應的JSP文件,最終生成相關的視圖。ActionServlet包括一組基于配置的ActionMapping對象,每個ActionMapping對象實現(xiàn)了一個請求到一個具體的Model部分中Action處理器對象類之間的點到點的映射。ActionMapping中有Action對象的名字和地址的描述,當有請求傳入Controller時,它把請求的路徑映射到Action的地址,并把請求傳給那個Action類。ActionMapping類也包括一些程序中可能的唯一的信息,例如

47、本地變量,特定環(huán)境數(shù)據(jù),或者URL。(2)模型(Model):表示應用程序的狀態(tài)和業(yè)務邏輯9。MVC系統(tǒng)中的Model部分從概念上可以分為兩類:系統(tǒng)的內(nèi)部狀態(tài)和改變系統(tǒng)狀態(tài)的動作。Struts為Model部分提供了Action和ActionForm對象,所有的Action處理器對象都是程序開發(fā)者從Struts的Action類派生的子類,并對其中主要的方法進行覆蓋。Action處理器對象封裝了具體的業(yè)務處理邏輯,處理具體的業(yè)務邏輯操作,并且把響應提交到合適的View組件以產(chǎn)生響應。Struts提供的ActionForm組件對象,可以通過定義屬性描述客戶端表單數(shù)據(jù)。我們可以從它派生子類的對象,利用

48、它可以實現(xiàn)對客戶端的表單數(shù)據(jù)的良好封裝和支持,相應的Action處理器對象可以直接對它的表單數(shù)據(jù)進行讀寫,而不再需要和Request、Response對象進行數(shù)據(jù)交互,通過ActionForm組件對象實現(xiàn)了對View和Model之間非持久性數(shù)據(jù)交互的支持。(3)視圖(View):視圖是用戶看到并與之交互的界面。Struts應用中的View部分是通過JSP技術實現(xiàn)的。Struts提供了自定義的標簽庫,通過使用這些標簽定義的JSP表單可以和Model部分中的ActionForm的映射,完成對用戶數(shù)據(jù)的相關封裝,同時還可以使用這些標簽來豐富JSP頁面。3.2.4 Struts框架開發(fā)的優(yōu)缺點Stru

49、ts是一個優(yōu)秀的基于J2EE的MVC應用框架,現(xiàn)在己經(jīng)越來越廣泛的運用于各種企業(yè)平臺之上。Struts在程序開發(fā)中有自身的優(yōu)缺點,具體表現(xiàn)在以下幾個方面:(l)具有MVC模型所有的特點和優(yōu)點,簡化了基于MVC模型的應用程序的開發(fā)。(2)允許開發(fā)人員使用XML文件來配置很多默認的框架。(3)它提供了一個靈活的機制來處理異常,而且提供了一個方便的方法對應用程序的信息進行國際化。(4)開源項目發(fā)展較快,但代碼、設計變動較大,利用不當會對系統(tǒng)的維護和升級不利。(5)Struts框架主要是針對表示層設計的,對后端的邏輯層的支持不強。Web應用系統(tǒng)的開發(fā),很多時候業(yè)務邏輯的處理都會是和后端的數(shù)據(jù)庫進行操作

50、,然而Struts只為視圖、控制器提供了現(xiàn)成的框架,對于模型提供框架支持10。如果直接使用該框架進行開發(fā),就需要直接在用戶的業(yè)務邏輯中嵌入SQL代碼,這樣能夠加快程序開發(fā),但是會造成業(yè)務邏輯實現(xiàn)和關系數(shù)據(jù)庫的訪問實現(xiàn)的直接耦合,一旦數(shù)據(jù)庫的列或相關屬性發(fā)生一些簡單的改變,都會導致大量源代碼的修改,這個問題可以通過采用EJB或結(jié)合Hibernate等第三方工具來解決。對Struts框架進行不同的擴充,就可以得到符合很多設計要求的框架。3.3 數(shù)據(jù)持久技術與Hibernate在采用了Struts技術的框架中,Struts簡化了Web層的開發(fā),實現(xiàn)了應用程序的顯示邏輯和業(yè)務邏輯的分離,使應用程序更趨

51、模塊化,應用程序更加容易維護。這種應用程序的基本架構(gòu)是MVC(Struts)+DAO(Data Access Object)+JDBC+Databases。為了進一步地提高代碼的可復用性和可維護性,提高開發(fā)效率,需要一個更加有效的架構(gòu)。因為大多數(shù)的應用程序都涉及到的數(shù)據(jù)庫操作,通常數(shù)據(jù)庫表會很多而且關系復雜,如果使用DAO+JDBC訪問數(shù)據(jù)庫將會使得編程過程復雜化,進而帶來的是大量的維護工作,特別是層與層之間的耦合性大,表格屬性的變動將極大的影響代碼的維護,因此需要有一種方便通用的方案來解決這個問題。這里將采用對象/關系映射(Object/Relational Mapping)的數(shù)據(jù)持久化技術

52、來簡化編程的復雜度,目前實現(xiàn)對象關系映射也已經(jīng)有一些比較成熟的工具,如Caster,JDOGenie,Hibernate等。本文主要應用Hibernate:在Struts中,不需要太多的代碼,它能夠?qū)ο笥成涞疥P系數(shù)據(jù)庫中的行,不需要編寫復雜的SQL語句,開發(fā)架構(gòu)也就變成Struts+ DAO+ Hibernate+Database,毫無疑問使用Hibemate實現(xiàn)持久層是一種有效的選擇,它可以大大減少操作數(shù)據(jù)庫的工作量,并且使得系統(tǒng)更加易于維護。3.3.1 數(shù)據(jù)持久技術簡介當前的應用程序中應用的數(shù)據(jù)主要有文件、對象數(shù)據(jù)庫、關系型數(shù)據(jù)庫等,其中關系型數(shù)據(jù)庫的應用最為廣泛,具有很高的可靠性和可擴

53、展性,支持強大的查詢檢索功能:面向?qū)ο蟮脑O計是應用一些同時具有屬性和行為的對象來實現(xiàn)的符合人們認識習慣的編程技術。關系數(shù)據(jù)庫和面向?qū)ο蠹夹g在現(xiàn)今的很多大型應用中都有廣泛地應用,將這兩者結(jié)合起來將會出現(xiàn)更加復雜和高效的軟件系統(tǒng),然而很明顯面向?qū)ο笤O計使用的對象范例與關系數(shù)據(jù)庫使用的關系范例之間存在著“阻抗不匹配”11。對象范例基于軟件工程的一些原理耦合、聚合和封裝,而關系范例則基于數(shù)學原理。兩種不同的理論基礎必將導致各自有不同的側(cè)重點,對象范例側(cè)重于從包含數(shù)據(jù)和行為的對象中構(gòu)建應用程序,而關系范例則主要側(cè)重于對數(shù)據(jù)的存儲。但是,隨著面向?qū)ο笳Z言的快速發(fā)展應用和關系型數(shù)據(jù)庫的成熟,出現(xiàn)了這樣一個矛

54、盾:數(shù)據(jù)庫是關系型的,以記錄的格式來存儲數(shù)據(jù);編程語言是面向?qū)ο蟮?,?shù)據(jù)以對象的形式存在并被應用程序訪問。數(shù)據(jù)持久層的提出就是在對象關系數(shù)據(jù)庫之間提供一個成功的映射解決方案,盡可能彌補這兩種差異12?,F(xiàn)今在項目中使用的實現(xiàn)數(shù)據(jù)持久層的方法有三種:一就是將SQL語句嵌入相關的業(yè)務邏輯實現(xiàn)類中,這樣做雖然會加快開發(fā)速度,經(jīng)常使用于小型的應用系統(tǒng)中,但它也會使程序的維護和擴張非常困難,所以這種做法很常見卻并不是個好的選擇;另一種是將SQL語句封裝到獨立的類中,這種做法并沒有改善以上的設計,只是將可能會在未來改動的SQL語句集中到單獨的類中;最后一種就是將數(shù)據(jù)庫表映射為對應的對象類,這樣就實現(xiàn)了面向?qū)?/p>

55、象的開發(fā)設計,也會使程序的維護和擴展變得更加容易13。Java語言有很多種數(shù)據(jù)持久化的實現(xiàn)方式,如 Object Serialization,JDBC和EJB,但相比較來說比較有效的應該是O/R Mapping技術,它給以上兩者之間提供了一個很好的過渡層,實現(xiàn)了面向?qū)ο蟮脑O計思想,能很好解決“阻抗不匹配”的問題,并且很快就得到了廣泛地應用。目前,Hibernate是基于。O/R Mapping實現(xiàn)數(shù)據(jù)持久技術的比較成熟且得到廣泛應用的框架,利用該框架來實現(xiàn)數(shù)據(jù)持久化,會更加有利于系統(tǒng)的維護和移植。3.3.2 Hibernate的概述和特點1.Hibernate概述Hibernate是一種很好的

56、ORM(Object/Relational Mapping)映射工具,支持使用各種Java思想如:inheritance,association,composition,collections等實現(xiàn)的對象。它可以直接映射大部分的JavaBean而不需要做任何修改,即使修改最多也就是在對應的Bean里面加上一些私有訪問方法;可以將一個用戶定義的多個實例映射到一張表的同一行;還可以用代理模式簡化載入類的過程14。對于使用JDBC和SQL手工操作數(shù)據(jù)庫來說,使用Hibernate,可以大大減少操作數(shù)據(jù)庫的工作量。因此使用它,既可以用來在Java應用程序中取代大部分JDBC代碼,也可以很方便地整合到系

57、統(tǒng)中作為持久層框架。Hibernate使用數(shù)據(jù)庫和配置文件數(shù)據(jù)來給應用程序提供相應的持久化服務和持久化的對象PO(Persistent 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擁有自己的功能強大的查詢語言 (HQL),HQL與SQL非常

溫馨提示

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

評論

0/150

提交評論