一,首先是一個MVC框架。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供夏津企業(yè)網(wǎng)站建設,專注與成都做網(wǎng)站、成都網(wǎng)站建設、H5建站、小程序制作等業(yè)務。10年已為夏津眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設公司優(yōu)惠進行中。在web模型中,MVC是一種很流行的框架,通過把Model,View,Controller分離,把較為復雜的web應用分成邏輯清晰的幾部分,是為了簡化開發(fā),減少出錯。還是為了組內(nèi)開發(fā)人員之間的配合??傊褪且环N分層工作的辦法。
二,springMVC,是spring的一個子框架,當然擁有spring的特性,如依賴注入。
三,springMVC的信息流是什么樣的?
首先用戶通過HTTP請求到服務器,服務器會根據(jù)你的url來將請求轉到不同的控制器Controller。這是第一步,具體需要做的是在web.xml中設置URLpattern映射到spring的DispatcherServlet,這是控制器是負責第一道處理,用來轉發(fā)請求的,它會將請求轉發(fā)到合適的Controller上。那么問題來了,它是根據(jù)什么轉發(fā)呢?這個問題有些混亂,原因是springMVC一直在升級,不斷貢獻新的url到Controller的映射方法。但是萬變不離其宗,不管如何變,它的目的都不變,就是設法建立url到Controller的映射,找到這個目的之后,看起來就容易一些。具體來看,
方法1,在springmvc的配置文件中,直接將bean的name寫成一個url,如
<bean name=”/product_input” class="com.ap.ProductInputController" />
通過這句配置,就直接將/product_input這url的請求轉發(fā)到了ProductInputController這個類上。
注:但是這個方法被認為是老套的方法,現(xiàn)在已經(jīng)不流行了。了解就可以,現(xiàn)在推薦的是注解的方式,即方法2的方式。
方法2,這種方式,在給Controller命名時,就可以無所謂了, 它的映射不是依賴這個名字,所以可以像下面這種方式來寫這個bean的配置,可以隨便起一個,如
<bean name=”product” class="com".ap.ProductInputController />
到這里,顯然還是沒有實現(xiàn)url到Controller的映射,因為url都還沒看見呢,
現(xiàn)在的springMVC有一個注解是RequestMapping,專門負責映射url的,比方說需要映射到ProductInputController的 addProduct()這個方法,只需要在這個方法上加上一個注解,如
@RequestMapping(name=”product_input”)
addProduct()
通過這個注解,就可以將product_input這個url映射到addProduct這個方法了。是不是很簡單。其實做的事情都一樣,只不過是換了一種寫法和位置。
感覺好神奇的樣子,我一開始也有這種感覺,直到我了解了原始Servlet是如何將url和處理業(yè)務的類聯(lián)系起來的,才發(fā)現(xiàn)這個過程也沒有那么神秘,這里推薦一本書《SpringMVC學習指南》 Paul Deck著,適合0基礎的人看,例子很詳細。
我大概說一下url到Controller是怎么回事:
起點是,用戶通過HTTP請求了服務器,那么一定就有URL,比方說是http://www.dudu.com/getName,其中getName就是我的url,假設你的servlet是部署在tomcat中的,在web.xml這個配置文件中,應該有url到某個類的關系,或者通過別的注解的方法 如@Webservlet(name= “xxController”, urlPatterns = {“product_input”}), 這里意思就是這個url進來后,把請求交給xxController這個class去處理,這個類繼承了HttpServlet, 并且重寫的doGet方法,你的請求就會來到這個方法里,然后,在方法內(nèi)調(diào)用request.getRequestURI這個方法,拿到了你的url=getName,之后就是字符串匹配equals,調(diào)用后面具體的類。
我們使用框架的原因,就是在開發(fā)中,這樣的步驟都是重復的,而且每次都一樣,所以寫框架的人,就把這樣套路式的代碼封裝了, 細節(jié)都交給他來處理,我們只要做兩件和自己業(yè)務相關的事,一個是確定url,二是,這個url指向那個類。寫到這里基本把url到Controller這件事說完了。這里有兩個類一個是DispatcherServlet,這個是SpringMVC框架自帶的,一個就是你自己處理業(yè)務的類,比如是ProductController??刂破鞯拿枷矚g叫XXXController。下面畫一張圖說明這一步
四,MVC,先說的居然是C,Controller,下面說View,就是視圖,展示。用戶的瀏覽器,看到的都是比較美觀的網(wǎng)頁,這就是HTML,它負責來將苦澀的數(shù)據(jù),展現(xiàn)成各種樣式,讓普通用戶看起來也不錯,而不是一堆JSON數(shù)據(jù)。用戶的請求進來之后,肯定還是要返回給用戶頁面的,這每個頁面就是一個VIEW,view就像一個網(wǎng)頁的框架,某個頁面的框架是固定的,不同的是其中的數(shù)據(jù)。比方說購物車頁面,就是一個框架。那你的購物車和我的大體看起來是一樣的,但其中的具體內(nèi)容不同,因為買的商品不同,而這具體的東西,或叫做數(shù)據(jù),就是Model?,F(xiàn)在M和V就有了。
下面再串一個這個流程,剛才說到請求已經(jīng)到了Controller,這個類的作用就是1,選擇適當?shù)膙iew返回給用戶,2,組織數(shù)據(jù),即生成Model。網(wǎng)絡傳輸和信息技術主要處理的就是數(shù)據(jù),而現(xiàn)在數(shù)據(jù)就放在Model中,或者把放數(shù)據(jù)的地方叫做Model,比如用戶在請求查詢用戶信息,那么Controller做的就是,在數(shù)據(jù)庫中找到這些信息,然后把信息添加到Model中,然后把Model和對應的View一起返回給DispatcherServlet。 這里繼續(xù)補充上一張圖:
五,現(xiàn)在DispatcherServlet已經(jīng)拿到Model里的數(shù)據(jù)和該用哪個View來展示給用戶了。
所以會將Model和View融合,具體就是用Model的數(shù)據(jù)把View的變量都換成具體的值,然后view就變成一個HTML的頁面了,最后把這個HTML返回給用戶,用戶那邊用瀏覽器來解釋HTML,看到就是正常的網(wǎng)頁。 全過程結束。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享題目:SpringMVC是什么?-創(chuàng)新互聯(lián)
當前鏈接:http://www.rwnh.cn/article4/ccgdoe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供電子商務、品牌網(wǎng)站建設、ChatGPT、網(wǎng)站改版、定制網(wǎng)站、響應式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容