《深入理解SpringMVC思想》
前言:
SpringMVC是一種基於MVC架構的用於簡化web應用程式開發的應用開發框架,它是spring的一個模組,與spring緊密結合,無需中間整合層來整合,它和struts2一樣都是表現層框架。在web模型中,mvc是很流行的框架,通過將model、view、controller分離,減少開發,減少出錯,方便組內開發人員之間的協同工作。
正文:
一。SpringMVC應用的開發步驟
1.在web.xml中定義前端控制器Dispatcherservlet
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:web/spring/spring.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Dispatcherservlet是SpringMVC的核心入口類,負責處理分發客戶端傳送的請求,使用檢視來最終相應客戶端的請求。struts1的核心入口類是ActionServlet,struts2的核心入口類是StrutsParperAndExecuteFilter。
2.如果是POST請求,則需要開發表單提交的JSP頁面,如果是GET請求,則可以跳過這一步。
3.定義處理使用者請求的Handle類,通過實現Controller介面或者使用@Controller註解
4.當servlet攔截使用者請求後,讓servlet知道建立哪個Controller介面的例項有兩種解決方案:
(1)利用xml配置檔案
<!--配置Handle,對映“/hello請求”>
<bean name="/hello" class="org.fkit.controller.HelloController"/>
(2)Spring2.5之後,推薦使用註解來配置Handle
@Controller
public class DatumManagerController {}
5.編寫檢視資源
當Handler處理使用者請求結束後,通常會返回一個ModelAndView物件,該物件中包含返回的檢視名或檢視名和模型,這個檢視名就代表需要顯示的物理檢視資源。如果Handler需要把一些資料傳給檢視資源,就可以通過模型物件。
二。SpringMVC執行的流程?
說明:
1.使用者向伺服器傳送請求,請求被SpringMVC的核心入口類Dispatcherservlet截獲
2.Dispatcherservlet對請求的URL(統一資源定位符)進行解析,得到URI(資源識別符號),根據該URI,呼叫HandlerMapping得到Handler的所有相關的物件,包括Handler物件以及該物件的攔截器,包裝成HandlerExecutionChain物件統一返回給Dispatcherservlet
3.Dispatcherservlet根據得到的Handler,選擇一個合適的HandlerAdapter,處理實際的業務邏輯
4.提取請求中的模型資料,開始執行Handler,在填充Handler的入參過程中,根據配置,spring會做一些額外的工作:
(1)訊息轉換 (2)資料轉換 (3)資料格式化 (4)資料驗證
5.Hander執行完畢之後,會向Dispatcherservlet返回一個ModerlAndView物件,該物件應該包含檢視名或檢視名和模型。
6.根據返回的ModelAndView,選擇一個合適的ViewReslover(檢視解析器)返回給Dispatcherservlet
7.ViewReslover結合model和view渲染檢視
8.Dispatcherservlet將檢視渲染結果返回給客戶端。
結語:
深入理解springMVC的執行流程後, 對於前後端互動的流程理解會更加深入.
相關文章
- 深入理解OkHttp原始碼及設計思想HTTP原始碼
- 深入 Go 的錯誤處理機制,理解設計思想Go
- SpringMVC的專案架構思想SpringMVC架構
- 深入學習SpringMVCSpringMVC
- 用介面的思想來理解GraphQL
- 遞迴思想的巧妙理解遞迴
- jQuery設計思想之理解篇jQuery
- 深入瞭解SpringMVC原始碼解析SpringMVC原始碼
- 2張圖理解resnet核心思想
- 【總結】理解KMP演算法思想KMP演算法
- 如何通俗理解設計模式及其思想?設計模式
- 深入vue2.0底層思想–模板渲染Vue
- 深入理解Isolate
- 深入理解HashMapHashMap
- 深入理解TransformORM
- 深入理解KVO
- 深入理解 JVMJVM
- 深入理解 GitGit
- 深入理解AQSAQS
- 深入理解JVMJVM
- 深入理解 TypeScriptTypeScript
- 深入理解JavaScriptCoreJavaScript
- 深入理解MVCMVC
- 深入理解 PWA
- 深入理解margin
- 深入理解ReactReact
- 深入理解BFC
- 深入理解reduxRedux
- BFC深入理解
- 深入理解 GCDGC
- 深入理解 requestAnimationFramerequestAnimationFrame
- 深入理解Eureka
- 深入理解copy
- AsyncTask深入理解
- 深入理解RunLoopOOP
- 深入理解Fsync
- 深入理解yield
- Android中Activity設計思想個人理解Android