Spring MVC Framework如何工作?如何處理HTTP請求?- 知識鋪

知識鋪: 致力於打造輕知識點,持續更新每次的知識點較少,閱讀不累。不佔太多時間,不停地來喚醒你記憶深處的知識點。

一、請求如何達到後端

一個常見的Spring MVC Web請求的流程,即如何從頭到尾處理HTTP請求。換句話說,解釋Spring MVC中的請求流程。這一切都從客戶端說起,客戶端向特定URL傳送請求。當該請求到達Web容器時,例如Tomcat,它會檢視web。xml並找到對映到該特定URL的Servlet或Filter。它是Servlet或Filter處理請求的委託。由於Spring MVC構建在Servlet之上,因此這也是所有基於Spring MVC的Java Web應用程式中的初始請求過程。

Web容器例:如Tomcat負責建立Servlet和Filter例項並呼叫它們的各種生命週期方法,

例如 init(),service(),destroy()。在HTTP請求的情況下,HttpServlet處理該請求,並且根據HTTP請求方法,容器呼叫各種doXXX()方法,例如doGet()來處理GET請求和doPost()來處理POST請求。

要啟用Spring MVC,我們需要將Spring MVC jar中的DispatcherServlet宣告為web。xml。這個Servlet偵聽URL模式*,如下面的web。xml所示,這意味著所有請求都對映到DispatcherServlet。

Spring MVC Framework如何工作?如何處理HTTP請求?- 知識鋪

可以將其他servlet對映到其他URL,但如果使用Spring MVC開發Web應用程式或RESTful Web服務,則透過DispatcherServlet傳遞所有請求是有意義的。 這是Spring MVC的web。xml配置,可以看到DispatcherServlet使用URL模式對映到所有請求*

URL模式很重要,如果請求與DispatcherServlet的URL模式匹配,那麼它將由Spring MVC處理,否則不會。DispatcherServlet根據請求的URL將請求傳遞給特定的控制器。DispatcherServlet如何知道哪個請求需要傳遞給哪個控制器? 它使用@RequestMapping註解或Spring MVC配置檔案來查詢請求URL到不同控制器的對映。它還可以使用特定的請求處理註解,例如@GetMapping或@PostMapping。控制器類也使用@Controller和@RestController進行標識

(在RESTful Web服務的情況下)註解。

二、簡單例題

如,class下面是一個Controller,它將處理任何具有URI “/user”的請求。它還有@GetMapping,這意味著當收到此URL的GET請求時將呼叫該方法。如果客戶端向“/user” URI 傳送POST請求,則將呼叫使用@PostMapping註解的方法。

Spring MVC Framework如何工作?如何處理HTTP請求?- 知識鋪

a。 處理完請求後,Controller會將邏輯檢視名稱和模型返回給DispatcherServlet,它會查詢檢視解析器,直到確定實際View呈現輸出為止。然後,DispatcherServlet將所選檢視(例如Freemarker或JSP)與模型資料聯絡,並根據模型資料呈現渲染輸出。

b。 此渲染輸出作為HTTP響應返回給客戶端。在它回來的路上,它可以傳遞給任何已配置的過濾器,例如Spring Security過濾器鏈或配置為將響應轉換為JSON或XML的過濾器。

c。 Spring MVC框架中的DispatcherServlet是前端控制器模式,它也是一個單一的入口點 - 處理所有傳入的請求,但這又取決於你的URL模式對映和你的應用程式。

d。 它將進一步處理的請求委託給其他元件,例如控制器,檢視,檢視解析器,處理程式對映器,異常處理程式等。

e。 它還可以直接對映到/,但是需要配置處理靜態資源的異常。如果您檢視web。xml配置,它還會使用load-on-startup標記進行預載入。

三、Spring MVC工作流程

Spring MVC Framework如何工作?如何處理HTTP請求?- 知識鋪

四、Spring MVC框架的工作原理

RESTful Web Service請求的流程也與此沒有太大區別。它遵循相同的路徑,但在REST的情況下,Controller方法使用@ResponseBody註解, 這意味著它不會向DispatcherServlet返回邏輯檢視名稱,而是將輸出直接寫入HTTP響應主體。

總之,以下是使用Spring MVC框架建立的Java應用程式中的HTTP請求流:

1)客戶端向特定URL傳送HTTP請求

2)Spring MVC的DispatcherServlet接收請求

2)它將請求傳遞給特定控制器取決於使用@Controller和@RequestMapping註解請求的URL 。

3)Spring MVC Controller然後將邏輯檢視名稱和模型返回給DispatcherServlet。

4)DispatcherServlet查詢檢視解析器,直到確定實際View呈現輸出

5)DispatcherServlet使用模型資料聯絡所選檢視(例如Thymeleaf,Freemarker,JSP),並根據模型資料呈現渲染輸出

6)渲染的輸出作為響應返回給客戶端。