真人一对一直播,chinese极品人妻videos,青草社区,亚洲影院丰满少妇中文字幕无码

0
首頁 精品范文 mvc框架

mvc框架

時間:2023-05-30 09:46:48

開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇mvc框架,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。

mvc框架

第1篇

關鍵詞:Web前端;mvc;意義

前言:Web前端開發是Web技術發展中的一個重要組成部分,在傳統的前端開發中由于外界因素的影響導致其開發形式呈現出簡單化的特點,即以頁面為主體來展示界面中的信息。然而隨著科學技術的不斷進步,Web前端開發形式上變得更為復雜,但是其功能方面也逐漸實現了與用戶間的相互交流。以下就是對Web前端MVC框架意義的詳細闡述,望其能為現代背景下Web前端開發技術的可持續發展提供有利的文字參考。

一、傳統MVC模式基本概念分析

在傳統MVC模式中其應用被劃分為模型層、視圖層、控制層三個層次,而經過大量實踐調查表明,不同層次在系統實際運行中承擔著不同的職責。模型層在系統運行中的任務即為數據處理。且數據模型層也可通過數據訪問的方式來獲取自身所需信息,并優化數據整合,將其應用于業務包裝中,為用戶提供更為高質的服務體系。視圖層在系統運行中的主要任務即為顯示數學模型中處理的信息等。但是,由于視圖層數據顯示存在著針對性特點,因而在利用其進行數據顯示時應前面掌握其特性。另外,視圖層中功能的發揮需要基于數據模型來完成,因此在一定程度上限制了其應用領域。控制層在系統中的主要職能即為對系統中應用程序的合理控制,并在視圖數據顯示中出現問題時,對其問題的發生進行合理控制,且在事件控制后作出相應響應提醒相關技術人員。另外,在控制層事件處理中模型層也承擔著協助的作用,即在控制層作出相應后,模型層要及時整合數據、信息,并合理更新視圖層中所顯示的數據[1]。

二、前端MVC框架

就目前的現狀來看,前端MVC應用最為廣泛的即Backbone.js,Ember.js、Angular.js等幾種。這幾種前端框架都是基于MVC完成的,但是經過大量的實驗表明,每種框架處理問題的方式都存在著一定差異。Backbone.js與其它框架相比其優勢在于可更好的解決系統應用中層次問題,進而為用戶提供更為可靠的操作平臺。其次,Backbone.js框架應用層中的視圖層在模型數據修改后可及時對自身頁面顯示的數據進行修改,確保視圖層與數據模型層數據的一致性。此外,Backbone.js框架還支持定位功能,即對其的應用可確保在系統實際運行中出現需處理的事件時,可及時通過定位的形式找到事件的源頭,并對其進行有效解決。Ember.js框架其廣泛應用于桌面開發中,且由于其界面設計存在著標準化的優勢,因而得到了更多用戶的親睞。另外,其可協助MVC系統的運行,幫助其處理應用層中相應事件問題。此外,Ember.js還為用戶提供了模板使用說明,促使其在對界面進行實際操作過程中可有效掌握魔板操作方法,避免不規范操作行為的發生。Angular.js源自于Google設計,其在一定程度上拓寬了應用層中的詞匯使用范圍,同時也在系統界面中增添了部分動態內容,便于用戶界面操作行為的展開。

三、Web前端MVC框架的意義分析

(一)jQuery等庫與前端MVC間的區別

jQuery等庫與前端MVC間的區別主要表現在以下幾個方面:第一,二者解決的問題存在著一定的差異,即jQuery主要應用于對代碼、封裝等問題的解決。而其也為系統實際運行提供了多種封裝方法,由此穩固了代碼結構的合理性設置,而前端MVC框架與jQuery等庫在問題解決方面有所不同,其更加傾向于對程序組織方面問題的解決,進而推動系統中的程序運行逐漸趨于規范化。另外,前端框架為系統運行提供了一套規范化的問題解決方案,致使系統運行中出現相應問題時可及時參照方案對問題展開及時、有效的解決,且最終提高系統運行的穩定性;第二,jQuery的操作中心為DOM,而MVC框架的中心卻為模型。因而MVC與jQuery相比其流程的變更更為及時,且也為現代工程師的代碼編寫提供了有利條件。另外,MVC框架解決了傳統HTML源碼處理中的問題,促使相關工作人員在實際工作開展過程中即可通過參照前端MVC框架中的規范化流程打通后端處理,提高系統中的整體運行效率[2]。

(二)Web前端MVC框架適用范圍

近年來,Web前端MVC框架的開發意義逐漸引起了人們的關注,而從Web前端MVC框架的適用范圍研究中即可看出其在系統運行中占著至關重要的位置。對于此,可以從以下幾個方面入手分析:第一,從大量的實踐中可以看出,Web前端MVC框架不適用于頁面型產品中,造成此現象的原因主要歸咎于此類產品主要依附于服務器來運作自身系統,因而在此背景下,jQuery等庫會更好的滿足其互動性需求,且最終導致Web前端MVC框架在頁面型產品中無法發揮其自身效用;第二,在軟件型產品,對于Web前端MVC框架的應用是非常必要的。首先由于軟件型產品對數據操作能力的要求較大,因而若將Web前端MVC框架應用于軟件型產品實際運行中,那么框架中的數據模型層會在一定程度上滿足其數據操作需求,且會在系統實際運行中出現問題時,對數據展開及時的更新處理。其次,軟件型產品中會涉及到大量的視圖操作,但是由于jQuery等庫無法完成高效率的操作行為,因而將Web前端MVC框架應用于其中,會在一定程度上更好的滿足程序開發需求[3]。

結論:綜上可知,Web前端MVC框架在程序開發中的應用有著一定的限制性特點,因而在Web前端MVC框架不斷創新的背景下,相關開發人員在實際工作開展過程中應結合Web前端MVC框架的特性將其應用于程序開發中,提高系統運行的整體運行效率,同時促使開發產品具備自身獨有特色。另外,為了確保Web前端MVC框架設計的可持續發展,要求相關技術人員應致力于架構與代碼的研究,為其開發提供便利。

參考文獻

第2篇

關鍵詞:MVC設計模式;B/S架構;Struts 2.0; Xml文檔解析;J2EE

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2011)10-2308-02

Key Technology Research of Web Framework Based on MVC Pattern

LI Jun-jun, FU Hong, ZHANG Li, JIANG Zu-xin

(College of Information Science and Engineering, Henan University of Technology, Zhengzhou 450001, China)

Abstract: There is a growing emphasis on B / S network applications, MVC Pattern is widely used in Web application development. People design many Web Frameworks which are based on MVC Pattern in order to save software development time. By studying the achievement of MVC mechanism in Struts 2.0, summarizes a series of key technologies needed when design Web Framework based on MVC Pattern.

Key words: MVC design pattern; B/S architecture; Struts 2.0; Xml document parsing; J2EE

模型-視圖-控制器(MVC,Model-View-Controller)最早是smalltalk語言研究團提出的,應用于用戶交互應用程序中。隨著基于B/S架構的網絡應用的高速發展,MVC設計模式在Web開發中找到了用武之地,MVC開發模式可以實現分離數據和數據表現,讓開發人員開發一個可伸縮性強,便于擴展的控制器,來維護整個流程。

面向對象技術的出現和應用大大提高了軟件的重用性和軟件的質量。Java語言作為一種面向對象語言,為Web開發提供了強有力的支持,Sun公司提出的J2EE可簡化且規范應用系統的開發與部署,進而提高可移植性、安全與再用價值。Struts 2.0框架就是基于J2EE和MVC設計模式開發的一個優秀Web開發框架。

1 MVC模式的設計思想

MVC的設計思想就是:開發人員將一個系統的輸入,輸出,流程處理編程方式轉換為模型層,視圖層,控制層三層編程方式,從而使整個系統責任明確,接口清晰,加快設計開發過程。一般Web框架如圖1所示。

2 Web框架設計流程

Web框架設計流程圖如圖2所示。

本文采用目前廣為應用的J2EE技術作為開發框架的主要技術。開發的基本思路是:

View采用Jsp和JavaScript技術,Controller層采用Servlet和Xml技術,Model層采用Java和JavaBean技術。

3 WEB各層設計關鍵點

每一個框架都是考慮了最通用的情況,并不一定適用于所有的項目。這要求開發人員對框架有深刻的理解,優秀的開發人員需要跳出具體的框架,站在更高的層次上把握框架,從設計理念出發去具體對待框架,在當前框架不能滿足項目需求的時候,能夠修改框架以便適合自己的項目需求。本文通過一個Web框架的設計來具體分析相關技術。其結構如圖3所示。

3.1視圖層設計

在視圖層采用JSP技術,因為JSP可以使用JavaScript,JavaBean和自定義標簽等,這些技術組合在一起,可以獲得靈活的數據組合方式。

1) 為了方便管理,可以在所有的JSP頁面的頂部添加一個頁面名稱。

2) 為防止代碼混亂,可以在框架所有的JSP頁面中統一設置一種編碼方式,即可以在JSP頁面的頂部添加如下代碼:

3) 通過在 Web.xml中定義Servlet的請求方式,可以將所有JSP頁面的請求都轉入Servlet進行處理,這樣很容易通過request,response實現JSP和Servlet之間的數據轉化。為防止要獲取的數據量比較大帶來的負面影響,可以在Servlet中將所有傳遞到JSP頁面中的數據存儲在一個Map中,這樣頁面只需從request中取出Map,剩下的數據就可以從Map中獲取,加快頁面的處理速度。

4) 為了統一整個應用的風格,對于窗口的打開方法,可以在系統中將其抽取出來,定義一個公用方法。一般而言,會對要打開的URL,窗口名稱,窗口寬度和高度進行設定,而其他屬性保持不變。如下面方法定義:

functionopenWindow(name, url, width, height){

var screenWidth = screen.width;

var screenHeight = screen.height;

var w;

w = window.open(url, name , "width="+width+",height="+height+",

menubar= no,resizable=yes,toobar=no,directories=no, location=no,

scrollbars=yes,status=yes,copyhistory=0");

w.moveTo((screenWidth-width)/2,( screenHeight-height)/2);

w.focus();

}

代碼說明:

傳入的參數分別表示:窗口名稱,要打開的URL,窗口寬度和高度。

w.moveTo()的意思是:打開的窗口顯示在屏幕中心。

w.focus()函數的意思是:使焦點在打開的窗口上。

3.2 控制層設計

控制層主要用來轉發從視圖層傳來的數據和請求到相應的模型層,因此實現它的最好方法是使用Servlet。

一般在Servlet的低版本中,在Servlet中要同時實現解析配置文件,對頁面傳來的值進行轉化,調用相應的函數,以及返回結果處理后的頁面等。這樣使得控制器設計顯得很臃腫,也不利于代碼的維護。隨著java版本的不斷提高,在Servlet 2.3規范中引入了Servlet過濾器,這種機制提供了在轉入Servlet之前進行預處理的功能。

Servlet過濾器其實是面向方面編程思想的一種實現方式。在實際應用中也可以利用Java提供的動態技術來實現簡單的AOP,并利用配置文件實現動態“插拔”。

在控制器的設計中,返回頁面的映射方式,表單提交方式和多動作處理方式十分重要,這三方面良好的設計可以很好改善框架的功能。

返回頁面的映射設計可以采用Xml技術方便的進行映射配置,只需在配置文件中指定一個forward元素,而且在映射關系改變的時候,只需修改配置文件就可以了。頁面之間元素的傳遞也很重要,一般可以使用HashMap來實現,但是我們要把頁面表單直接放入HashMap中會降低頁面值獲取與控制器之間的耦合性。可以通過將表單元素值封裝成一個VO(值對象),將VO放入HashMap中,使用時從HashMap中取出,而VO與Action關系可以通過Xml文件驚醒配置。而多動作的處理方式也通過Xml文件來實現.

3.3 模型層設計

模型對象對應了商業規則和商業數據,即分為業務處理對象和業務實體對象。業務處理對象封裝了具體的處理邏輯,調用業務邏輯模型,并且把響應提交到合適的視圖組件以產生響應。業務實體對象可以通過定義屬性描述客戶端表單數據。所有業務實體對象都EntityBase派生子類對象,業務處理對象可以直接對它進行讀寫,而不再需要和request、response對象進行數據交互。通過業務實體對象實現了對視圖和模型之間交互的支持。實現把"做什么"(業務處理)和"如何做"(業務實體)分離。這樣可以實現業務邏輯的重用。MVC沒有現成的設計方法來指導Model的設計。但是良好的Model層設計可以提高整個框架的可擴展性,也有利于模型的重構和可重用性。

我們可以設計一個接口,讓所有的模型層對象都實現這個接口,以統一的方式進入模型層的處理,實現業務規則的調用,完成用戶的請求。對于視圖層傳入的數據,可使用在控制層中轉化的得到的VO;對于業務邏輯可以放在DAO中處理。

4 結束語

基于MVC模型的Web框架,只要合理設計三層之間的關系,可以有效提高系統的可重用性,可以有效提高系統設計效率,縮短開發周期。

隨著新技術的不斷發展,為基于MVC模式的Web框架設計提供了更強的技術支持,其功能將日益完善。

參考文獻:

[1] Camma E.Design Patterns:Elements of Reusable Object-Oriented Software[M].Addison Wesley,1994:5-20.

[2] Husted T.Struts In Action[M].Manning Publication Co.,2003.

第3篇

關鍵詞 PHP框架 輕量級 模塊化 插件化

1 MVC設計模式

MVC是一種軟件設計模式,它強制性使應用程序的輸入、處理和輸出分開,分解成模型、視圖、控制器3種部件,它們各自處理自己的任務,如圖1所示。

視圖(View)是用戶看到并與之交互的界面。模型(Model)用來表示數據和業務規則,數據的處理、邏輯和功能的計算。控制器(Controller)用來接受用戶的操作并調用模型和視圖完成用戶的需求。

圖1:MVC工作流程圖

使用MVC模式開發的優點主要有加快項目的開發效率、增強項目的可維護性、有利于軟件工程化管理。

2PHP開發框架現狀

所謂框架就是通過提供一個開發程序的基本架構,把程序開發擺到了流水線上。使用框架的優勢在于能極大地促進快速軟件開發,節約系統開發的時間,創建更為穩定的程序,并能減少開發者的重復編寫代碼的勞動。

目前流行的PHP開發框架有:Zend Framework、CakePHP、symfony、E框架、Codelgniter、ThinkPHP等。但使用框架也有一些不足,主要有:①增加系統的復雜性。②在提高大型項目開發效率的同時,降低了小型項目的開發效率,③數據處理流程復雜化,從而在一定程序上影響系統的性能。④為了使框架具有良好的兼容性的,提供大量的功能組件和特性,普遍為重量型框架體系。

框架的重量型與輕量型是相對的,兩者解決問題的側重點是不同的。輕量級框架側重于減小開發的復雜度,相應的它的處理能力便有所減弱(如事務功能弱、不具備分布式處理能力),比較適用于開發中小型系統應用。重量級框架則強調高可伸縮性,適合與開發大型企業應用。

輕量級框架和重量級框架的區別是以啟動程序需要的資源來決定。比如,EJB啟動的時候,需要消耗大量的資源如內存,CPU等,所以是重量級。

鑒于此,本文提出一種基于MVC的輕量級PHP開發框架,同時強調模塊化、插件化按需加載服務的框架體系,具備在降低開發復雜度的同時,增加系統的可伸縮性。

3輕量級WEB開發框架設計與實現

3.1框架底層結構

通過對Web常規應用的抽象,整個框架可由系統初始化基本函數庫、系統核心類庫,模型類庫等公共基礎類組成。核心主要負責底層的操作,由核心加載系統,加載模塊。在這里所謂系統是指多個模塊的集合體,系統內各模塊由完成系統加載。各個系統的實現均以繼承系統父類的方法來進行擴展,系統父類中已經實現了系統的功能,其余個性化的功能按系統的需求進行擴展實現。各個小功能模塊的實現也均以繼承模塊父類的方法來擴展,功能也是要按模塊需求擴展。最終形成核心+系統+模塊+插件的體系架構。

圖2:框架架構圖

3.2框架的運行過程

用戶請求URL時系統會根據URL路由進行路徑的判定,如果適用于靜態化規則的,則直接返回指定的靜態化頁面;如果不是靜態URL的(偽靜態或動態),則將請求轉發給相應的控制器進行解析,解析處理后再由相應的控制器進行響應,處理器通過與模型、視圖、緩存等進行交互后最終形成完整的數據輸出給請求的用戶。

3.3開發統一規范性要求

系統的二次開發,需要開發者遵照框架設定的規范進行,形成統一的標準,以方便后續代碼的管理和維護。其中緩存文件根據不同的類型分別存在在不同的子目錄和文件,主要的目錄和文件如表1所示。

3.4加載器

加載器是一個自動包含所需的組件并將其進行初始化的一類函數,它們根據用戶請求的URL判斷需要加載的模塊或插件,按需加載模塊或插件所特有的功能組件,可加載類、模型、配置、語言包等。

3.5錯誤處理

框架定義了Debug調試模式和常規模式兩種運行機制。Debug調試模式主要用于系統開發人員對系統進行調試開發,輸出系統規定的報錯信息,方便系統開發人員調試系統。常規模式則屏蔽系統錯誤,在用戶請求出錯或系統出錯時,返回指定的頁面并記錄出錯信息。系統開發完成后,系統關閉Debug高度模式進入常規運行模式。

3.6模型、模塊

模型是對統核心代碼的應用實例,通過對底層核心類的繼承來擴展功能,形成模型(在這里也稱為模塊)特有的功能。支持常規的文章資訊、圖片、下載、視頻等模型應用,支持對模塊進行復制、安裝、暫停、刪除,真正實現按需加載,示例如圖3所示。

圖3:系統中模型的管理

3.7控制器

控制器是所有邏輯的中心,負責將用戶的URL以合理的方式響應。系統采用多文件入口機制,用戶請求URL直接向具體的文件請求,提高了系統的運行效率和具備良好的SEO支持。典型的URL請求如:http://localhost/admin.php?moduleid=7&file=course。控制器可以向類庫、模型、緩存等眾多對象發送請求,并通過數據層和視圖層訪問,以實現清晰的分層分工機制。

3.8視圖/模板

視圖是使用控制器處理后的數據來渲染用戶指定的模板,以最終展現給用戶的界面。同一個視圖可以被不同的模型調用。視圖收到渲染請求后,為了提高渲染的效率,會優先查找要渲染對象的緩存文件,如果緩存文件中存在,則將其加載到內存,然后輸出數據;如果緩存中不存在,同加載模板編譯器對模板進行編譯,并存放在指定的位置,最后再加載并輸出數據。

3.9緩存機制

框架當中大量使用緩存機制,系統運行時,直接讀取緩存文件,這極大地提高系統的執行效率。可供緩存的信息包括系統配置信息、模塊配置信息、插件配置信息、視圖模板以及需要頻繁從數據庫讀取信息的數據,時時系統也支持memcached緩存機制。當系統要讀取的緩存文件不存在時,將加載文件緩存生成器,生成相應的緩存文件,并存放在指定的位置,如圖4所示。

圖4:部分重要的緩存目錄和文件

4總結

每個PHP框架都有自己的特色,如CodeIgniter是一個為建立PHP網站的人們所設計的工具包。其目標在于快速的開發項目,提供了豐富的庫組以完成常見的任務。本文提出的框架有利于團隊合作開發,提供便利的模板機制,高效的緩存文件和多樣的URL規則,統一規范的文件目錄結構,以模塊化、插件化使系統功能和規模具備極高可伸縮性。

參考文獻:

[1]郭欣.構建高性能Web站點[M].北京:電子工業出版社,2009.

[2]劉立芳.基于MVC模式與插件式設計的開發架構的探討與實踐[J].電腦編程技巧與維護.2011(14).

[3]劉宇祥 PHP流行框架的研究[J] 青春歲月.2012(8).

[4]趙增敏.PHP動態網頁開發[M].北京:電子工業出版社,2009.

作者簡介:

第4篇

關鍵詞: 計算機軟件; MVC構架; Jakarta Struts框架; 軟件測試

中圖分類號: TN911?34; TP311.5 文獻標識碼: A 文章編號: 1004?373X(2017)06?0071?04

Abstract: Although the separation design thought of MVC model has improved the overall quality of the software, but because the model only defines the configuration of static architectural components, MVC model con not clearly provide the behavioral expression of Web application program development process, which leads to the obvious differences between the description of Web application program and its behavioral characteristics. To fill this difference, a behavior model is proposed in this paper, in which the automatical receiving mechanism of the URL request sequence of the program is modeled, and a testing framework based on behavior pattern is proposed for Web application program. The research result shows that, when it is focused on the cyclic behavior of an automatic mechanism, this framework can provide a better test standard for Web application program. The result that the framework is applied to the configuration scheme of Jakarta Struts framework shows that the behavior model has achieved a very good effect in the classification of the testing paths of the Web application.

Keywords: computer software; MVC architecture; Jakarta Struts framework; software testing

0 引 言

Web應用是計算機響應系統外的網絡請求所需的一種軟件技術,其基本特征是根據不同交互系統和環境所表現出的特殊行為機制。在傳統基于功能模塊的軟件中,輸入輸出關系極為重要,這種特征影響著軟件架構的各個方面[1?3]。網頁應用普遍建立在基于MVC架構上的J2EE平臺上,其為Sun 微系統公司制定的一系列建網頁應用的基礎API接口集合。MVC模型給出了在API之上來結合組件以開發網頁應用的架構模型,其旨在采用合適的方式對組件進行分離式設計,增加Web應用的可維護性和可重用性。然而,由于MVC模型僅提供抽象的形式,導致了行為描述在描述組件靜態架構關系時被分離,在實際開發調試及測試的過程中兩者差異較大[4?6]。因此,本文給出一種簡單的行為模型,并定義一種直接行為描述方式。本文的基本想法是將Web應用程序的行為類比為一個自動機,其狀態為JSP,且狀態轉換被URL請求所調用。假設應用程序有一個進入頁面,如歡迎頁面,同時有一些最終頁面,如感謝頁或錯誤頁。在網頁應用中,返回到之前訪問過的頁面常會要求相似的轉換。因此,本文考慮將重訪頁面作為改進測試。基于這種思想,本文給出一種網頁程序的測試標準,并通過一個簡單的圖書管理系統來論證該方法的有效性。

1 網頁應用的MVC模型

MVC模型由三種組件構成:模塊、視圖和控制器。其中,模塊組件代表數據域,視圖組件處理客戶端的輸出,控制器組件定義對數據的操作。MVC模型通常在J2EE平臺上使用JSP/Servlet技術[7],其模型基本結構如圖1所示。首先瀏覽器遞交一個需求給控制器,控制器根據需求處理模塊組件中的數據,并將處理后的數據更新至后臺數據庫,然后控制器將會調用一個JSP對請求做出響應。

文中MVC模型使用JSP/Servlet技術,其中模塊組件采用JavaBean來實現,視圖組件采用Java Server 頁面,控制器組件則采用ActionServlet實現。J2EE根據指定組件之間連接的配置信息來組裝組件。

Struts是由Jakarta項目開發的一個開源網頁應用框架,Struts采用遵從如上所述的MVC模型的JSP/Servlet技術,其具體類結構如圖2所示。基于MVC模型的行為在其中的實現如下:ActionServlet是一個總的工廠類,負責處理外部請求及分配適當的ActionServlet。開發人員通過定義操作類的子類來實現具體的控制行為。操作類是通過ActionServlet類激發的抽象。一個Servlet操作指的是一種活動形式目標以及做一些處理操作,其結果被包括到操作轉發目標中以返回給Servlet操作[8?9]。Servlet操作將會根據描述ActionForward到JSP的映射關系ActionMapping來調用一個JSP。最后,所調用的JSP作為響應呈現。與此同時,JSP可能會根據其動態內容做出一些相應處理。

2 行為模型

基于MVC模型的Web應用程序的原始外部行為是成對的請求序列和JSP,本文將網頁應用的行為模式化為一種自動機。鑒于Struts框架,文中用有限狀態來完成自動機模式化,其中的狀態是一系列出現在配置中的JSP[10?11]。自動機的字母表來自ActionServlet的請求和響應,這些請求和響應在其中被描述為配置文件。本文假設有一個最初的JSP作為預期行為的切入點,同時假設最終的JSP作為網頁應用事務和會話的預期終結點。

定義1 給定一個在Struts中描述的網頁應用A,一個有限自動機WebA=(View,Act,AM,iv,FV),調用Web自動機定義如下:View是在A中的JSP文件;Act是A的一系列請求及Servlet響應對集合;[AM?View×Act×View]是A的操作映射;[iv∈View]是A中的初始JSP頁面;[FV?View]是A中的最終JSP頁面集合。存在[a∈Act],本文定義rq/re,其中rq是一個對ActionServlet的請求標簽,re是對ActionServlet的響應標簽,當ActionServlet被激活時,re被忽略。Action映射指被激活的指向指定的ActionServlet的指令集合,而JSP則根據ActionServlet被調用。

本文的建模目的旨在測試網頁應用,即使在最終的JSP中,仍需存在一些鏈接以開始其另一個請求;但對于測試應用的動態行為,這些鏈接并不重要,因通常這些鏈接并不包含應用的邏輯組件,這些請求均惟一地被應用映射到含有適當前綴的URL上。為了簡單起見,本文忽視這些參數。

圖3所示為一個行為模型的示例――簡單的圖書館管理系統,其負責管理圖書數據庫。該圖書館管理系統由三個功能組成,其一是檢索系統中已注冊的書籍,該功能由JSP,QueryAct構成搜索,由JSP構成列表,并使用未認證的JSP呈現細節。另外兩個功能是注冊新書以及修改注冊記錄,這兩個功能由JSP執行修改,由ModifyAct及RegistAct執行注冊,由JSP顯示成功和失敗的結果,通過CertifyAct進行認證以及通過JSP來進行登錄實現。

圖3中Weblib的行為模型組成如下:

View = {search, list, detail, login, modify, regist, failure, success}

Act= {QueryAct/list,QueryAct/detail, CertifyAct/mod, CertifyAct/reg, CertifyAct/NG, ModifyAct/success, Modify/failure, RegistAct/success, RegistAct/failure, link search, link detail}

iv = search

FV = {list, detail, failure, success}

AM = {(search, QueryAct/list, list), (search,QueryAct/detail, detail), (search, CertifyAct/NG, login), (search, CertifyAct/mod, modify), (search, CertifyAct/reg, regist), (login, CertifyAct/NG, login), (login, CertifyAct/mod, modify), (login,CertifyAct/reg,regist), (detail, CertifyAct/mod, modify),(detail,CertifyAct/reg,regist), (detail, CertifyAct/NG, login), (modify, ModifyAct/success, success),(modify, ModifyAct/failure, failure), (list, link detail, detail), (regist, RegistAct/success, success), (list, link search, search),(regist, RegistAct/failure, failure), (detail, link search, search),(success, link search, search), (failure, link search, search)}

3 測試框架

給定一個網頁應用A,WebA將遵從操作映射模擬全部的行為特性。每個字均會被WebA介紹以模仿預期A的事務或會話。語言同樣也被WebA接收,即L(WebA)。因此,檢測L(WebA)中的所有字是一種對A有效的測試方式。然而,因L(WebA)是一個常規集合,通常其是無窮的,從測試的角度來看,本文主要關注網頁應用的特性,WebA中的循環是一個返回之前訪問過的頁面的序列,這些重復訪問的頁面通常會導致應用中的邏輯組件進行相似的應用。據此,在L(WebA)中最令人感興趣的測試是其中最多一次循環的字,為了包含所有轉換,必須將單循環考慮在內。通過增加JSP的訪問,可以測試Web應用程序更多的屬性。本文將這種思想形式化以形成一種測試標準。

Weblib有兩種循環:由首尾頁間鏈接觸發的以及由更新認證鏈接觸發的。前一種循環是相似事務的重復,后一種循環是用戶得到認證前的空循環。給定一個網頁自動機WebA=(View,Act,AM,iv,FV),一個執行操作是一個由iv引發的View和Act的交變序列:[v0a1v1…alvl]。其中,[v0=iv,vl∈FV],且對于所有的i,[vi,ai+1,vi+1∈AM]。令Exec(WebA)為所有WebA的執行操作計劃,occ(vi,e)為執行操作e中出現vi的次數。文中記錄除去所有來自e的View活動序列L(e)和出現在e中的View集V(e)

定義2 擁有n度的A測試標準[TnA]定義如下:

[TnA={L(e)e∈Exec(WebA),?v∈V(e):occ(v,e)≤n+1}]

顯然,[T0A],[T1A],[T2A],…是遞增數列且[n=0∞TnA=][L(WebA)]。

在很多時候,[T0A]給出了一組大量的測試序列,圖4顯示了網頁應用的測試框架。

在這一框架中,通過一個網頁應用配置構造了網頁自動機,然后提取了執行操作。接著根據測試標準進行了測試,從[Tn]開始直到得到滿足條件的結果。測試標準的最大維度取決于測試中的網頁應用,若任何循環均無副作用,則[T0]就足夠了。

將測試標準應用在Weblib中。如前所述,特征值為L(Weblib)的正則表達式Replib如下:

[Replib=(Path1+Path2)(link_search(Path1+Path2))]

其中,

[path1defCertifyAct/NG?(CertifyAct/mod(ModifyAct/success+ModifyAct/failure)+CertifyAct/reg(RegistAct/success+RegistAct/failure))Path2def(QueryAct/list(e+link_detail)+QueryAct/detail)(e+Path1)]

此處描述測試標準為[T0]和[T1]時的測試序列,使用[ReplibTi]來表示語言限制為[Ti],如下:

[ReplibT0=Path01+(QueryAct/list(e+link_detail)) (e+Path01)]

其中,

[Path01def(e+CertifyAct/NG)×(CertifyAct/mod(ModifyAct/success+ModifyAct/failure)+CertifyAct/reg(RegistAct/sucess+RegistAct/failure)+QueryAct/detail))]

注意到CertifyAct的ActionServlet被重新激活多次,但由于其不是JSP,所以不會對測試標準造成影響。

4 Struts的應用

將Struts的配置方案擴展以直接描述行為。主要增加了JSP和動作映射的結合信息。通過這種擴展,可以在Struts中描述一個網頁應用的網頁自動機。本文為視圖組件創建了一個配置文件(wsm?config.xml),該擴展描述了JSP間的轉換關系。如圖5所示。

圖5顯示了圖書館管理系統中的struts?config.xml 和wsm?config.xml,網頁自動機Weblib由以下部分組成:iv指定為初始狀態元素的路徑屬性,FV則代表了終止狀態元素的路徑屬性。視圖和部分AM指定為視圖映射元素,每個擁有路徑屬性的視圖元素指定一個視圖和由該視圖鏈接的可能狀態轉換。動作鏈接元素定義了一個由其路徑屬性所請求的Servlet調用的狀態轉換。AM的其余部分由struts?config.xml中的一個動作映射元素所指定。根據每個和活動鏈接中路徑元素所匹配的動作元素,這些元素表明哪一種Servlet活動應被激活以及哪些JSP應被活動Servlet執行的結果所調用。因此,AM是被視圖元素中的活動鏈接元素及映射活動元素所指定的。

5 結 論

本文提出了一種基于MVC模型的網頁應用測試框架,首先定義了一種網頁應用的行為模型,并在J2EE平臺上采用JSP/Servlet技術實現的MVC結構展示了一種面向Jakarta Struts框架的應用。該模型直觀地呈現了網頁應用全面的行為,且在這種行為模型下進行了測試。本文的重點在于網頁應用的特性,即通過重訪某些頁面經常導致相似的頁面轉換,為此提出了基于重訪問相同頁數量的測試標準,相比較其他測試其更為精確。盡管測試標準基于測試中的網頁應用的特性,在眾多情況下預期最簡單的測試標準可涵蓋哪些僅重復訪問一次的測試序列。

參考文獻

[1] 林艷琴.Web功能測試自動化的研究與應用[D].成都:電子科技大學,2010.

[2] 侯婷.基于Web功能測試自動化研究與應用[D].青島:山東科技大學,2014.

[3] 鄧璐娟,范乃梅,孫義坤,等.基于Web應用的性能測試模型研究[J].計算機工程與應用,2013,49(1):75?77.

[4] 王新.基于MVC模式的通用Web軟件系統開發框架設計與實現[D].成都:電子科技大學,2007.

[5] 郝紅巖.基于MVC模式的Web框架的應用研究[D].武漢:武漢理工大學,2013.

[6] 王俊芳,李隱峰,王池.基于MVC模式的ThinkPHP框架研究[J].電子科技,2014,27(4):151?153.

[7] ATKINS D L, BALL Thomas, BRUNS Glenn, et al. Mawl: a domain?specific language for form?based services [J]. IEEE transactions on software engineering, 1999, 25(3): 334?346.

[8] 歐陽宏基,葛萌.基于Struts2與Hibernate框架的Java Web應用研究[J].自動化技術與應用,2016,35(2):48?52.

[9] MORALES?CHAPARRO R, LINAJE M, PRECIADO J C, et al. MVC web design patterns and rich internet applications [J]. Proceedings of the jornadas de ingenier?a del software y bases de datos, 2007, 32(5): 98?104.

第5篇

【關鍵詞】 MVC 學生信息 管理系統

近年來,如何有效地管理學生信息,成為了各個學校面臨的一個難題。學生的信息是多種多樣的,其包含的數據量大,涉及的人員和部門廣,并且需要隨時更新。與此同時,學校在對學生信息的管理上也比較分散,不僅存在管理凌亂的現象,而且存在重復管理的問題,對學生信息的管理不能做到統一、規范和高效。

基于以上情況,本文提出了基于平臺和MVC的架構,采用 MVC技術進行學生信息管理系統的設計與實現,希望能夠對學生信息進行有效的管理,使得學生信息的管理更加快速、準確、方便。

1 MVC 框架

MVC是由微軟官方提供的基于MVC架構模式的開發框架,是一個易于開發、易于測試、易于維護的框架,也是現今流行的一種MVC開發技術。在 MVC框架中,通過模型、視圖和控制器的功能分離,充分地實現用戶輸入、業務制定和界面顯示的獨立。

從用戶在瀏覽器中輸入請求信息,到在頁面獲得處理結果,大致需要經過5個步驟。

(1)用戶在瀏覽器中發出信息請求,向控制器發送相關的操作命令。

(2)控制器接收到請求命令之后,向模型請求獲得有關的數據信息。

(3)模型根據請求將對應的數據信息返回給控制器。

(4)控制器將相關的數據信息發送到相應的視圖。

(5)相應的視圖將獲得的數據信息返回到瀏覽器,顯示給用戶。

在 MVC的具體開發過程中,主要的工作是對控制器進行程序編寫。因為控制器既要處理用戶請求,又要實現與模型進行數據通信,以及向視圖發送數據信息,控制器在模型、視圖、控制器三者中處于一個中樞的位置。

3 學生信息管理系統的設計

建立學生信息管理系統,實現數據處理的統一、規范和高效,通過對學生信息管理系統的需求分析,希望能夠探索出信息處理的最佳途徑。

3.1 需求分析

學生信息管理系統主要是圍繞與學生有關的數據信息進行處理的,應當具有登錄管理、課程管理、學籍管理、成績管理、德育管理等功能模塊。

(1)登錄管理模塊:系統管理員設定每個用戶的登錄用戶名和初始密碼,并對用戶名和密碼具有修改和刪除的權限;同時,系統用戶登錄系統之后也能夠對自己的登錄信息進行修改。

(2)課程管理模塊:課程信息是屬于穩定性比較強的一類信息,而且課程的開設與取消在學校的權力范圍之內,系統管理員在系統中扮演學校的角色設置課程的基本信息,并對課程的相關數據進行處理。教師只能查看課程的基本信息。

(3)學籍管理模塊:系統管理員根據學號為每個學生分配系統的登錄信息。學生將個人資料信息按照學籍內容的要求輸入到數據庫,并根據實際情況對信息進行及時的修改,以確保信息的準確性。教師可在通過不同的條件查找學生的學籍信息,了解學生的基本情況。

(4)成績管理模塊:教師按照課程的考核要求進行不同方式的考試,考試結束后將學生的考試成績輸入到系統,對有錯誤的成績數據進行編輯。學生參與課程學習并參加考試之后,能夠查閱自己的成績。

(5)德育管理模塊:教師負責錄入每位同學的德育評價等級,并對錄入有誤的評價等級進行編輯。學生能夠查閱每月的德育評價等級,從而端正自己的日常行為。

3.2 功能設計

學生信息管理系統在實際的使用過程中,主要有三類用戶:系統管理員、教師、學生,因此管理系統對應地分為三類用戶端:系統管理員端、教師端、學生端。他們的功能權限分別是:

(1)系統管理員端:系統管理員在學生信息管理系統中的操作平臺,系統管理員進入該平臺后可以修改自己的登錄密碼,并進行登錄信息管理和課程信息管理兩個模塊的操作。

(2)教師端:教師用戶在學生信息管理系統中的操作平臺,教師進入該平臺后可以修改自己的密碼,查看課程信息和學生的學籍信息,并進行成績信息管理模塊和德育信息管理模塊的操作。

(3)學生端:學生用戶在學生信息管理系統中的操作平臺,學生進入該平臺后可以修改自己的密碼,編輯自己的學籍信息,并可查看考試成績和德育評價信息。

4 學生信息管理系統的實現

本學生信息管理系統采用 MVC架構技術,主要開發語言為,數據庫系統為SQL Server。

現以系統管理員端的課程信息管理功能的實現過程為例,介紹 MVC的開況。課程信息管理功能包括對課程信息的查詢、添加、修改和刪除。首先使用SQL Server創建課程信息表,包括字段課程編號、課程名稱、課程學分、課程類別、考試性質、考試時間等。

(1) 模型(Model)的實現:定義一個 實體數據模型,數據來源于課程信息表。

(2)控制器(Controller)的實現:立一個控制器,用來實現課程信息管理模塊的查詢、添加、修改和刪除的功能的。

(3) 視圖(View)的實現:創建cshtml頁面,用于顯示課程的基本信息,并提供管理操作以及相關的超鏈接。

4 結語

本文根據學校在學生信息管理中存在的問題,提出了采用 MVC框架開發較復雜的學生信息管理系統,搭建了完整的基于 MVC框架結構的信息管理系統。學生信息管理系統的應用,給學校的學生信息管理工作帶來了改變,實現學生信息管理朝著規范化、科學化、現代化的方向轉變,提升學校的管理水平和工作效益。

參考文獻

[1]貢博文.淺談網站建設中MVC與三層架構技術[J].科技風,2013.

[2]周文紅.基于 MVC框架的Web應用開發[J].計算機與現代化,2013.

[3]沈偉.基于Web的高職學生信息管理系統的設計與實現[J].泰州職業技術學院學報,2014.

作者簡介

鄧俊英(1981-),廣東省佛山市人。大學本科學歷。現為佛山市華材職業技術學校計算機中學一級教師。研究方向為計算機技術。

第6篇

關鍵詞:MVC Struts Spring

0 引言

MVC框架是Xerox PARC在20世紀80年代為編程語言Smalltalk-80發明的一種軟件設計模式,其中M是指數據模型,V是指視圖界面,C是指控制器,使用MVC的目的是將數據模型和視圖界面實現代碼分離,從而使同一個應用程序可以使用不同的表現形式,目前MVC在Java EE里已經廣泛使用,并不斷有新的MVC框架。各個MVC框架都有各自的優勢和不足,在進行項目開發的過程中,如何選擇一個合適開發框架就是需要重點考慮的問題,選擇了合適開發框架可以提高開發的效率。本文將主要對于目前最流行、最常用的兩類MVC框架Struts、Spring MVC進行簡要介紹,并對比兩者的不同之處。

1 struts簡介

Struts是Apache軟件基金下Jakarta項目的一部分。Struts框架的主要架構設計和開發者是Craig R.McClanahan。Struts是目前Java Web MVC框架中不爭的王者。經過多年的發展Struts已經逐漸成長為一個穩定、成熟的框架,并且占有了MVC框架中最大的市場份額。

1.1 struts的體系結構 struts是一個基于Sun J2ee平臺的MVC框架,它將Servlet和JSP標簽作為實現自身功能的一部分。MVC的每個特征Struts都有,而且還在他的基礎上有了進一步的創新,它的體系結構如1-1所示。

圖1-1向我們展示了Struts的體系結構的三部分:視圖(View),模型(Model)和控制器(Controller)。

視圖(View):Struts的視圖主要是JSP文件。Struts提供了許多定制JSP標簽,它們使用起來簡單、功能強大,在創建視圖界面的時候使用Struts標簽可達到事半功倍的效果。模型(Model):模型組件代表應用的業務數據和邏輯。Struts中的系統模型的狀態主要由ActionForm Bean和值對象來體現。控制器(Controller):Struts的控制器主要是ActionServlet,但是操作業務邏輯的則是Action、ActionMapping和ActionForward,業務邏輯工作主要是在他們的相互作用下實現的。其中Action是真正的業務邏輯的實現者,ActionMapping與ActionForward的任務是指定不同的業務邏輯或流程的運行方向。

1.2 struts的工作原理 在Struts中,擔任控制器工作的是ActionServlet,所有的請求都會發送給ActionServlet,當ActionServlet接受到一個請求時,會根據URI來決定使用哪一個Action處理請求。如圖1-2所示:

在上圖中,當ActionServlet接受一個來自客戶端的請求時,執行以下操作:①檢索和請求相匹配ActionMapping實例,若是匹配就進行下一步創建ActionForm,但是若不存在則返回請求路徑無效500錯誤信息。②檢查是不是存在ActionFrom實例,若不存在,就創建一個ActionForm 對象,在ActionFrom中保存好用戶提交的表單數據。③是否需要表單驗證(validate)是由其配置決定的,驗證時采用的是ActionForm的validate()方法。④ActionServlet從ActionMapping實例所包含的映射信息出發,最終決定由哪個Action接收,如果不存在相應的Action實例,那就要先創建一個合適的Action實例,然后調用Action的execute()方法。⑤Action的execute()方法返回一個ActionForward對象。ActionServlet把轉發給ActionForward對象指向的jsp組件。⑥ActionForward對象指向的jsp組件生成的動態網頁,返回給客戶端。

1.3 struts的優缺點

1.3.1 優點 ①實現MVC模式,結構清晰,這樣開發者只關注業務邏輯的實現。②可使用的tag有很多,Struts的標記庫(Taglib),如能靈活動用,就會使開發效率變得高很多。③頁面導航。這一功能在以后的發展中表現出了良好的前景,實際上,這樣可使系統的脈絡更清晰。④提供Exception處理機制。⑤數據庫鏈接池管理。⑥支持I18N。

1.3.2 缺點 ①Struts的Action必需是thread-safe方式,它要求只需一個實例處理全部請求。②Struts的每個Action都會跟Web層耦合起來,進行測試時離不開Web容器,也不容易進行單元測試。③Struts的FormBean將全部數據都看做String類型,它可借助工具Commons-Beanutils做類型轉化。但它的轉化都是在Class級別,而且轉化的類型是不可配置的。不容易將類型轉化時的錯誤信息返回給用戶。④Struts處理Action時離不開ServletRequest 和ServletResponse,所以必須要有Servlet容器。⑤Struts創建一個Action,極其不容易控制它的執行順序,而且要想實現這一功能,很可能需要重新去寫Servlet。⑥Struts處理Action以class的hierarchies為基礎,不容易在action處理前和后進行操作。

第7篇

關鍵詞:ThinkPHP MVC Bootstrap 招投標 架構設計

中圖分類號:TP311.52 文獻標識碼:A 文章編號:1007-9416(2016)12-0165-01

1 招投標平臺的需求分析

本招投標平臺是建筑行業平臺級的產品,主要是服務建筑行業內的專業性企業、個人以及專家,通過整合建筑行業資源、以建筑行業項目和服務為紐帶,致力解決行業項目和服務招投標不規范、不透明、交易成本高企的現狀。本文從功能性需求和非功能性需求兩個方面進行需求分析。

1.1 功能性需求分析

本招標平臺分為兩個主要流程:用戶注冊流程、招投標流程。(1)用戶注冊流程。用戶通過短信驗證碼注冊后,完善用戶資料,成為注冊用戶;用戶上傳照片或者掃描件進行身份和建筑行業資質認證,平臺后臺認證后,用戶成為認證用戶;用戶繳納平臺會員費后成為VIP用戶。(2)招投標流程。用戶招標項目和招標文件,符合項目條件的用戶可以投標該項目,招標者在競標列表中選標,中標者實施該項目,完工后提交驗收、繳納專家審核費,專家確認是否驗收通過,最后由招標者決定項目是否結束。

1.2 非功能性需求分析

(1)終端設備支持。平臺可以支持PC端瀏覽器、手機瀏覽器以及微信端瀏覽。(2)安全要求。對于需要登錄后才能訪問的頁面要禁止非法訪問等。(3)性能要求。網絡正常的情況下,大于2MB/秒,1000人以下并發訪問頁面打開時間最多不超過5秒。

2 招投標平臺MVC框架的選擇

通過技術平臺選型,考察 MVC、Struts2、Spring MVC、ThinkPHP、Yii等多個MVC框架后,結合技術團隊能力、國內流行程度等因素,將 MVC、Struts2、ThinkPHP作為備選技術方案。ThinkPHP中的MVC提供了一種敏捷開發的手段,使得開發者能夠迅速地開發出穩定的企業級網站[1]。ThinkPHP在中小型應用中,學習成本最低、開發效率最高,所以在國內PHP MVC框架應用中占據了將近50%的市場份額。本平臺是一個中等規模的網站,根據前述非功能性需求分析得出,并發訪問量要求不高,且用戶預算低、開發周期短,所以決定平臺采用ThinkPHP框架。

3 招投似教ǖ募芄股杓

3.1 平臺架構的設計

為了進一步壓縮成本,縮短開發時間,從架構設計上既要滿足前述用戶需求,又要減少開發工作量。因此平臺通過共用控制器和模型,采用多視圖的方法滿足用戶PC端、手機端、微信端瀏覽本平臺的需求,而前端則采用Bootstrap框架進行快速頁面布局和前端編程。Bootstrap是最受歡迎的HTML、CSS和JS框架,用于開發響應式布局、移動設備優先的WEB項目[2]。根據需求分析,本平臺部分技術架構設計如圖1所示。

限于篇幅,本架構主要展示了平臺Home前臺的架構設計,前臺Home和后臺Admin共用Common\Model,前臺PC端View和移動端MobileView共用了前臺Controller,從而減少了開發冗余,提高了代碼復用率,大幅壓縮了開發成本和開發周期,提高了軟件質量。

3.2 前臺控制器基類的實現

FrontController是前臺控制器的基類,只有一個方法_initialize,繼承該基類的前臺控制器都會執行該方法。_initialize方法通過ismobile函數判斷,如果是手機端或者微信端瀏覽,則通過C(‘DEFAULT_V_LAYER’,’MobileView’)函數將默認視圖層從View目錄改成MobileView目錄,從而改成適合手機瀏覽的網頁,而控制器類和模型類無需修改。如果用戶沒有登錄,用戶訪問了需要登錄才能訪問的控制器方法,則將鏈接重定向登錄方法,強制用戶登錄。

4 結語

MVC輕量級ThinkPHP框架,基于面向對象的思想,結合使用了Ajax技術,使整個系統功能清晰明了[3]。本平臺選擇ThinkPHP框架進行架構設計,采用多個視圖共用一個控制器方法的方式支持多終端設備瀏覽器,滿足了招投標平臺的功能性需求和非功能性需求,提高了開發效率、縮短開發周期并節約開發成本,具有較好的技術推廣價值。

參考文獻

[1]徐誠斌,王金平.MVC在ThinkPHP框架中的應用研究[J].信息與電腦:理論版,2011(3):160-160.

第8篇

關鍵詞: WebForm;MVC;設計模式;三層架構;MVP

The Research Of MVC

Tu Gang Li Jian Liu Huaqing Ji Yongling Xu Zihao

(Jiangsu Vocational And Technical College Of Finance & Economics Jiangsu Huanai 223003)

Abstract: The essay describes the development of Microsoft's Web App Platform Stage and analyses of WebForm, MVC, Three Tiers and MVP. The essay recommendations to the picking of design pattern and software framework in the use of project, it introduces that what should be involved in View, Control and Model of MVC.

Keywords: WebForm, MVC, Design Pattern, Three Tiers, MVP

1 引言

MVC Framework是微軟官方提供的MVC模式,是編寫 Web應用程序的一個框架。此前已習慣了運用 WebForm開發模式的設計人員運用MVC模式可能會有所困惑,為什么微軟推出 MVC Framework?同時,在 WebForm開發模式設計Web應用程序開發時,設計人員可能會運用三層結構架構Web系統,而MVC模式也是由三個事物組成,因此技術人員就會產生疑惑,容易將二者混為一談。

通過 WebForm、MVC、三層結構以及MVP之間進行比較,為Web應用程序開發人員在項目開發設計中選用不同的開發模式和軟件結構來架構系統提供了參考。同時結合江蘇省大學生實踐創新訓練項目“基于 MVC的校內大學生社區系統設計與實現”,介紹了 MVC在Web應用程序系統開發中其View、Control和Model中應包含哪些具體內容,為 MVC的運用提供了借鑒的方法和技巧。

2 MVC與相關技術

2.1 MVC

MVC―― MVC的推出確實大大改變了Web App的開發方式,很多Web Form下的方式不被提倡了,如服務器端控件將被拋棄,轉而再次使用客戶端控件;事件驅動模型被拋棄,轉而使用了類似傳統的URL跳轉處理模型。而且在數據驗證等方式上與Web Form下提倡的方式有了很大變化。

MVC是1979年提出的,起初是用于軟件的一種架構模式。模型-視圖-控制器(MVC)是Xerox PARC在上個世紀八十年代為編程語言Smalltalk-80發明的一種軟件設計模式[1],然后被推薦為Sun公司J2EE平臺的設計模式,并且受到越來越多的使用 Cold Fusion 和 PHP 的開發者的歡迎。

MVC (Model-View-Controller) 在 Java / JSP / J2EE 中已廣泛運用,并衍生出 Struts 等開放源碼的 Framework (框架)。其主要目的是為了在開發復雜的大型網站時,能將不同的功能作切割,提高程序代碼的可讀性,以及組件的可重用性。其結構如圖1所示[1]。

2.2 ASP. NET MVC與WebForm

MVC與Webform技術的架構如圖2所示[2]。

MVC將WebForm中的一個IHttpHandler換成了兩個IHttpHandler。Web Form中Page(IHttpHandler)既負責業務邏輯又負責顯示,在MVC中換成了兩個IHttpHandler,第一個Handler負責業務邏輯,第二個Handler(ASPX)是View,用于顯示的。在MVC中的業務實際執行時間被提前到了HttpMolde中,而Web Form的請求只在httpHandler容器中被執行。即MVC中Controller與View的分離是使用的請求管道隔離實現的,這樣在不影響效率(一次請求,而 MVC使用了HttpModules來攔截地址請求,具體用到了System.Web.Routing類庫(MVC2中)。在Application_Start時,UrlRoutingModule類攔截請求,給RouteTable的全局對象一個攔截的設置,設置使用RouteCollection對象進行保存,MVC對這個類進行了擴展――RouteCollectionExtensions。客戶訪問頁面時,UrlRoutingModule類攔截請求,在RouteTable中查看是否符合規則,符合就調用MvcHandler。MvcHandler的ProcessRequest方法再調用Controller;從而達到代碼的邏輯層次上的分離,實現了Controller代碼的單獨管理。顯然MVC模式有利于理解分層邏輯,把握代碼的層次感。Controller到aspx頁面之間的過程,已經被MVC框架隔離。至于Controller或者View頁面與Model調用的過程,則由開發人員來控制。

MVC縱向切割了開發過程中的代碼,從服務器到瀏覽器層層分離,層次之間耦合度很低,因為它是順著底層的開發脈絡進行封裝,所以有利于開發者對整個程序過程流轉的理解。但是MVC有一個非常大的缺點,這個缺點是和整個軟件發展思路相背離的,那就是它無法封裝,所以無法被重用。MVC只適合輕量級的開發,桌面開發是極少用到的。Web開發恰恰就是輕量級,因為網絡硬件條件的限制,不需要也無法做到非常復雜的邏輯。這也是MVC非常非常適合Web開發的原因[3]。

WebForm中頁面請求則只在HttpHandler容器中執行,對其進行分層,只能依靠邏輯上分離。Web Form模型中事件必須被注冊到頁面里,比如Button1_Click這樣的代碼。Page_Load方法在頁面裝載時執行,而Button1_Click必須在客戶點擊后才能執行;而顯示代碼被寫入Page_Load方法中,這就造成了需要編寫額外的代碼量,如if (!Page.IsPostBack)。而在Button1_Click執行后如果需要顯示,則比較難處理。替代的解決方案是使用Response.Redirect,在一個aspx頁面中處理邏輯,處理后跳轉到另外一個顯示的頁面。這樣在兩個頁面中數據很難共享,加外跳轉時就會多一次請求。當然可通過Server.Execute,Server.Transfer或者Context.RewritePath等處理方式實現數據共享,兩個頁面轉換則在服務器端完成[4]。

通過分析可以知道,MVC框架在Web應用開發方面具有很強的優越性,而Web Form也有一定優勢,在簡單的應用中更加容易開發。WebForm也可實現和MVC一樣的分層方式,只是處理時需多寫一些代碼。用WebForm開發分層遇到的最大問題是頁面之間數據的傳遞。 MVC與WebForm比較起來,WebForm更容易理解,不會產生復雜的配置。

WebForm橫向切割了代碼,控制和顯示是封裝在一起的。從開發者思維邏輯上而不是實際情況上對代碼進行封裝,開發WebForm容易上手的原因也就在此了,但這不利于開發者對底層程序流轉機制的理解。WebForm中View和Controller是在一起的,WebForm出現后,誕生了大量的組件,這是MVC模式所不及的。微軟的經驗之一是硬件發展很迅速。代碼的封裝是靠犧牲運行效率來提高開發效率,犧牲的運行效率通過提高硬件性能來解決。但這個經驗不適合網絡硬件,網絡硬件要考慮兼容性而且是國家的基礎設施,更新的靈活性遠比單機要差。可用如圖3來說明[4]。

2.3 ASP. NET MVC與三(N)層架構

N層結構是一種軟件抽象的層次結構,是對復雜軟件的一種縱向切分,每一層次中負責同一類型的操作,以便將各種代碼以其負責的功能作為依據來分割,以降低軟件的復雜度,提高其可維護性。一般來說,層次之間是向下依賴的,下層代碼未確定其接口(契約)前,上層代碼是無法開發的,下層代碼接口(契約)的變化將使上層的代碼一起變化。三層結構是N層結構的一種,是人們在長時間使用中得出來的一種應用場合廣泛的N層結構,被當作一種典型的軟件層次結構而廣為流傳。這里所說的三層架構[1]指:表現層(顯示層)、業務邏輯層、數據訪問層(持久化),如圖4所示。

MVC中的三種構造型元素之間并不存在明顯的層次結構,沒有明顯的向下依賴關系,相反的,View和Model往往是比較獨立的,而Control是連接兩者的橋梁;MVC中每個塊可以獨立測試的。而三層結構中,上層模塊的運行或測試都必須要提供下層代碼或者提供相應接口。相對來說,MVC復雜得多,但是結構更清晰,耦合性更低。MVC中每一塊內部(特別是Model)常被設計為多層。一個良好的MVC模式構建的結構中,Control是核心,小且較為穩定的,可作為一個核心框架來提供,并提供擴展點,只需要簡單配置就可以運行。而View則可能是一套或多種供選擇的視圖引擎,決定了系統展示給用戶的界面,使用時的主要工作量在于擴展點以及根據需要而設計的視圖模板。Model則是業務提供者,決定了系統提供的功能,其內部可能是一些普通的類或是實現了某些接口的類,對于復雜的軟件可能會分成很多層,如業務邏輯層、業務提供層、系統提供層、數據提供層、數據訪問層等。MVC與三層架構之間的關系如圖5所示[5]。

2.4 MVP與MVC

隨著和Windows窗體用戶界面創建技術越來越強大,讓用戶界面層負責多于它本應做的事是很常見的。沒有一個清晰的職責劃分,界面層經常淪為一個包含實際上應屬于程序其他層的邏輯的容器。有一個稱為:模型(Model)-視圖(View)-提供器(Presenter)的設計模式(MVP),特別適合解決這個問題。

MVP設計模式將界面層中的邏輯和代碼重構為更加易于測試的、新型的、可重用的代碼。MVP即可以應用到Web項目中,也可以應用到Windows Form項目中,MVP方便測試機制為大型復雜的企業級應用開發帶來極大的方便,MVP模式有Model-Presenter-View三個層次,如圖6所示。其中Controller層是負責狀態保存和頁面跳轉的,可根據需要進行設置。

MVP模式中Model、Presenter與View的關系如圖7所示,Model并不與View直接通信,Presenter將充當中間角色。在MVC中,當Model被Controller更新后,會直接通知View并更新顯示。從兩者模式圖中發現MVP與MVC最大的一個區別就是Model與View層之間是否存在通信(甚至雙向通信)。在MVP模式下的Presenter擁有“絕對權力”。如果沒有它,Model與View就是兩個孤島,完全解耦了的。因此MVP中的View只從實現相應IView接口中的屬性和方法,而最終調用IView接口下的哪個視圖實例則完全交給Presenter。

Supervising Controller模式是對MVP模式作了一定變動,如圖8所示。與圖7所示的MVP模式主要有以下區別。

(1) Presenter實現復雜的View邏輯;(2) View實現部分邏輯;(3) View可以與Model綁定,Model的變化可以通知View;(4) 這種模式下,Presenter和View是松耦合,Presenter可以和多個View直接通信。

Supervising Controller模式其實很接近于MVC模式,只是提供了Presenter與View之間的“雙向通信”。

3 MVC在項目中的應用

MVC模式中,View中的邏輯比較簡單,重點放在Model中,而Controller是對業務流程的控制,應該保持“代碼清爽”。業務邏輯是系統架構中體現核心價值的部分,主要集中在業務規則的制定、業務流程的實現等與業務需求有關的系統設計。View是顯示邏輯,Controller是流程控制邏輯,Model是“邏輯大本營”。使用 MVC 框架時要將“經常變化”的業務規則(位于Controller)和相對穩定的業務邏輯(位于Model)分離開。為適應不斷變化的業務需求,在Model層采用接口方式實現。

“基于 MVC的校內大學生社區系統設計與實現”省大學生實踐創新訓練項目中主要運用Robustness分析方法,找出哪些對象應放在Model中,哪些屬于控制邏輯。Robustness分析方法將系統中的對象分為實體對象、邊界對象和控制對象。

(1)實體對象(entity object)。

通常是來自域模型中的對象(也就是現實世界),它常對應于數據庫表和文件,這些數據表和文件中存儲了執行用例所需的數據。有些實體對象是臨時“對象”(如搜索結果),當用例結束后將消失。

(2)邊界對象(boundary object)。

參與者使用它來同系統交互,通常包含窗口、屏幕、對話框和菜單。如果有GUI原型,就可知道許多主要的邊界對象。

(3)控制對象(control object)。

將邊界對象和實體對象關聯起來(通常被稱為控制器,因為它們通常不是真正的對象),包含大部分應用邏輯,它們在用戶和存儲的數據之間架起一座橋梁。控制對象中包含經常修改的業務規則和策略。這樣修改時只需要在這些對象中進行,而不會涉及到用戶界面和數據庫模式。控制器偶爾也會是設計中的“真正對象”,但大部分控制器只是一個占位符,用于避免遺漏用例要求的任何功能和系統行為。

實體對象、邊界對象和控制對象分別對應MVC的Model、View、Controller三種構造型元素。對象的劃分有四個交互規則。

(1) 參與者只同邊界對象交互;(2) 邊界對象只能同控制器和參與者交互;(3) 實體對象只能同控制器交互;(4) 控制器可同邊界對象,實體對象以及其他控制器交互,但不能同參與者交互。

四個規則可描述為:邊界對象和實體對象都是名詞,而控制器是動詞。名詞和名詞之間不能交互,但動詞之間可以。

4 結束語

微軟公司推出 MVC Framework讓Web開發設計人員多了一個選擇。文章對WebForm、 MVC和MVP三種軟件模式和三層架構進行了分析,對軟件模式的選擇提出了參考性的建議,在項目開發過程中,結合具體情況選擇能充分發揮該模式優點和項目開發人員自身特長的軟件模式。具體介紹了 MVC中Model,View和Controller三種構造型元素各應包含哪些內容。

MVC Framework推出時間較短,對 MVC Framework研究處于了解、運用階段。并且,微軟公司必將推出 MVC Framework的更多模板,因此,還存在許多問題需要進一步探討和研究。

參考文獻

[1]Buschmann et al. Pattern-Oriented Software Archtiecture. John Wiley & Sons,1996,pp. 125-143.

[2]/mvc/whatisaspmvc/

[3]/zh-cn/magazine/dd252940.aspx

[4]/zh-cn/magazine/dd252940.aspx

[5]/zh-cn/library/ms978748.aspx

第9篇

關鍵詞:MVC模式;數據查詢;優化設計;Hibernate

1 MVC框架模式

MVC(Model-View-Controller)框架模式通過模型、視圖、控制器,分別對程序的輸入、處理和輸出進行控制,三者相互獨立,不會因為其中一項的改變而影響其他內容的變化。其中,模型可以為視圖提供數據,同時進行業務邏輯關系的處理;視圖用于接收命令和顯示相應的數據;控制器則專門控制用戶的輸入和輸出。如圖1所示:

2 數據查詢設計

原始的Web程序開發以服務器端開發為主,在程序設計中,以獨立編寫的SQL命令語句直接對數據庫進行查詢,這種命令語句直接編寫在頁面代碼中,甚至數據庫的賬戶密碼都暴露給程序閱讀者,很容易被他人所用,給程序的安全性造成很大的隱患。

JAVA提供的Web開發JSP+Servlet+JavaBean可以在一定程度上解決上述問題,它是用JavaBean來封裝邏輯程序、用戶參 數及賬戶密碼,以JSP顯示程序輸出結果,大大提高了程序設計的安全性。其實現方式及對應的MVC模式如圖2所示:

如上圖所示,以Servlet控制用戶請求、顯示響應結果,在接受用戶請求時,以參數作為用戶請求的載體,將參數的安全性驗證設計到業務邏輯中,即在JavaBean中內置變量,其方法中的變量userpassWord即用戶輸入的密碼驗證程序如下:

String userpassWord;

public void setUserpassWord(String s)

{

userpassWord=s;

}

public String getUserpassWord()

{

return userpassWord;

}

sql.executeQuery("select * from user WHERE userpassword='"+userpassWord+"'");

用戶名及其他參數類同,這種通過Servlet只調取JSP中的參數,在封裝的JavaBean中進行參數處理,然后對數據庫進行查詢進而核對參數正確性的驗證方法,在很大程度上保障了程序和數據庫的安全性。

3 數據優化設計

在對龐大的高校一卡通數據進行查詢功能設計中會面臨諸多難題:其中最為常見的就是為了數據序列的一致性,需要分析數據對象持久性;要處理好以上問題,就要借助MVC框架模式來進行程序優化設計,同時借助Hibernate的作用,Hibernate包含6個核心接口:Session、SessionFactory、Transaction、Criteria、Query和Configuration,這6個核心接口應用甚廣,可以把數據對象進行模型化存儲,將數據信息儲存到本地磁盤后,根據實體類進行數據關系映射,對持久化對象進行存取,從而能夠保證在處理數據對象時保證數據序列的一致性。

例如應用程序通過Hibernate保存java.sql.Clob實例時,必須包含兩個步驟:(1)保存一個空的Clob實例在數據庫事務中,(2)鎖定此記錄,更新保存的Clob實例,把長文本數據寫入Clob實例中,其代碼如下:

Session session = sessionFactory.openSession();

Transaction tx = session.beginTransaction();

Customer customer = new Customer();

customer.setDescription(Hibernate.createClob("")); //先保存一個空 的clob

session.save(customer);

session.flush();

//鎖定此記錄

session.refresh(customer,LockMode.UPGRADE);

oracle.sql.CLOB clob = (oracle.sql.CLOB) customer.getDescription();

java.io.Writer pw = clob.getCharacterOutStream();

pw.write(longText);//longText為長文本字符串

pw.close();

mit();

session.close();

在處理數據類型的問題上,Hibernate通過內置的映射類型和客戶化映射類型來實現,內置映射類型可以將一些常見的JAVA類型映射到相應的SQL類型,用戶還可以實現UserType和CompositeUserType接口,從而靈活地定制客戶所需映射類型。

通過以上實例可以看出,Hibernate主要是作為數據持久性框架來使用,其對應MVC模式中的模型,它的主要作用是處理事務流程,把數據庫中的關系表通過ORM映射為對象,將常用的數據查詢程序對應到一個控制器,從而達到封裝和優化的目的。

參考文獻:

第10篇

關鍵詞:SSHJ2EE框架技術

SSH是一種基于J2EE技術的MVC軟件開發框架,它可以大大降低J2EE程序開發的難度,提高開發效率?本文試圖通過對SSH框架的組成與功能進行深入的分析,揭示其較傳統J2EE開發工具的先進之處。

1. SSH框架技術簡述

集成SSH框架的系統從職責上分為四層:表示層、業務邏輯層、數據持久層和域模塊層,以幫助開發人員在短期內搭建結構清晰、可復用性好、維護方便的Web應用程序。其中使用Struts作為系統的整體基礎架構,負責MVC的分離,在Struts框架的模型部分,利用Hibernate框架對持久層提供支持,業務層用Spring支持。相比傳統的J2EE開發工具,它具有一系列獨特的優點?

首先,SSH框架能夠有效的降低開發成本?縮短開發周期?SSH作為一款開源的框架,無需部署在成本極高的大型服務器上,很多時候只需要配合APACHE一類較便宜的服務器使用。

其次,SSH作為一款輕量級的框架可以有效降低系統開銷,同時它還可以與異步JavaScript和XML框架同時使用,不僅能夠對用戶體驗產生極大的改善,且有助于提升系統性能。

最后,由于SSH框架建立于J2EE的基礎之上,所以其同時具備了J2EE的安全性與跨平臺優勢?同時由于其往往將組件相關的配置與關系寫入XML配置文件,使其在面對需求變化時可通過簡單的對配置信息的修改來加以實現而無需對系統進行大的修改。2. 表示層框架Struts簡介

最初Struts于2002年問世的時候,由于其創始人希望其能夠對標簽庫與JSP等開發技術有所助益,所以它被設計成了一個開源項目。它很好的對MVC系統的開發提供了底層支持,有效的縮短了運用MVC模型對WEB應用的開發周期,最終成為了MVC模式事實上的行業標準。

Struts由四個組件協同工作,其中ActionServlet類是中央控制器,在每個項目中唯一存在。而Action作為分控制器對具體流程進行實際上的控制,調用相應的業務邏輯模塊來實現功能并送出結果?ActionMapping作用是幫助控制器將請求映射到操作,ActionForm的作用則是接受和存儲表示層中接受的數據。這四部分共同實現了Struts框架對流程的控制,

由于Struts框架屬于開源項目,這給了我們深入理解其內部實現機制的機會?總體而言,Struts的優勢很明顯?它的優點在于它擁有大量的成功案例可供開發者借鑒?同時提供了豐富的標記庫(Taglib),可大大提高開發的效率?而它將表現與邏輯分離的做法,使得結構更加清晰,有助于開發者將精力集中于業務邏輯的實現?最后,它具有優秀的頁面導航功能,這對后期的維護有著不可估量的好處。3. 持久層框架Hibernate簡介

Hibernate是一款開源的對象——關系映射框架,它對JDBCAPI進行了極其輕量級的對象封裝,從而極大的擴展了開發人員對數據庫的操縱程度,同時它封裝了數據訪問的細節,使得開發者可以將更多的精力集中在業務邏輯上。

Hibernate有6個核心接口,分別是擁有負責將其初始化的SessionFactory接口,負責執行被持久化對象的CRUD操作的Session接口,負責事務相關的操作的可選接口Transaction以及負責執行各種數據庫查詢Query接口與Criteria接口?Hibernate通過這些接口,對持久化對象進行各種存取操作并進行事務控制。

Hibernate主要有四塊內容:持久化類PO,它是數據庫表的一個映射,是Hibernate的操作對象,而操作結果會反映到對應的數據庫表中,映射文件XMLMapping,它存放著PO和數據庫表的映射信息,如表名和類名的對應,PO的屬性與數據庫表中字段的對應,hibernate.cfg.xml,存放著連接數據庫的配置信息已經映射文件的路徑,在Hibernate初始化時Configuration會加載該文件信息到計算機內存,并創建一個SessionFactory對象,把讀入的配置信息拷貝到SessionFactory對象的緩存中,HibernateAPI,主要是前文中所述的六大接口,彼此配合最終實現Hibernate對PO的各種操作并持久化到數據庫中。4. Spring框架簡介

Spring框架提供了一種能夠完全獨立于各種應用服務器并可與現有框架無縫整合的解決方案,其主要通過控制反轉與面向方面編程兩種方式來進行實現,其主要優點在于無論你是否使用了EJB,SPRING都能夠有效的對你的中間層對象進行組織,它為數據存取提供了一個統一的框架,并能夠以一種統一的方式對不同的程序與項目的配置文件進行處理,它是一個全面的解決方案,包括了非常豐富的內容,包括視圖層?模型層?數據層等,它提供了很多原來只有EJB能提供的功能(如聲明式事務管理),卻又無須運行在EJB容器上。

Spring框架由七個有著明確定義的模塊組成,其中SpringCore是它的基礎部分,是控制反轉的承載容器?而在此基礎上衍生出來的SpringAOP則提供了對面向類編程的支持,Springweb與Springorm則分別提供了對MVC框架與ORM框架的支持,SpringDAO則簡化了JDBC編程,使代碼更健壯,SpringContext作為一個強大的集成工具箱,有利于進行企業級程序的開發,而相比之下,SpringWebMVC則聲名不彰,盡管它作為一款MVC框架提供了比Struts更自由的配置度但卻未能得到廣泛的應用,以上七個模塊均可單獨或聯合實現,具有較高的自由度。5. 使用Spring對Struts與Hibernate加以整合

我們從前文中可以清晰的看到,Struts是目前應用于MVC框架中的業界實際標準,其具備高度的可靠性與穩定性,同時將表現與邏輯分離,從而使得結構更加清晰?同時提供了豐富的標記庫(Taglib)與頁面導航,大大提高了開發的效率與易維護性,但是在模型層卻缺少相應的實現。

而Hibernate作為目前業界最成熟的持久層框架之一,封裝了數據訪問的細節,使得開發者可以將更多的精力集中在業務邏輯上,極大的提高了開發效率。

SSH框架的指導思想就是將這兩個框架有機的整合在一起,充分發揮出二者各自的優點, Spring通過Springweb與SpringORM兩個模塊分別對Struts和Hibernate兩個框架進行了整合,為企業級的應用程序提供了一套模塊化的一攬子解決方案,在讓前者發揮出其對程序流程的良好控制作用的同時讓后者負責數據庫的訪問,以達到優勢互補、降低開發難度、提高開發效率的目的。

第11篇

關鍵詞:電商系統; Spring框架; MVC; 數據庫設計; 分頁顯示

中圖分類號:TP393 文獻標識碼:A文章編號:2095-2163(2014)04-0009-05

Abstract:In current e-commerce systems, due to the broadness of user query, database queries often get a large number of eligible query results. For the purpose of quickly respond to user queries, during the process of database design and access, in addition to a reasonable indexing mechanism, the query results display must be paged display. With improved Spring MVC framework, the Bo-layer is added between JSP-layer and Controller-layer, whose main role is as a parameter package. Also, from database generating, business logic configuration, Dao-layer design, Service-layer design, Controller-layer design, Bo-layer design, Jsp-layer design and so on, the paper optimizes data access process. After that , through experimental analysis, compared with traditional paging method, this method has obvious advantages in the aspects such as average response time, a clear frame hierarchy and good portability.

Key words:E-commerce System; Spring Framework; MVC; Database Design; Pagination Display

0引言

隨著電子商務系統規模的增加,涉及訪問的數據量可能會達到上萬甚至是百萬條,為保證用戶瀏覽數據的體驗效果、提升Web服務器的響應速度并減輕服務器的通信負載,就必須對查詢數據進行分頁顯示。

在國內外的應用研究中,已提出了有關分頁顯示的多種方案,常見的方法有SQL分頁算法、JSP分頁方法、使用標簽庫、將查詢結果緩存在HttpSession或變量中實現分頁等,但在實際應用中卻都存在一定的不足和缺陷。具體分析如下。

(1)直接利用數據庫管理系統提供的分頁功能來實現數據分頁。該方法雖然可以提高性能,但不同數據庫實現的方法各不相同,因而對于不同的項目缺乏通用性。

(2)將查詢結果緩存在HttpSession或變量中實現分頁。此方法雖然可以減少數據庫的連接次數,但卻會占用大量Web容器內存[1],而且會導致用戶查看到的可能是過期數據。

(3)直接在數據庫上建立游標,使用ResultSet移動游標實現分頁,使游標定位結果集。這種方式在操作大型數據和訪問用戶眾多的時候,卻可能導致DBMS因為資源耗盡而崩潰[2]。

2基于Spring MVC分頁方案

5結束語

本文針對電子商務系統中,用戶查詢條件寬泛導致出現大量符合條件的查詢結果的問題,提出了利用改進的Spring MVC框架實現分頁的方法。首先,利用Spring MVC框架,實現了表示層、業務層和邏輯層的分離;其次,在傳統框架基礎上做出改進,加入Bo層,對數據進行封裝,縮短數據傳輸時間。本文的測試分析結果顯示,該方法具有響應時間短、移植性高的優點。

但本文提出的方法也存在不足,當商品輸入為海量數據時,其響應時間就會較長,下一步將針對此現象作出改進。其后的工作重點還包括將提出的分頁技術實現相應的模塊化,可以被不同項目直接調用。此外,對于頻繁讀取的數據,可將符合條件的數據全部讀取至Web服務器,并在其上生成一個XML文件,則客戶端即可直接和XML文件實現交互[7],雖然此方法已經實現,但仍存在可完善的空間,這也是未來工作的一個研究重點。

參考文獻:

[1]何玲娟,蟻 龍,劉連臣. 一種松耦合高復用 MVC 模式的 Web 分頁實現[J]. 計算機工程與應用,2007,43( 15) : 95 -97.

[2]崔行臣,張明光. 一種基于Struts框架的Web分頁模型的設計與實現[J]. 山東科學, 2013, 26(4):60-64.

[3]丁振凡. 利用Spring MVC實現數據分頁顯示處理[J]. 智能計算機與應用. 2012,2(5):20-22.

[4]陳雄華, 林開雄. Spring 3.x 企業級應用開發實戰[M]. 北京:電子工業出版社, 2013.

[5]Naveen Balani, Spring系列:Spring框架簡介. [EB/OL]. http:///developerworks/cn/java/wa-spring1/, 2005-08-18.

第12篇

關鍵詞:Flex;RIA;框架;ActionScript;MVC

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2011)16-3848-02

雖然基于HTML的應用程序具有部署成本低、結構簡單、易學易用等優點,但某些應用系統并不適合采用HTML技術,因為這些復雜的應用系統要求多次提取網頁來完成一項事務處理,這往往導致交互速度變得非常慢,因此,傳統的Web技術已經不能滿足網絡用戶全方位、高標準的網絡體驗要求了。RIA(Rich Internet Application,富因特網應用程序)的出現就是為了解決這個問題,RIA無需刷新全頁,不增加帶寬,而可以迅速響應用戶的輸入并做出相應的處理。

Flex技術是目前最流行、使用最廣泛的RIA開發技術之一。2004年Macromedia推出被收購前的最為經典的版本Flash MX 2004,在這個版本中ActionScript升級為2.0版本,同時第一次引入了Flex的概念,即Flex 1.0。2005年12月Adobe收購Macromedia公司,由此帶了的巨大變革,Adobe將其打造為新一代的RIA。在2006年7月了Flex 2.0,2008年2月Flex 3.0。Flex將基于標準的語言和各種可擴展用戶界面及數據訪問組件結合起來,使開發人員能夠快速構建具有豐富數據演示、強大客戶端邏輯和集成多媒體的應用程序。使用Flex構建的應用程序能夠在所有常見桌面平臺上運行,支持對應用程序外觀進行完全自定義,并支持各種連接到后端數據和服務的方法。

1 Flex技術

Flex 是一個高效、免費的開放源框架,可用于構建具有表現力的Web應用程序,這些應用程序利用Adobe Flash Player和Adobe AIR, 運行時跨瀏覽器、桌面和操作系統實現一致的部署。使用 Flex 創建的 RIA 可運行于使用 Adobe Flash Player 軟件的瀏覽器中,它們可以跨所有主要瀏覽器、在桌面上實現一致的運行。連接到 Internet 的計算機中超過 98% 裝有 Flash Player,這是一個企業級客戶端運行時,它的高級矢量圖形能處理要求最高、數據密集型應用程序,同時達到桌面應用程序的執行速度。通過利用 AIR,Flex 應用程序可以訪問本地數據和系統資源。

Macromedia Flash是強大的矢量動畫編輯工具,在做動畫起家之后,Flash一直在謀求RIA(rich internet application)富客戶端的霸主地位,最有影響的是,已經推出了面向對象的編程腳本ActionScript3.0,并且建立起類似于java swing的類庫和相應component(組件)。Flex是通過java或者.net等非Flash途徑,解釋.mxml文件組織components,并生成相應的.swf文件。Flex的component和flash的component很相似,但是有所改進增強。目前Macromedia公司已經被ADOBE公司收購。當前(2010年12月)的flex版本為4.1。

1.1 Flex框架結構

Flex框架結構如圖1所示。Flex編譯器Flex Builder x.0將MXML、ActionScript以及一些Flex類庫編譯成SWF文件,然后在客戶端由FlashPlayer執行該SWF文件,實現對應用的訪問。

1.2 Flex技術元素

Flex是一套Adobe的RIA技術的集合,Flex應用在多層架構中做為表示層。Flex包括:Flex SDK、Flex Builder、Flash Player、LiveCycle Data Service、ActionScript、MXML。

1)MXML。MXML是宣告式的、基于XML描述應用程序界面的語言,用來表達UI布局和相關動作;

2)ActionScript。符合ECMA(歐洲計算機制造商協會)標準的腳本語言,負責處理業務邏輯和業務建模;

3)Flex SDK。就如同Java的JDK一樣,為開發人員提供了一個免費的開發套件,同時這也是一套開源項目;

4)通信服務。Flex支持Adobe公司自定義的通信協議AMF,它能夠將Flash/Flex對象快速序列化、反序列化,采用二進制壓縮傳輸數據,具有數據安全性高、傳輸快的優點。

1.3 Flex應用開發步驟

首先建立一個包含應用程序源代碼的文本文件(MXML格式文件和actionScript腳本文件),然后通過編譯器編譯成可執行的swf文件,將此文件部署到服務器上。需要數據訪問時,Flex可以輕松地通過 Web 服務、Java 對象訪問或XML 來實現數據交互。具體開發步驟如下:

1)在文本編輯器或集成開發環境中插入MXML標簽;

2)添加一個或多個容器;

3)在容器中添加控件;

4)定義一種數據模型;

5)添加一個Web服務器;

6)為數據輸入添加驗證;

7)為組件添加腳本;

8)將應用程序編譯成SWF文件。

2 Flex的MVC框架

目前,Flex的MVC框架有:Cairngorm、PureMVC、Model-Glue、Guasax和Meta等,每種MVC框架都有各自的優缺點,因此如何選擇框架,對提高團隊的開發效率,使代碼易于維護、擴展和重用就顯得至關重要,可以從可實現性、擴展性和靈活性等方面來選擇框架。

1)Cairngorm開發框架

Cairngorm是最老也最成熟的Flex框架。它現在由Adobe擁有并開源,而且被Adobe的RIA顧問服務團隊大量使用。創造出Cairngorm的AdobeConsulting團隊是把設計模式框架運用到RIA開發的最早的倡導者。Cairngorm中可以看到許多在JEE世界中廣泛使用的MVC相關設計模式,即使它只是一個僅用于RIA用戶界面開發的微型架構框架。

Cairngorm被看作是企業RIA開發框架。它的分層MVC實現有助于開發出具有復雜的業務邏輯的可伸縮的RIA應用。在異步通信、事件驅動、無線程的Flex平臺上,Cairngorm為構建嚴肅的商業應用程序提供了快速而可靠的方法。

2)PureMVC框架

它實際上是一個ActionScript3框架。與Cairngorm不同,它完全不依賴任何Flash、Flex或其他Adobe的AS3類。因此它可用于開發任何基于Flash或者ActionScript3的應用程序。

從PureMVC的名字中就可以看出,它是根據MVC設計模式來實現的,里面包含了三層,即模型、視圖和控制器。這個框架的文檔很全面,它的網站上也有很豐富的信息去幫助開發者上手。

由于PureMVC是純粹用ActionScript實現的,而ActionScript是與JavaScript基于相同標準(ECMAScript)的,強類型的,完全面向對象的語言,因此PureMVC可以很容易移植到其他OO語言。

3)Model-Glue框架

Model-Glue:Flex也是一個簡單的MVCFlex框架。JoeRinehart把他最初創作的Model-GlueforColdFusion移植到了Flex。Model-Glue:Flex受到了好評。它的設計意圖是成為一個比Cairngorm和PureMVC更輕量的框架,因此更便于快速原型和簡單的Flex應用開發。

4)Foundry框架

ServeBoxFoundry(sbasfoundry)是為Flex2應用程序開發而設計的ActionScript3/Java框架。它根據幾個設計模式而設計,還包括了一些工具,用來解決Flex2開發中一再重現的煩人問題:Model-View同步、屏幕瀏覽、訪問控制列表(開發中)、本地化以及標簽文字外部化等等。

Foundry是為中大型規模的企業RIA系統開發而設計和實現的。它包含了Java公用模塊,用來將FoundryFlex插件與服務器端的進程緊密集成。

3 結束語

Flex作為一項新技術,不僅輕松解決了所有表現層的技術問題,讓客戶感受前所未有的WEB 應用體驗,更主要的是,基與 FLASH AS3.0 的純面向對象和組件的構架,讓 B/S 結構表現層的開發層次分明,結構完整協調.在提供強大華麗表現的同時,大大節約維護成本。同時,隨著FlexSDK的不斷更新和完善以及Flex輕便的開發模式和良好的服務端兼容性,都將對今后Web應用的設計產生本質的影響,有利于推動未來Flex的發展。

參考文獻:

[1] 呂輝.Flex 從入門到實踐[M].劉暉,歐陽,楊建英,譯.北京:清華大學出版社,2009.

[2] 黃曦.Flex 4.0 RIA 開發詳解[M].北京:電子工業出版社,2010.

[3] /go/flex2_gettingstarted.pdf,2006,12.

[4] 郭立.基于Flex的企業級WEB應用開發的研究與實踐[J].電信交換,2009(4).

[5] 呂曉鵬.精通Flex3.0-基于ActionScript3.0實現[M].北京:人民郵電出版社,2008.

相關文章
主站蜘蛛池模板: 红安县| 商洛市| 大同市| 花莲市| 即墨市| 德庆县| 嘉义县| 秦皇岛市| 桐梓县| 广灵县| 临潭县| 吉木乃县| 平顺县| 庆城县| 崇州市| 彭山县| 浮山县| 沙田区| 枝江市| 兴隆县| 保亭| 宜川县| 资兴市| 胶州市| 海淀区| 读书| 海城市| 化德县| 古田县| 米泉市| 河津市| 通渭县| 台州市| 靖远县| 揭阳市| 巴彦淖尔市| 台山市| 武功县| 肥东县| 札达县| 大同市|