Spring MVC請求處理流程
1. 當DispatcherServlet接到請求時,他先回查詢適當的處理程式來處理請求。DispatcherServlet通過一個或者多個處理程式對映,將每個請求對映到處理程式中。處理程式對映配置在web應用程式的上下文中,是實現了HandlerMapping介面的Bean。它負責為請求返回一個適當的處理程式(也就是Controller)。處理程式對映通常根據請求的URL將請求對映到處理程式(Controller)。
2. 一旦DispatcherServlet選擇了適當的控制器,它就會呼叫這個控制器來處理請求。
3. 控制器處理完請求後,會將模型和檢視名(有時候是檢視物件)返回給DispatcherServlet。模型包含了控制器要傳遞給檢視進行顯示的屬性。如果返回的是檢視名稱,它會被解析成檢視物件再進行呈現。繫結模型和檢視的基本類是ModelAndView
4. 當DispatcherServlet接收到模型和檢視名稱時,它會將邏輯檢視名稱解析成檢視物件再進行呈現。DispatcherServlet從一個或者多個檢視解析器中解析檢視。檢視解析器配置在Web應用程式上下文中,是實現了ViewResolver介面的Bean。它的任務是根據邏輯檢視名稱返回試圖物件。
5. 一旦DispatcherServlet將檢視名稱解析稱為試圖物件,它就會呈現檢視物件,並傳遞控制器返回的模型。檢視的任務是將模型屬性展示給使用者。
DispatcherServlet接到請求後如何對映到Controller呢?
在Spring MVC中,Web請求被Web應用程式上下文中宣告的一個或者多個處理程式對映Bean(是吸納了HandlerMapping介面的Bean)對映到Controller。Spring MVC提供了幾種HandlerMapping實現:
1. BeanNameUrlHandlerMapping(預設情況),他根據Controller Bean名稱中指定的URL模式將請求對映到處理程式上。
eg. <bean name="/welcome.htm" class="com.kevin.controller.WelcomeController">...</bean>
當你訪問http://******/welcome.htm這個URL時,DispatcherServlet通過BeanNameUrlHandlerMapping對映就找到了WelcomeController。
2. ControllerClassNameHandlerMapping,它是按控制器類名稱對映請求。
3. SimpleUrlHandlerMapping,用定製的對映定義來對映請求。
下面我們就來看一下Controller。
Controller介面是Spring MVC中所有控制器類的基本介面。通過實現這個介面,你可以建立自己的控制器。在handleRequest()方法中,可以隨意地處理Web請求。
AbstractController:如果你想讓控制器具備一些基本的特性,如過濾受支援的HTTP方法(GET,POST和HEAD),以及在HTTP響應中生成cache-control頭部等,你可以讓它擴充套件AbstractController類。
ParameterizableViewController:用來建立帶有引數化檢視的控制器。
SimpleFormController:它支援命令物件的概念(commandName),並且可以將表單域的值繫結到命令物件的同名屬性上。
AbstractWizardFormController:為嚮導表單的處理定義了基本的任務。嚮導表單有多個單頁,因此必須為嚮導表單控制器定義多個頁面檢視。然後這個控制器可以跨越所有這些表單頁面來管理表單狀態。嚮導表單會有多個動作,不像SimpleFormController只有單個提交動作。AbstractWizardFormController會根據特殊的請求引數決定使用者的動作,通常是用提交按鈕的名稱來指定動作的。
_finished: 完成嚮導表單。
_cancel: 取消嚮導表單。
_targetx: 進入目標頁面,這裡的x是從0開始的頁面索引。
MultiActionController:允許你將多個相關的動作分組到一個控制器中。
常見的檢視型別:
幾種常見的ViewResolver的解析:
1. InternalResourceViewResolver: 根據URL解析檢視。通過新增字首和字尾的方法,將每個檢視名稱都對映到一個URL上。
2. XmlViewResolver: 從XML配置檔案中解析檢視。將檢視宣告成Spring的Bean,並按他們的Bean Name進行解析。
3. ResourceBundleViewResolver: 從ResourceBundle中解析檢視。
4. 用多個檢視解析器解析檢視, 需要注意的是,您需要為你配置的檢視解析器配置解析的優先順序。<property name="order" value="0"/> value越小,優先順序越高。
相關推薦
Spring MVC請求處理流程及架構
protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { HttpServletRequest processedRequest = request; H
Spring mvc請求處理流程詳解(一)之檢視解析
前言 Spring mvc框架相信很多人都很熟悉了,關於這方面的資料也是一搜一大把。但是感覺講的都不是很細緻,讓很多初學者都雲裡霧裡的。本人也是這樣,之前研究過,但是後面一段時間不用發現又忘記了。所以決定寫下來,以備後用。 本系列文基於spring-
Spring MVC請求處理流程
從web.xml中 servlet的配置開始, 根據servlet攔截的url-parttern,來進行請求轉發 Spring MVC工作流程圖 圖一 圖二 Spring工作流程描述 1. 使用者向伺服器傳送請求,請求被Spring 前端控制Servelt Di
spring mvc請求處理流程/原理
1.spring mvc請所有的請求都提交給DispatcherServlet,它會委託應用系統的其他模組負責負責對請求進行真正的處理工作。2.DispatcherServlet查詢一個或多個Handl
Spring MVC請求處理流程分析
一、簡介 Spring MVC框架在工作中經常用到,配置簡單,使用起來也很方便,很多書籍和部落格都有介紹其處理流程,但是,對於
Spring MVC請求處理具體流程
// 前端控制器分派方法 protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { Htt
ASP.NET的MVC請求處理流程
使用者開啟瀏覽器,在位址列輸入某個網址的URL並回車,瀏覽器便開始像該URL指定的伺服器發起HTTP請求 伺服器的網站服務系統(IIS)接收到該請求,先檢查自己是否認識該類請求,如果認識就直接
spring mvc 請求處理方式...
標題實在不知應該如何定義,略處尷尬。 相信有很多剛接觸Spring mvc的小夥伴跟我一樣都有個小疑問。如何正確根據場景需要來處理請求,舉個栗子吧~~~ 拿login作為栗子,賬號密碼輸入完畢 -》 登陸按鈕 -》 Controller -》賬戶正確 -》 主頁.jsp
Spring mvc 請求處理
轉自:http://www.cnblogs.com/dreamworlds/p/5396112.html 轉自:http://www.jianshu.com/p/baa3a05cd271 轉自:http://blog.csdn.net/binglumeng/
spring-webmvc請求處理流程
請求處理流程 我們先來看哈DispathcerServlet的繼承關係。 springmvc是基於servlet來的,web.x
Spring MVC原始碼(二) ----- DispatcherServlet 請求處理流程 面試必問
前端控制器 前端控制器,即所謂的Front Controller,體現的是設計模式中的前端控制器模式。前端控制器處理所有從使用者過來的請求。所有使用者的請求都要通過前端控制器。SpringMVC框架和其他請求驅動的表示層框架一樣,也是圍繞一個將請求分發到相應控制器的核心Servlet來設計的。Dispatc
Spring MVC請求流程
Spring MVC 發起請求到前端控制器DispathServlet 前端控制器請求處理器對映器 handerMapping查詢handler 處理器對映器handerMapping像前端控制器返回handler 處理器對映器呼叫處理器介面卡,去執行handler han
HTTP請求處理流程 MVC核心(MVC就是擴充套件了一個HttpModule)
訪問Localhost:8080/Home/index.aspx 在呼叫MVC擴充套件的UrlRoutingModule的時候 會先檢查物理路徑檔案是否存在 存在的話就不執行MVC中的路由匹配規則 &
jquery 跨域 非同步請求 自定義頭部 預檢請求 spring mvc攔截處理 實現token單點登入
被跨域搞死了,各種奇葩問題。 問題描述:跨域登入,生成token並儲存到redis中,然後返回給客戶端,客戶端每次請求需要將token放到請求頭中傳給服務端,服務端使用過濾器處理跨域攔截,使用攔截器判斷token有效性。問題來了,發來的請求總是獲取不到頭部資訊,也就是取不到
Spring MVC異常處理實例
bsp ips etag label 視圖 uri _id integer ive 以下內容引用自http://wiki.jikexueyuan.com/project/spring/mvc-framework/spring-exception-handling-examp
spring mvc請求過程
logs ont com 邏輯 src resolv 發送 pre mage 1. 請求會首先發送到DispatchServlet,這是spring的前置Servlet,它會接收請求並轉發給spring的MVC controller,也就是業務controller 2. D
struts2的請求處理流程
tcl 客戶端 mes site 請求處理流程 ati dispatch 處理 處理流程 1.客戶端發送請求。2.經過一系列的過濾器(如:ActionContextCleanUp、SiteMesh等)到達核心控制器(FilterDispatcher)。3.核心控制器通過Ac
django源碼解析一(請求處理流程)
技術分享 ges order files 源碼 src esp 約束 sgi 1.我們都知道WSGI是一個規範,規範了server和application之間通信的一些約束,server端在監聽到請求之後,會把請求轉給application去處理,他們之間關聯起來的
Spring MVC執行的流程
前端 客戶端 字符 mvc框架 pattern control ring -o web.xml 1.Spring MVC應用的開發步驟 a.在web.xml文件中定義前端控制器DispatcherServlet來攔截用戶請求。由於Web應用是基於請求/響應架構的應用,所
.9-淺析express源碼之請求處理流程(2)
.exe 之前 信息 請求處理流程 log end doc 沒有 outer 上節漏了幾個地方沒有講。 1、process_params 2、trim_prefix 3、done 分別是動態路由,深層路由與最終回調。 這節就只講這三個地方,案例還是express