當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringMVC执行流程【简单理解举例】
生活随笔
收集整理的這篇文章主要介紹了
SpringMVC执行流程【简单理解举例】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
請選擇你們的任意門:
- 本文介紹
- Spring簡單執行示例
- 改造成SpringMVC
- 程序執行流程分析
- SpringMVC架構圖以及執行流程(可以直接跳過來)
- 架構圖
- 名詞解釋(官方話):
- 執行流程
- 自己理解
本文介紹
該篇文章主要講解SpringMVC的執行流程,即前端控制器、控制器等組件的調用
先從Spring的一個基礎案例,轉到SpringMVC。以此來觀察到SpringMVC做了哪些改變
然后分析SpringMVC程序的執行流程,知道代碼是如何跑起來的,一個請求又是如何返回一個頁面的
最后根據SpringMVC的架構圖,講解程序中沒有體現的、SpringMVC封裝好的那些組件
作者能力有限,只作為自己學習的筆記,可能理解有誤差(畢竟全信書不如不看書嘛)
Spring簡單執行示例
案例內容:
瀏覽器訪問:localhost/UserServlet,返回一個頁面
- 項目目錄
- web.xml配置
指定要攔截的請求路徑是/UserServlet,由UserServlet類進行處理
- UserServlet
打印語句到控制臺,然后返回success.jsp頁面
改造成SpringMVC
上述程序改造成SpringMVC
- 指定表現成業務處理器,并將其配置成Spring的bean(等同于Servlet)
當前端訪問時,就會執行該程序
需要設置方法的訪問地址,確定什么請求會執行這個方法
設置要跳轉的頁面,不然會報錯,如果不設置跳轉頁面,輸出語句也會正常執行
- 創建spring-mvc.xml配置文件
等同于spring的xml配置文件,只是需要區分一下。此時可以刪除原來的spring的配置文件
在配置文件中開啟組件掃描注解驅動,不然掃描不到上邊類的@Controller注解,也就無法把UserController交給springMVC控制
- 修改web.xml
用DispatcherServlet頂替掉之前的UserServlet,目前可以將DispatcherServlet理解成== 看大門 == 的,專門攔截請求
既然要攔截請求,那么作為一個正經看大門的,也要有原則!所以需要配置具體攔截哪個請求
看大門的有了,那么用戶真正想進去的還是== 辦公室 (UserController)== 啊,只有spring加載了才可以。所以加上,把spring-mvc.xml文件加載進來
程序執行流程分析
- 服務器啟動
- 加載web.xml中的DispatcherServlet
- 讀取spring-mvc.xml中的配置,加載所有com包中所有標記為bean的類
- 讀取bean中方法上標注@RequestMapping的內容(知道自己可以處理哪些請求)
- 處理請求
- DispatcherServlet配置攔截所有請求(因為在web.xml中配置的是/)
- 使用請求路徑與所有加載的@RequestMapping的內容進行對比
- 找到匹配的訪問路徑,執行對應的方法
- 根據方法返回值,在webapp目錄中查找對應的頁面并展示
SpringMVC架構圖以及執行流程(可以直接跳過來)
架構圖
名詞解釋(官方話):
- 前端控制器DispatcherServlet: 整體流程控制中心,降低組件間的耦合性
- 處理器映射器HandlerMapping: 根據用戶請求找到對應具體的Handler處理器
- 處理器Handler: 業務處理的核心類(servlet類似,自己開發)
- 處理器適配器HandlAdapter: 對Handler處理器進行執行,即找到要執行的servlet方法
- 視圖解析器View Resolver: 將處理結果生成View視圖
- View: 最終產出的頁面結果
執行流程
自己理解
可能有點啰嗦,但是卻很能理解(基于真事改編)**
一次請求就可以看做是你去銀行辦事
假設小明(沒錯,就是他)今天要去銀行開通手機支付
- 你不能直接去柜臺辦理(除非你特別豪橫、有錢、知道哪個柜臺可以辦理這個業務)
- 所以第一步是去咨詢前臺(前端控制器),告訴前臺小哥哥/小姐姐你要辦理更改密碼這個業務
- 前臺在電腦上查詢(處理器映射器)這個業務是哪個柜臺能辦理(前臺業務能力真低)
- 然后前臺就告訴你在預約機器(處理器適配器)上排隊取號,選便民服務(不要問我這是不是真的,我不知道)
- 當輪到你時,你就去柜臺(處理器)辦理業務,柜臺小姐姐說已經改好了,但是需要你在手機銀行軟件上轉賬三次進行激活(激活操作就相當于Model And View,此時用戶還不能直接處理這個數據)
- 小明不知道該怎么操作,于是還是要問前臺(前端控制器)
- 那業務低的前臺(前端控制器)就問問他們的經理(視圖解析器)
- 經理(視圖解析器)告訴前臺(前端控制器)操作步驟(View),然后前臺再告訴小明,自此,小明這個業務才算完成
總結
以上是生活随笔為你收集整理的SpringMVC执行流程【简单理解举例】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Autosar模块介绍:AutosarO
- 下一篇: c语言:成绩排名(结构体)