如何理解springmvc
一,首先是乙個mvc框架。
在web模型中,mvc是一種很流行的框架,通過把model,view,controller分離,把較為複雜的web應用分成邏輯清晰的幾部分,是為了簡化開發,減少出錯。還是為了組內開發人員之間的配合。總之就是一種分層工作的辦法。
二,springmvc,是spring的乙個子框架,當然擁有spring的特性,如依賴注入。
三,springmvc的資訊流是什麼樣的?
首先使用者通過http請求到伺服器,伺服器會根據你的url來將請求轉到不同的控制器controller。這是第一步,具體需要做的是在web.xml中設定urlpattern對映到spring的dispatcherservlet,這是控制器是負責第一道處理,用來**請求的,它會將請求**到合適的controller上。那麼問題來了,它是根據什麼**呢?這個問題有些混亂,原因是springmvc一直在公升級,不斷貢獻新的url到controller的對映方法。但是萬變不離其宗,不管如何變,它的目的都不變,就是設法建立url到controller的對映,找到這個目的之後,看起來就容易一些。具體來看,
方法1,在springmvc的配置檔案中,直接將bean的name寫成乙個url,如
通過這句配置,就直接將/product_input這url的請求**到了productinputcontroller這個類上。
方法2,這種方式,在給controller命名時,就可以無所謂了, 它的對映不是依賴這個名字,所以可以像下面這種方式來寫這個bean的配置,可以隨便起乙個,如
到這裡,顯然還是沒有實現url到controller的對映,因為url都還沒看見呢,
addproduct()
通過這個註解,就可以將product_input這個url對映到addproduct這個方法了。是不是很簡單。其實做的事情都一樣,只不過是換了一種寫法和位置。
感覺好神奇的樣子,我一開始也有這種感覺,直到我了解了原始servlet是如何將url和處理業務的類聯絡起來的,才發現這個過程也沒有那麼神秘,我大概說一下url到controller是怎麼回事:起點是,使用者通過http請求了伺服器,那麼一定就有url,比方說是其中getname就是我的url,假設你的servlet是部署在tomcat中的,在web.xml這個配置檔案中,應該有url到某個類的關係,或者通過別的註解的方法 如@webservlet(name= 「xxcontroller」, urlpatterns = ), 這裡意思就是這個url進來後,把請求交給xxcontroller這個class去處理,這個類繼承了httpservlet, 並且重寫的doget方法,你的請求就會來到這個方法裡,然後,在方法內呼叫request.getrequesturi這個方法,拿到了你的url=getname,之後就是字串匹配equals,呼叫後面具體的類。
我們使用框架的原因,就是在開發中,這樣的步驟都是重複的,而且每次都一樣,所以寫框架的人,就把這樣套路式的**封裝了, 細節都交給他來處理,我們只要做兩件和自己業務相關的事,乙個是確定url,二是,這個url指向那個類。寫到這裡基本把url到controller這件事說完了。這裡有兩個類乙個是dispatcherservlet,這個是springmvc框架自帶的,乙個就是你自己處理業務的類,比如是productcontroller。控制器的命名都喜歡叫***controller。下面畫一張圖說明這一步
四,mvc,先說的居然是c,controller,下面說view,就是檢視,展示。使用者的瀏覽器,看到的都是比較美觀的網頁,這就是html,它負責來將苦澀的資料,展現成各種樣式,讓普通使用者看起來也不錯,而不是一堆json資料。使用者的請求進來之後,肯定還是要返回給使用者頁面的,這每個頁面就是乙個view,view就像乙個網頁的框架,某個頁面的框架是固定的,不同的是其中的資料。比方說購物車頁面,就是乙個框架。那你的購物車和我的大體看起來是一樣的,但其中的具體內容不同,因為買的商品不同,而這具體的東西,或叫做資料,就是model。現在m和v就有了。
下面再串乙個這個流程,剛才說到請求已經到了controller,這個類的作用就是1,選擇適當的view返回給使用者,2,組織資料,即生成model。網路傳輸和資訊科技主要處理的就是資料,而現在資料就放在model中,或者把放資料的地方叫做model,比如使用者在請求查詢使用者資訊,那麼controller做的就是,在資料庫中找到這些資訊,然後把資訊新增到model中,然後把model和對應的view一起返回給dispatcherservlet。 這裡繼續補充上一張圖:
五,現在dispatcherservlet已經拿到model裡的資料和該用哪個view來展示給使用者了。
所以會將model和view融合,具體就是用model的資料把view的變數都換成具體的值,然後view就變成乙個html的頁面了,最後把這個html返回給使用者,使用者那邊用瀏覽器來解釋html,看到就是正常的網頁。 全過程結束。
你對SpringMvc是如何理解的?
spring mvc工作原理 springmvc是基於過濾器對servlet進行了封裝的乙個框架,我們使用的時候就是在web.xml檔案中配置dispatcherservlet類 springmvc工作時主要是通過dispatcherservlet管理接收到的請求並進行處理。具體執行流程如下 spr...
你對SpringMvc是如何理解的?
springmvc工作原理 springmvc是基於過濾器對servlet進行了封裝的乙個框架,我們使用的時候就是在web.xml檔案中配置dispatcherservlet類 springmvc工作時主要是通過dispatcherservlet管理接收到的請求並進行處理。具體執行流程如下 spri...
springmvc流程理解
算一算自己看springmvc流程圖的總次數,沒有20次也有10次了,總是看了忘,忘了看,不得其要領,好不痛快!如今就趁著機會把及再理解一遍,再不行我感覺自己可以放棄技術這條路了,不適合自己。我的前老大說過,畫圖比你寫文字強得多。不過我還是覺得,有些適合畫圖理解,有些還是得文字理解更好 比如演算法,...