亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于MVC設計模式的Struts框架研究

        2015-01-02 02:42:44陳星王寧吳特楊東
        科技視界 2015年1期
        關鍵詞:監(jiān)聽視圖框架

        陳星王寧吳特楊東

        (中國礦業(yè)大學〈北京〉機電與信息工程學院,中國 北京 100083)

        0 引言

        MVC模式最早由Trygve Reenskaug在1978年提出,是施樂帕羅奧多研究中心(Xerox PARC)在20世紀80年代為程序語言Smalltalk發(fā)明的一種軟件設計模式。并且由于其鮮明特點,廣泛受到程序開發(fā)人員的青睞。使用MVC模式的目的是實現一種動態(tài)的程式設計,使之簡化對后續(xù)程序的修改和擴展,并且可以重復利用程序的某一部分。而基于MVC模式的Struts框架,可以將問題進行劃分,成為一個個的小模塊,這樣使得問題更容易得到解決,系統結構更加清晰,另外當問題發(fā)生變化或者當技術有所改變時,我們可以進行代碼重用,這能夠極大的提高開發(fā)人員的開發(fā)效率。所以基于MVC模式的Struts框架非常適合開發(fā)大型的復雜系統。本文詳細介紹了MVC模式的基本思想,以及Struts框架的體系結構。

        1 MVC模式概述

        1.1 MVC架構

        MVC英文即Model-View-Controller,即把一個應用的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成三個層——模型層、視圖層、控制層。模型(Model):就是業(yè)務流程/狀態(tài)的處理以及業(yè)務規(guī)則的制定。視圖(View)代表用戶交互界面,對于Web應用來說,可以概括為HTML界面,但有可能為XHTML、XML和Applet。隨著應用的復雜性和規(guī)模性,界面的處理也變得具有挑戰(zhàn)性??刂?Controller)可以理解為從用戶接收請求,將模型與視圖匹配在一起,完成用戶的請求。這實際上是一種模型的變化-傳播機制。模型、視圖、控制器三者之間的關系和各自的主要功能,如圖1所示。

        圖1 MVC模型

        1.2 MVC模式的優(yōu)勢與不足

        MVC能夠被眾多的web應用系統作為主流框架,主要原因在于它具有巨大而眾多的優(yōu)勢,這主要體現在下面幾個方面。

        (1)MVC可以讓一個正在運行著的模型,同時建立和使用多個視圖,并且,MVC中具有一種特殊的機制,那就是內置數據監(jiān)聽機制,依靠觀察者模式,這種機制可以監(jiān)聽模型層數據的更新,并且能夠同步將視圖層的數據進行更新,以此來實現同步響應。

        (2)在視圖和控制器之間,是相互透明和獨立的。這種特點,可以讓開發(fā)人員根據需要來動態(tài)的定制控制器和視圖之間的關聯關系,以此開發(fā)相對復雜的應用系統。同樣因為視圖和模型之間是相互獨立、分別存在的,所以如果在做跨平臺的系統移植時,把一個模型單獨移植到新的平臺進行工作就會相對比較簡單。我們僅僅需要在新的平臺上將視圖重新設計,并且重新運行控制器。

        (3)由于MVC是一種思想,是一種潛在框架結構,因此我們可以在此模型的基礎上建立客制化的應用框架,以此來滿足客戶的個性化需求。

        雖然MVC具有很多的優(yōu)點,但是也有一些不足的地方,例如,使得系統結構更加復雜,從而增加了實現的難度。此外,MVC適用于相對規(guī)模比較大的系統,如果系統實現的功能結構相對比較簡單,那么如果嚴格遵循MVC模式,反而會使得系統結構復雜度增加,并且還有可能由于進行跟多的更新操作,導致系統運行效率降低。另外,視圖與控制器之間的耦合性過強。雖然在理論上,視圖與控制器之間是相互分離的,但是在實際的應用中,視圖和控制器之間的耦合性還是比較強的。如果視圖中沒有控制器的話,那么他的應用將會非常有限,反之亦然。這種強耦合阻礙了組件的獨立復用。還有,視圖通過模型界面訪問數據的效率很低,這是由于在模型層中提供的接口是不相同的,因此視圖為了獲得足夠多的顯示數據,往往需要進行多次調用,這種方式訪問數據的效率比較低,并且對系統操作性能也有一定的影響。

        綜上所述,通過對MVC模式的分析,可以看出MVC模式的作用是很明顯的,并且在大的系統結構中作用會更加明顯。

        2 MVC模式基本實現方法

        實現MVC模式的方法不止一種,例如使用Struts或jsf等MVC模式的框架,本身就是一個實現。下面主要來介紹一種簡單的基本實現方法。

        2.1 Model的實現

        在Model的實現過程中,最關鍵的地方在于定義一個具有存儲多個數據更新的用的監(jiān)聽對象向量。并且根據這個向量可以編寫出下面的兩個函數,以此來分別實現添加數據業(yè)務時監(jiān)聽對象的添加和發(fā)生更新時能及時把消息發(fā)送給所有的監(jiān)聽對象:

        //當注冊模型發(fā)生修改時需通知的對象

        //將變化通知隊列中的每個視圖

        2.2 View的實現

        在視圖的實現過程中,關鍵的地方有三點。第一點是我們在進行視圖構造函數時,需要將視圖注冊到指定的模型對象中去(model addChangeListener(view));第二點需要做的就是定義一個能夠存放和它所關聯的控制器對象的向量,并且我們需要根據這個向量的對象,定義增加動作監(jiān)聽者的注冊方法 (public void addUserGestureListener(Controllerb));最后,我們還得需要為視圖編寫一個能夠依靠傳入對象的類型來顯示不同的界面的方法。通過上面所說的三個關鍵點,視圖就能夠實現接收模型更新的通知、發(fā)送動作到控制器,并且能夠接受控制器對顯示界面的控制。

        2.3 Controller的實現

        相對于模型的實現和視圖的實現,控制器的實現要簡單很多。因為對于控制器來說,只需定義一個模型對象和視圖對象就能能實現。模型對象是為了方便在函數中進行調用其業(yè)務的行為,視圖對象是為了方便于將控制器的動作注冊到視圖中去,使他們可以成為該視圖的動作接收者。

        3 基于MVC模式的Struts框架

        所謂的基于MVC模式的STRUTS框架,實際上就是把JavaServlet、JSP、 自 定 義 標 簽 (TagLib)、JavaBeans、XML和 信 息 資 源(Resource Bundles)整合到一個統一的框架中,由此組成了一個可復用的MVC設計。Struts框架本身帶有自己的控制器,同時還整合了其它的一些能夠實現模型層和視圖層的技術,而且,Struts框架提供了許多可供擴展和定制的地方。同時,Struts提供自定義標記庫,通過這些自定義標記可以順利完成和系統的Model部分交互,通過使用這些自定義標記創(chuàng)建的JSP表單,可以實現和Model部分中的ActionForm的映射,以此來完成對用戶數據的封裝。圖2顯示了Struts的工作流程。

        圖2 struts的工作流程圖

        (1)Struts框架總控制器(ActionServlet),作用是用來完成所有初始化工作。當啟動總控制器之后,首先會讀取Struts-config.xml的配置信息,目的是為相應的對象進行不同的Struts模塊初始化。當在Web容器啟動時,初始化動作也會自動完成,總控制器完成初始化動作后,將通過URL匹配映射截獲所有以.do結尾的URL請求。

        (2)用戶向Web應用程序器提交一個請求的方法有兩種,一種是提交表單,另一種是調用URL,而用戶請求的數據會通過HTTP協議上傳給Web服務器。

        (3)控制器接收HTTP請求,然后控制器首先會通過ActionConfig找出對應該請求的Action子類,如果沒有找到對應的Action,控制器直接會把請求轉發(fā)給JSP或者靜態(tài)頁面。如果有對應的Action,并且這個Action有一個相應的ActionForm,ActionForm首先會被控制器實例化,然后會使用HTTP請求的數據來填充其屬性,然后保存在ServletContext中,這樣就可以被其它Action對象或者JSP調用。

        (4)控制器根據配置信息將請求切換到具體的ActionFormBean也一并傳給這個Action的execute()方法。

        (5)Action一般其中只包含一個execute()方法,它的作用是負責執(zhí)行相應的業(yè)務邏輯,然后會返回一個ActionForward對象,控制器會通過這個ActionForward對象來進行轉發(fā)工作。

        (6)根據業(yè)務處理時產生的不同結果,Action會返回一個目標相應對象給總控制而這個目標相應對象對應的是一個具體的JSP頁面或者另外一個Action。

        (7)總控制器根據業(yè)務功能Action返回的目標響應對象,將HTTP請求轉換到這個目標響應對象中,通常來說,它是一個具體的JSP頁面。

        (8)目標響應對象(JSP)將結果頁面展現給用戶。

        4 結論

        綜上所述,MVC模式已經被廣泛的應用于軟件開發(fā)之中,它可以通過對復雜度的簡化,使程序結構更加直觀。軟件系統通過對自身基本部分分離的同時也賦予了各個基本部分應有的功能。而使用基于MVC模式的Struts框架極大的提高了控制層的靈活性,增加了代碼的可重用性。并且由基于MVC模式的Struts框架構建的復雜系統可以分離數據訪問和數據表現,讓開發(fā)人員可以開發(fā)一個可伸縮性強、便于擴展的控制器,來維護整個流程。因此在結構復雜的系統中基于MVC模式的Struts框架有著很大的優(yōu)勢和發(fā)展前景。

        [1][美]Ivor Horton.Java 2 入門經典 JDK5[M].潘曉雷,于浚泊,王丹,等,譯.北京:機械工業(yè)出版社,2005:1-1058.

        [2]賴英旭,劉增輝,李毛毛.MVC模式在B/S系統開發(fā)中的應用研究[J].微計算機信息,2006,22(10-3):62-64.

        [3]孫衛(wèi)琴.精通 Struts:基于 MVC 的 Java Web設計與開發(fā)[M].北京:電子工業(yè)出版社,2004,8:7-35.

        [4]菜劍,景楠.Java Web 應用開發(fā):J2EE 和 Tomcat[M].2 版.北京:清華大學出版社,2005,1:35-250.

        [5]孫衛(wèi)琴,李洪成.Tomcat與 Java.Web開發(fā)技術詳解[M].北京:電子工業(yè)出版社,2004,4:29-134.

        [6]殷兆麟,張永平,姜淑娟.Java 網絡高級編程[M].北京:清華大學出版社,北京交通大學出版社,2005,5:94-235.

        [7][美]Marco Pistoia,Nataraj Nagaratnam,等.企業(yè)級 Java 安全性:構建安全的J2EE應用[M].尹亞,明喻衛(wèi),嚴進寶,譯.北京:清華大學出版社,2005,3:72-109.

        猜你喜歡
        監(jiān)聽視圖框架
        框架
        千元監(jiān)聽風格Hi-Fi箱新選擇 Summer audio A-401
        廣義框架的不相交性
        5.3 視圖與投影
        視圖
        Y—20重型運輸機多視圖
        現代兵器(2017年4期)2017-06-02 15:59:24
        SA2型76毫米車載高炮多視圖
        現代兵器(2017年4期)2017-06-02 15:58:14
        網絡監(jiān)聽的防范措施
        電子制作(2017年20期)2017-04-26 06:58:02
        WTO框架下
        法大研究生(2017年1期)2017-04-10 08:55:06
        應召反潛時無人機監(jiān)聽航路的規(guī)劃
        麻豆69视频在线观看| 国产午夜视频免费观看| 日韩在线手机专区av| 按摩师玩弄少妇到高潮av| 无遮挡18禁啪啪羞羞漫画| 波多野吉衣av无码| 亚洲熟妇av日韩熟妇av| 久久伊人精品中文字幕有| 在教室伦流澡到高潮hgl动漫| 人妻被黑人粗大的猛烈进出 | 国产精品伦一区二区三级视频| 欧洲午夜视频| 色婷婷精品国产一区二区三区| 亚洲精品1区2区在线观看| av人摸人人人澡人人超碰妓女| 欧美日韩亚洲成色二本道三区| 亚洲一区二区三区ay| 亚洲国产果冻传媒av在线观看 | 一本大道综合久久丝袜精品 | 久久AⅤ无码精品为人妻系列 | 亚洲中文无码av永久| 久青草久青草视频在线观看| 国产一区二区丰满熟女人妻| 国产又黄又湿又爽的免费视频| 成人免费无码大片a毛片抽搐色欲| 又爆又大又粗又硬又黄的a片| AV无码专区亚洲AVL在线观看 | 蜜臀av一区二区三区久久| 亚洲日产一线二线三线精华液 | 日韩精品一区二区三区毛片| 白白色视频这里只有精品| 欧美变态另类刺激| 最新国产一区二区精品久久| 最新国产主播一区二区| 图片小说视频一区二区| 亚洲精品无码mv在线观看| 免费人人av看| 国产精品女同一区二区免费站 | 青青青国产精品一区二区| 91久久精品国产性色tv| 91精品国产92久久久|