1. 使用者傳送請求至前端控制器dispatcherservlet。
2. dispatcherservlet
3. 處理器對映器根據請求url找到具體的處理器,生成處理器物件及處理器***(如果有則生成)一併返回給dispatcherservlet。
4. dispatcherservlet
通過handleradapter處理器介面卡呼叫處理器。
5. 執行處理器(controller,也叫後端控制器)。
6. controller
執行完成返回modelandview。
7. handleradapter
將controller執行結果modelandview返回給dispatcherservlet。
8. dispatcherservlet
將modelandview傳給viewreslover視**析器。
9. viewreslover
解析後返回具體view。
10. dispatcherservlet
對view進行渲染檢視(即將模型資料填充至檢視中)。
11. dispatcherservlet
響應使用者。
上面大致上對springmvc框架結構做了乙個粗略的解釋,下面我則會做乙個更加細緻入微的講解。
1. 瀏覽器傳送請求,請求具體發到誰呢?先發到
前端控制器
,也就是說所有的請求都給發到前端控制器,前端控制器是所有請求的入口,但前端控制器不能處理業務請求,它只是乙個請求的**。
3. 處理器對映器會根據你請求的url來找對應的處理器,找不到就會報錯,如果找到之後,這時,它就會返回乙個處理器執行鏈,這個處理器執行鏈裡面除了有handler之外,還有***(這兒我們可以開發自己的***),然後返回給前端控制器。
4. 前端控制器依然不能處理這個業務請求,它這時做的還有另外一件事情,因為返回handler,它也不知道這個handler是什麼型別,因為在spring mvc中handler除了可以是註解形式的之外,其實還可以是非註解形式的(非註解形式我們一般不用),前端控制器並不知道這個handler到底是什麼型別的,那就沒辦法執行它,那總得找個東西執行,這時它就會把這個事交給另外乙個元件來處理,這個元件就叫處理器介面卡
,這個處理器介面卡就是來適配不同型別的handler。它就會根據你不同型別的handler來選擇不同型別的介面卡來執行它。
5. 假如當前handler是註解形式的,那麼它就會選擇註解形式的處理器介面卡來執行這個handler。handler就執行了,也就是說我們controller類中的那個方法就執行了,方法執行之後,裡面的業務就處理了。
6. 業務處理之後,最後返回乙個modelandview。處理器介面卡拿到這個結果是沒有用的,它的作用就是執行這個handler,把這個handler執行完之後,它的事就做完了。
7. 做完之後,拿到這個返回結果,那麼它會原封不動地把這個返回結果扔給前端控制器,這時處理器介面卡的事就做完了。
8. 前端控制器拿到這個modelandview,它還是沒有辦法處理,它還是不能返回html,這時它要找到相應的jsp,因為modelandview即包含模型又包含檢視,這個檢視指定我們要用誰來渲染這個資料。我們要渲染資料,這時它就要找乙個
視**析器
來解析這個檢視,由於這個檢視也有很多種(我們最常見的檢視是jsp,除了jsp,其實還有其他的,比如說還可以是報表,還可以是pdf,還可以是freemaker等),它會找不同的視**析器來處理。因為現在我們最常用的檢視是jsp,所以它就找到jsp對應的視**析器。
9. 找到這個視**析器,它來把這個視**析,解析完了之後它會返回乙個view物件。
10. 最後我們再呼叫這個視**析器的渲染檢視這個過程,渲染檢視這個過程其實就是對於我們的jsp來說,就是把這個資料渲染成html。
11. 最終渲染成html之後,就響應給使用者。
spring mvc 中 請求處理過程
spring mvc 中 請求處理過程 url初始化過程 override public void dowith method method throws illegalargumentexception,illegalacces ception reflectionutils.user decla...
spring mvc執行過程
spring mvc屬於springframework的後續產品,已經融合在spring web flow裡面。spring 框架提供了構建 web 應用程式的全功能 mvc 模組。使用 spring 可插入的 mvc 架構,從而在使用spring進行web開發時,可以選擇使用spring的spri...
Spring MVC請求過程
1.請求到達前端控制器dispatherservlet 2.dispatherservlet根據url查詢 處理器對映 確定下一站 3.dispatherservlet將請求傳送給選中的控制器 4.控制器完成處理邏輯後,將請求連同模型和檢視名傳送回dispatherservlet 5.dispath...