天天看點

MVC

為何需要mvc?

  最早期的javaweb開發:servlet==java+"html",問題:在servlet中拼接字元串太麻煩

  後來出現jsp:==html+java在html中嵌套java代碼, 問題:頁面和邏輯太過于混雜

  最終導緻:mvc的誕生!

  mvc是一種架構型的模式,本身不引入新的功能,就是指導我們把web應用結構做好

  特點:與功能無關

  目标:實作邏輯與頁面相分離

mvc模式:model、view、control 即:模型、視圖、控制器

  1:模型:包含應用程式的    業務邏輯    和    業務資料

  2:視圖:包含應用程式的輸出形式,即:頁面或界面

  3:控制器:負責協調模型和視圖;

        根據使用者請求來選擇要調用哪個模型來處理業務

        以及最終哪個視圖為使用者做出應答!

  

  mvc中的模型和視圖是分離的、解耦的,同一個模型可以對應多種不同的視圖

  具體功能:

  model:

  封裝應用狀态                    --------->資料封裝

  響應狀态查詢                    ---------->擷取資料

  暴露應用的功能                  ----------->邏輯層api

  view:

  提供html form用于使用者請求 ------->人機互動

  請求模型的更新                   ------->觸發事件

  産生html響應                    ------->展示資料

  controller:

  接收并驗證http請求的資料    -------->收集資料并封裝資料

  将使用者資料與模型的更新相映射-------->調用邏輯層api

  選擇用于響應的視圖     --------->根據傳回值選擇下一個頁面

 純jsp應用

      無mvc的時候,系統結構圖如下:

MVC

   這種結構不太好,在jsp頁面寫的代碼太多,尤其是控制代碼,業務和邏輯

  太過混雜,是以需要引入一個中間層----控制器來專門處理控制代碼

  标準的mvc組建關系圖如下:

MVC
MVC

桌面級開發實作标準的mvc:

  應用觀察者模式,可以實作标準的mvc

  示例demo:有空再說!

web企業級開發無法實作标準的mvc:

  原因:标準的mvc中,view在用戶端,model在伺服器;

     那就是:當伺服器這邊資料更新了,它通知用戶端那邊跑着的html自動重新整理

     這是不可能的!

     html在不重新裝載頁面的情況下,是不可能重新整理的!

web實作改進型mvc:

  在實際開發web應用的時候,大多數情況是不會按照标準mvc做的,事實上也很難做到

  通常我們都會把邏輯部分移動到邏輯層,model隻用來封裝資料,即vo;view一般不直

  接和邏輯層互動。

  邏輯層的互動都由控制器做,view隻和控制器互動!如圖:

MVC

    更狠一點的!如圖:

MVC

  基本實作方式:

    view:jsp

    controller:servlet

    model:javabean

   從控制器如何傳遞值到jsp實作?

  如果把jsp頁面看作servlet,那麼就是從一個servlet向另一個servlet傳遞參數

  方法:request(線程安全)、session(非線程安全,但很少并發,除非惡心操作)、servletcontext(非線程安全)

  對象:  同一個request請求          同一個用戶端(不區分servlet)                            所有servlet(不區分用戶端,不區分servlet)                    

  注意:

       建議首選request。但是該方式下,如果跳轉頁面,由于是同一個request

   是以,跳轉方式隻能用

         this.request.getrequestdispather("/your servlet url").forward(request,response);

   另一個方式:respose.sendredirect("/your servlet url");

歡迎關注微信公衆号:大資料從業者

繼續閱讀