SpringMVC 的執行原理
阿新 • • 發佈:2022-03-14
SpringMVC 的執行原理
關鍵詞: Spring MVC
SpringMVC 是一個web 框架,它實現了 MVC 三層架構。
大體上來說,SpringMVC 通過 DispatchServlet 攔截使用者請求的 url,
然後決定交給哪一個 controller 處理
舉一個例子:
- 假設使用者輸入 url 為
http://localhost:8080/SpringMVC/hello
-
http://localhost:8080
是伺服器域名 - SpringMVC 表示部署在伺服器上的web站點
- hello表示控制器
通過分析,如上url表示為:
請求位於伺服器localhost:8080上的SpringMVC站點的hello控制器。
-
HandlerMapping為處理器對映。
DispatcherServlet呼叫 HandlerMapping,
HandlerMapping根據請求url查詢Handler。 -
HandlerExecution表示具體的Handler,其主要作用是根據url查詢控制器,如上url被查詢控制器為: hello。
-
HandlerExecution將解析後的資訊傳遞給DispatcherServlet,如解析控制器對映等。
-
HandlerAdapter表示處理器介面卡,其按照特定的規則去執行Handler。
-
Handler讓具體的Controller執行。
-
Controller將具體的執行資訊返回給HandlerAdapter,如ModelAndView.
-
HandlerAdapter將檢視邏輯名或模型傳遞給DispatcherServlet.
-
DispatcherServlet呼叫檢視解析器(ViewResolver)來解析HandlerAdapter傳遞的邏輯檢視名。
-
檢視解析器將解析的邏輯檢視名傳給DispatcherServlet。
流程圖如下,轉自秦疆
Controller 部分程式碼
import org.springframework.web.servlet.Mode1Andview; import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpservletRequest; import javax.servlet.http.HttpServletResponse; //注意:這裡我們先匯入controller介面 public class Hellocontroller implements Controller { public NodelAndview handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception { //ModelAndView模型和檢視 ModelAndview mv = new ModelAndview(); //呼叫業務層,暫時不寫 //封裝物件,放在ModelAndView中 mv.add0bject( attributeName: "msg" , attributeValue: "HelloSpringWVC!"); // 封裝要跳轉的檢視,放在ModelAndView中 // 後續會依據配置,使用 name 拼接成 WEB-INF/jsp/hello.jsp, // 相當於告訴 SpringMVC 要將資料交給哪個 jsp mv.setviewName("hello"); return mv; } }