1. 程式人生 > >SpringMVC的處理流程

SpringMVC的處理流程

   

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越小,優先順序越高。

相關推薦

記一次Controller改造,及SpringMVC處理流程

概述 由於工作需要,需實現這樣一個功能的controller框架: 1,Restful API 2,請求引數校驗(請求中需要攜帶指定的引數,才能進入控制器方法。一次請求會攜帶一些基本資訊,以及請求資料,此處校驗的是請求資料的攜帶情況) 3,請求格式校驗(請求格式需要符合規定,才能進入

SpringMVC處理流程

utils 結束 試圖 bool ise odi ole clean up develop 之前在學servlet時寫過JavaWeb與Asp.net工作原理比較分析,那篇主要是大致描述了下servlet的工作流程,今天在家了解了下springmvc的工作原理,與asp.

SpringMVC源碼分析-400異常處理流程及解決方法

defining count ror error this 設計模式 進入 如何 16px 本文設計SpringMVC異常處理體系源碼分析,SpringMVC異常處理相關類的設計模式,實際工作中異常處理的實踐。 問題場景 假設我們的SpringMVC應用中有如下控制器: 代

SpringMVC處理請求的工作流程

Spring簡介 DI(Dependency Injection):依賴注入,四種注入方式 IOC(Iversion of Controller):控制反轉 AOP(Aspect-Oriented Programming):面向切面程式設計,包括Spring的宣告式事務管理 處理

SpringMVC原始碼學習之request處理流程 springMVC原始碼學習地址 springMVC原始碼學習之addFlashAttribute原始碼分析 java reflect反射呼叫方法invoke

目的:為看原始碼提供呼叫地圖,最長呼叫邏輯深度為8層,反正我是springMVC原始碼學習地址看了兩週才理出來的。 1.處理流程(版本為4.3.18) 入口為spring-webmvc-4.3.18.RELEASE.jar中org.springframework.web.servlet.Dispatche

SpringMVC源碼學習之request處理流程

目的 攔截 使用 param urn idg return logs .html 目的:為看源碼提供調用地圖,最長調用邏輯深度為8層,反正我是springMVC源碼學習地址看了兩周才理出來的。 1.處理流程(版本為4.3.18) 入口為spring-webmvc-4.3.1

SpringMVC框架結構的圖解、架構的處理流程以及三大元件的說明和使用

1.1 框架結構   1.2 架構流程 1.使用者傳送請求至前端控制器DispatcherServlet; 2.DispatcherServlet收到請求呼叫HandlerMapping處理器對映器; 3.處理器對映器根據url找到具體的處理器,生成處理器物件及處理

Tomcat和SpringMVC結果梳理和請求處理流程小結

頂層結構 最頂層是Server,由Catalina管理,包含load,start,stop用來管理整個伺服器的生命週期 一個Server包含多個Service Service主要包含兩部分:Connector和Container,一個Service只有一個Cont

SpringMvc 請求處理流程(如何從tomcat到SpringMvc

HttpServletBean 在init方法中, 首先將Servlet配置的引數使用BeanWrapper設定到DispatcherServlet中, 然後呼叫initServletBean 子類通過這個方法進行初始化 FrameworkServle

SpringMVC處理流程

    1. 當DispatcherServlet接到請求時,他先回查詢適當的處理程式來處理請求。DispatcherServlet通過一個或者多個處理程式對映,將每個請求對映到處理程式中。處理程式

SpringMVC處理請求流程(http://www.cnblogs.com/hujiapeng/p/5765636.html)

SpringMVC核心處理流程: 1、DispatcherServlet前端控制器接收發過來的請求,交給HandlerMapping處理器對映器 2、HandlerMapping處理器對映器,根據請求路徑找到相應的HandlerAdapter處理器介面卡(處理器介面卡就

springmvc對request的處理流程

1、判斷請求是不是檔案上傳請求,如果是將request處理成MutipartRequest,如果不是直接進入下一步 2、根據請求request從HandlerMapping獲取到request匹配的Handler(即controller中的方法之類的Object)和Inte

SpringMvc處理請求流程

1、傳送請求至前端控制器(DispatcherServlet) 2、前端控制器請求HandlerMapping 查詢Handler(根據xml 或者 註解 查詢) 3、處理器對映器HandlerMapping 向前端控制器返回Handler 4、前端控制器請求處理器介

SpringMVC請求流程

響應 bsp logs -1 wid 執行 map resp resolve Spring結構圖 SpringMVC請求流程圖 SpringMVC請求流程圖語述: request--->DispatcherServler(中央調度器/前端控制器)--

【MyBatis源碼分析】insert方法、update方法、delete方法處理流程(上篇)

times database connect 環境 enable clas 它的 java對象 ace 打開一個會話Session 前文分析了MyBatis將配置文件轉換為Java對象的流程,本文開始分析一下insert方法、update方法、delete方法處理的流程,至

線上服務mcelog負載異常分析處理流程

線上服務mcelog負載異常分析處理流程一、問題概述:Nginx服務器,HP,有冗余,其中一臺服務器mcelog負載比較高,日誌秒級別,已經影響了此服務器業務。tail -f /var/log/mcelog#註意看此信息是不斷循環,註意看Transaction:Memory scrubbing error M

HyperLedger Fabric 1.0的Transaction處理流程

toa 足夠 余額 無法 -1 ber pla client ack 如果把區塊鏈比作一個只能讀寫,不能刪改的分布式數據庫的話,那麽事務和查詢就是對這個數據庫進行的最重要的操作。以比特幣來說,我們通過錢包或者Blockchain.info進行區塊鏈的查詢操作,而轉賬行為就是

Android 輸入管理服務-輸入事件到達之後的處理流程

content 例如 enter 技術 fontsize tail 流程 ref ora 接上一篇博客“Android 輸入管理服務啟動過程的流程”。這兩天分析了Android 輸入管理服務接收到輸入事件之後的處理流程,詳細流程例如以下面兩圖所看到的:

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去處理,他們之間關聯起來的