<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    peace嘮叨

    人生得意須盡歡,莫斯金樽空對月。

    從MVC和三層架構(gòu)說到ssh整合開發(fā)-上

    相信很多人都認(rèn)同JavaWeb開發(fā)是遵從MVC開發(fā)模式的,遵從三層架構(gòu)進(jìn)行開發(fā)的,是的,大家都這么認(rèn)同。但是相信大家都會有過這樣一個(gè)疑問,if(MVC三層模式==三層架構(gòu)思想)out.println(“請繼續(xù)觀看……”)

    1.MVC(Model-View-Controller)設(shè)計(jì)模式:

    首先讓我們了解下MVC(Model-View-Controller)的概念:

         MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯。MVC被獨(dú)特的發(fā)展起來用于映射傳統(tǒng)的輸入、處理和輸出功能在一個(gè)邏輯的圖形化用戶界面的結(jié)構(gòu)中。

    1. Model(模型):數(shù)據(jù)模型,提供要展示的數(shù)據(jù),因此包含數(shù)據(jù)和行為,主要提供了模型數(shù)據(jù)查詢和模型數(shù)據(jù)的狀態(tài)更新等功能,包括數(shù)據(jù)和業(yè)務(wù)。主要使用的技術(shù):數(shù)據(jù)模型:實(shí)體類(JavaBean),數(shù)據(jù)訪問:JDBC,Hibernate等,

    2. View(視圖):負(fù)責(zé)進(jìn)行模型的展示,一般就是我們見到的用戶界面,比如JSP,Html等

    3. Controller(控制器):接收用戶請求,委托給模型進(jìn)行處理(狀態(tài)改變),處理完畢后把返回的模型數(shù)據(jù)返回給視圖,由視圖負(fù)責(zé)展示。主要使用的技術(shù):servlet,Struts中的Action類等。

         MVC是一個(gè)框架模式,它強(qiáng)制性的使應(yīng)用程序的輸入、處理和輸出分開。使用MVC應(yīng)用程序被分成三個(gè)核心部件:模型、視圖、控制器。它們各自處理自己的任務(wù)。最典型的MVC就是JSP + servlet + javabean的模式。

    01

    2.三層架構(gòu)(UI-BLL-DAL)思想介紹:

         三層架構(gòu)(3-tier architecture) 通常意義上的三層架構(gòu)就是將整個(gè)業(yè)務(wù)應(yīng)用劃分為:表現(xiàn)層(User Interface layer)、業(yè)務(wù)邏輯層(Business Logic Layer)、數(shù)據(jù)訪問層(Data access layer)。區(qū)分層次的目的即為了“高內(nèi)聚低耦合”的思想。在軟件體系架構(gòu)設(shè)計(jì)中,分層式結(jié)構(gòu)是最常見,也是最重要的一種結(jié)構(gòu)。微軟推薦的分層式結(jié)構(gòu)一般分為三層,從下至上分別為:數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層(又或稱為領(lǐng)域?qū)樱?、表示層?/p>

    1. 表現(xiàn)層(UI):通俗講就是展現(xiàn)給用戶的界面,用于顯示數(shù)據(jù)和接收用戶輸入的數(shù)據(jù),為用戶提供一種交互式操作的界面。

    2. 業(yè)務(wù)邏輯層(BLL):針對具體問題的操作,也可以說是對數(shù)據(jù)層的操作,對數(shù)據(jù)業(yè)務(wù)邏輯處理。對于數(shù)據(jù)訪問層而言,它是調(diào)用者;對于表示層而言,它卻是被調(diào)用者。也將業(yè)務(wù)邏輯層稱為領(lǐng)域?qū)印?/p>

    3. 數(shù)據(jù)訪問層(DAL):該層所做事務(wù)直接操作數(shù)據(jù)庫,針對數(shù)據(jù)的增、刪、改、查。如果要加入ORM的元素,那么就會包括對象和數(shù)據(jù)表之間的mapping,以及對象實(shí)體的持久化。也稱為是持久層。數(shù)據(jù)訪問層中包含實(shí)體層(Model 實(shí)體層)

    JavaWeb中典型的三層架構(gòu)是:Jsp+Struts/Spring+Hibernate的開發(fā)模式

    3.MVC和三層架構(gòu)的區(qū)別與轉(zhuǎn)化:

    1. MVC與三層架構(gòu)的概念區(qū)別:

    MVC是一種設(shè)計(jì)模式,我們可以用它來創(chuàng)建在域?qū)ο蠛蚒I表示層對象之間的區(qū)分。它是根據(jù)項(xiàng)目的具體需求來決定是否適用于該項(xiàng)目。

    三層架構(gòu)是一個(gè)分層式的軟件體系架構(gòu)設(shè)計(jì),它可適用于任何一個(gè)項(xiàng)目。

         三層架構(gòu)和MVC設(shè)計(jì)模式側(cè)重點(diǎn)不一樣,三層是一種籠統(tǒng)的架構(gòu)思想,沒有限制具體的設(shè)計(jì);而MVC就比較具體的說明它的設(shè)計(jì)方法。我們從接手一個(gè)項(xiàng)目開始,首先,我們需要進(jìn)行架構(gòu)設(shè)計(jì),一般我們采用的就是分層式的架構(gòu)設(shè)計(jì),即我們的三層架構(gòu)。然后,在確定了架構(gòu)以后,我們再根據(jù)項(xiàng)目的具體需求去考慮是否需要應(yīng)用一些設(shè)計(jì)模式,比如是否應(yīng)用我們的MVC模式,抽象工廠模式等等。

         三層側(cè)重的是整體的一個(gè)解耦,而MVC側(cè)重的是web系統(tǒng)的解耦,即側(cè)重jsp和Servlet的一個(gè)解耦。

    1. MVC與三層架構(gòu)的劃分層次區(qū)別:

    三層架構(gòu)將整個(gè)項(xiàng)目劃分為:表現(xiàn)層(UI)、業(yè)務(wù)邏輯層(BLL)、數(shù)據(jù)訪問層(DAL)。

    MVC :即Model(模型),View(視圖),Controller(控制)。

    下圖可以說明他們的區(qū)別與聯(lián)系:通過圖中可以看到不是一一對應(yīng)的關(guān)系:V是UI,C是BLL,M是DAL的觀點(diǎn)是錯(cuò)誤的。

    02

    1. 兩者間的轉(zhuǎn)化:

         在我們項(xiàng)目中選擇了三層架構(gòu)的基礎(chǔ)上在根據(jù)具體需求決定是否需要使用MVC,于是我們常說的MVC中總是伴隨著三層架構(gòu),也就造成了兩者的容易混淆。其實(shí),通過上圖我們可以看到MVC將三成架構(gòu)中的UI分成了控制層和試圖層。將三層架構(gòu)中的數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層整合成了模型層。

    4. 針對三層架構(gòu)的MVC模式開發(fā)講解SSH框架:

    4.1 ssh介紹:

    SSH多個(gè)框架(struts2+spring+hibernate)的集成,是目前較流行的一種企業(yè)及Web應(yīng)用程序開源集成框架。

    1. Struts2:

         Struts2是流行和成熟的基于MVC設(shè)計(jì)模式的Web應(yīng)用程序框架。 Struts2不只是Struts1下一個(gè)版本,它是一個(gè)完全重寫的Struts架構(gòu)。Struts對Model,View和Controller都提供了對應(yīng)的組件。但是在ssh開發(fā)過程中主要用Struts作為三層架構(gòu)中的表現(xiàn)層,也就是MVC中的View和Control層。

    Struts2提供了表單提交參數(shù)封裝成POJO類,提交參數(shù)的類型轉(zhuǎn)換,輸入校驗(yàn),文件的上傳下載,程序的國際化,Struts2標(biāo)簽,以及對AJAX的支持。

    1. Hibernate:

         Hibernate是一個(gè)開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,說的簡單點(diǎn):就是功能更加強(qiáng)大的JDBC。

         Hibernate實(shí)現(xiàn)了對象到數(shù)據(jù)庫端的封裝。就是常說的ORM(Object Relation Mapping),它的出現(xiàn)使得編程更加的面向?qū)ο?,在傳統(tǒng)的編程上,我們要將對象存儲到關(guān)系數(shù)據(jù)庫中,需要寫很多代碼來實(shí)現(xiàn),而且需要考慮跨數(shù)據(jù)庫的平臺的問題。有了Hibernate可以方便的實(shí)現(xiàn)從對象轉(zhuǎn)換到關(guān)系數(shù)據(jù)庫。這就是對象持久化。

    1. Spring:

         主要包含兩個(gè)重要功能:IOC和AOP,也就是常說的依賴注入和面向切面編程。當(dāng)然還有Spring的事務(wù)功能,不過這一功能是在結(jié)合前面兩者的功能實(shí)現(xiàn)的。

         IOC:依賴注入(控制反轉(zhuǎn)),是一種設(shè)計(jì)模式。一層含義是控制權(quán)的轉(zhuǎn)移:由傳統(tǒng)的在程序中控制依賴轉(zhuǎn)移到由容器來控制;第二層是依賴注入:將相互依賴的對象分離,在spring配置文件中描述他們的依賴關(guān)系。他們的依賴關(guān)系只在使用的時(shí)候才建立。簡單來說就是不需要NEW一個(gè)對象了。

         AOP這是一種面向切面的編程思想,這種思想使得編程思想上得到了歷史性的進(jìn)步。它將程序的執(zhí)行過程切割成不同的面,在面之間可以插入我們想執(zhí)行的邏輯。

    4.2 ssh的層次劃分:

    一進(jìn)行javaWeb開發(fā)很多時(shí)候我們按照這樣的層次進(jìn)行劃分:

    1、在表示層中,首先通過JSP頁面實(shí)現(xiàn)交互界面,負(fù)責(zé)傳送請求(Request)和接收響應(yīng)(Response),然后Struts根據(jù)配置文件(struts-config.xml)將ActionServlet接收到的Request委派給相應(yīng)的Action處理,然后action進(jìn)行對請求處理并轉(zhuǎn)發(fā)給JSP頁面。

    2、在業(yè)務(wù)邏輯層中,管理服務(wù)組件的Spring IoC容器負(fù)責(zé)向Struts2提供具體的Action對象,提供業(yè)務(wù)模型(Model)組件和該組件的協(xié)作對象數(shù)據(jù)處理(DAO)組件完成業(yè)務(wù)邏輯,并提供事務(wù)處理、緩沖池等容器組件以提升系統(tǒng)性能和保證數(shù)據(jù)的完整性。

    3、在數(shù)據(jù)訪問層中,則依賴于Hibernate的對象化映射和數(shù)據(jù)庫交互,處理DAO組件請求的數(shù)據(jù),并返回處理結(jié)果,給業(yè)務(wù)邏輯層。

    按照MVC模式時(shí):Jsp對應(yīng)著表現(xiàn)層,struts2對應(yīng)控制層,Spring和Hibernate對應(yīng)模型層。

    分層不是絕對的,每個(gè)人的見解是不一樣的,僅供參考;

    03

    從MVC說道ssh整合開發(fā)上就介紹到這里,下部分主要是對ssh框架的整合,會介紹怎么使用ssh取開發(fā)一個(gè)簡單的web應(yīng)用。

    來自一條小鯊魚wpeace(rlovep.com)

    posted on 2016-03-30 14:40 王和平 閱讀(3177) 評論(2)  編輯  收藏 所屬分類: javaWeb

    Feedback

    # re: 從MVC和三層架構(gòu)說到ssh整合開發(fā)-上 2016-03-31 07:27 Pooch

    不錯(cuò)的文章。

    一直在用mvc的時(shí)候沒有辦法和3層結(jié)構(gòu)聯(lián)想在一起。  回復(fù)  更多評論   

    # re: 從MVC和三層架構(gòu)說到ssh整合開發(fā)-上 2016-04-03 15:29 王和平

    @Pooch
    謝謝  回復(fù)  更多評論   


    My Links

    Blog Stats

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲日韩精品一区二区三区无码| 亚洲看片无码在线视频| 亚洲人成自拍网站在线观看| 国产免费AV片在线观看| 国产在线播放免费| 亚洲日韩乱码中文无码蜜桃臀网站| 亚洲色在线无码国产精品不卡 | 一本色道久久88综合亚洲精品高清 | 99re8这里有精品热视频免费| 亚洲精品国产高清嫩草影院| 精品97国产免费人成视频| 国产专区一va亚洲v天堂| 国产精品内射视频免费| 国产亚洲精品激情都市| 久久久精品免费国产四虎| 亚洲国产精品自在线一区二区| 无码囯产精品一区二区免费| 337p欧洲亚洲大胆艺术| 国内精自视频品线六区免费| 亚洲成av人片不卡无码| 好吊妞998视频免费观看在线| 国产成人高清亚洲一区久久| 亚洲色一色噜一噜噜噜| 99精品免费视品| 日产亚洲一区二区三区| 成年女人毛片免费视频| 四虎精品成人免费视频| 国产成人亚洲精品青草天美| 99视频有精品视频免费观看| 国产又黄又爽胸又大免费视频| 久久精品国产亚洲AV麻豆不卡| 亚洲精品视频在线免费| 精品国产日韩亚洲一区| 久久免费美女视频| 亚洲一区二区三区在线网站| 九月婷婷亚洲综合在线| 免费人成在线观看网站品爱网 | 国产精品亚洲综合一区在线观看| 国产亚洲成人久久| 日本片免费观看一区二区| 老司机免费午夜精品视频|