web架構和MVC架構


聲明:本欄目所使用的素材都是凱哥學堂VIP學員所寫,學員有權匿名,對文章有最終解釋權;凱哥學堂旨在促進VIP學員互相學習的基礎上公開筆記。

關於B/S和C/S:

管理軟件使用B/S架構,而游戲因為要基於顯卡實現絢麗的效果所以使用C/S架構。因為B/S架構便於程序的維護、升級和修改,所以今后B/S還有很大的發展空間。但注意並不是說有瀏覽器的就一定是B/S架構,比如網頁上的小游戲其實是C/S架構,只不過它是邊玩邊下載,B/S架構和C/S架構最本質的區別在於B/S是一種輕客戶端重服務器的架構,它把所有的邏輯,頁面素材都放在服務器上,瀏覽器上的所有東西都是從服務器上下載下來的,所以說,並不是有瀏覽器的就是B/S架構,應該說滿足輕客戶端重服務器的這種模式的就是B/S架構,再比如微信小程序雖然沒有瀏覽器,但它是一個B/S架構。

Web架構:

Web架構可以理解為有三種,一種是只有JSP頁面,也就是所有的邏輯,業務處理和頁面代碼都在JSP上,在做一些簡單不重要的程序時可以采用這種方式,快捷,但是不利於修改和維護;第二種是有JSP和Servlet,兩者進行分工,JSP負責頁面代碼,Servlet負責邏輯、數據驗證和數據庫操作;第三種有JSP、Servlet和java類,JSP負責頁面代碼,Servlet負責數據驗證,java類負責做邏輯和數據庫方面的操作,這種層次分工最鮮明,便於維護、修改和升級。因為java類不涉及具體的業務,這樣只要是相同或類似的功能都可以復制這段java代碼,這樣可以加快開發的效率。此外,Servlet是需要在web服務器上運行才可以的,如果有一天說不再使用JSP了,那么java類的代碼還可以使用,只需要替換JSP和Servlet部分的代碼即可,但如果是把代碼都寫在JSP或JSP和Servlet上,那么要修改就會很困難,甚至於代碼就是無用的了,又要從零開始開發。比如我們用JSP、Servlet和java做好了程序,如果此時要求與微信小程序對接,因為微信小程序不需要頁面,只需要返回給它一個JSON數據即可,這時我們的JSP和Servlet就不可用了,但是java類還可以保留,我們只需要重寫Servlet里面的數據返回JSON數據即可。

MVC架構:

介紹:M指的是模型,V指的是視圖,C指的是控制器,注意MVC架構不是三層架構,如果非要分類的話,它頂多算三層架構里面的一層。MVC架構不是B/S架構里面才能用,它最早出現於C/S架構中,MVC架構只是一種解決代碼的架構,誰都可以用它,無論是java還是C#,無論是B/S架構還是C/S架構……當然以后做開發我們不可能自己寫這個框架,有專門的框架來實現這個架構,如strusts,springMVC等。

原理:

MVC就是用來解決繁亂的網狀代碼跳轉問題的,如下圖所示,我們如果有很多個頁面間的跳轉,就會像下圖一樣很繁亂:

image

這樣如果有一個頁面有代碼的改動,那么與之聯系的頁面也很有可能需要更改,我們還要一一找出來修改,很麻煩,很不好找,而MVC可以幫我們解決這個問題,如下圖所示,MVC有一個中轉站,所有頁面都先連接到這個中轉站上,然后要跳到哪個頁面上,直接在中轉站里找就可以了,這樣就方便簡潔了很多這里的中轉站就是上面所說的控制器。

image

  1. MVC中的兩種模型:

3.1 model 1:視圖(V) >>> 控制器(C) >>> 模型(M) >>> 視圖(V)

如下圖所示:

image

視圖發送請求到控制器,控制器找到模型,模型響應相關頁面到視圖。如一個登錄頁面,先發送請求到控制器,這個控制器可以是Servlet做的,也可以是過濾器做的,只要能接收到請求即可,控制器找到相應的模型,也就是java類,當然在這個過程中java類可能會執行連接數據庫等一系列操作,然后java類運行完以后返回成功或失敗相應對應的頁面到視圖上。

3.2 model 2: 視圖(V) >>> 控制器(C) >>> 模型(M) >>> 控制器(C) >>> 視圖(V)

如下圖所示:

image

視圖發送請求到控制器,控制器找到模型,模型連接到控制器,告訴它運行的結果,控制器再響應相關頁面到視圖。還是以登錄例題為例:

image

視圖發送請求到控制器,控制器找到對應的模型,模型再連接控制器,告訴控制器成功與失敗,控制器就相當於有一個小賬本,上面記錄着登錄請求成功跳轉到哪一個頁面,失敗跳轉到哪一個頁面,然后再根據這個響應相關的頁面到視圖。

4.交互模型二例題:

首先要有一個配置文件,此處以JSON為例,配置的JSON文件內容如下:

image

文件中mvc是數組名,由上圖可知數組中只有一組數據,actionName表示來的如果是login就加載下面的className里面的類,如果返回的是ok字符串,就跳到ok.jsp頁面,如果返回的是error字符串,就跳到login.jsp頁面。

控制器部分的代碼:

image

image

image

配置為*.action是想匯總所有的請求,讓所有的請求都先進入這個控制器,然后根據配置文件跳頁面。首先在初始化方法中加載配置的文件,之所以用service方法是因為控制器會接收所有的請求,這些請求有可能是get請求也有可能是post請求,所以此處為service方法統一接收所有請求。

接口Action的代碼:

image

TestLogin代碼:

image

之所以會申請一個接口Action,是為了在控制器中好加載TestLogin類並接收其返回的字符串,當然也可以不用申請接口的方法,可以用反編譯的方法。

login.jsp的代碼:

image

ok.jsp的代碼:

image

運行結果演示:

image

image

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM