1. 程式人生 > 其它 >SpringMVC 的執行原理

SpringMVC 的執行原理

SpringMVC 的執行原理

關鍵詞: Spring MVC

轉自SpringMVC 執行流程-睿站-狂神說

SpringMVC 是一個web 框架,它實現了 MVC 三層架構。

大體上來說,SpringMVC 通過 DispatchServlet 攔截使用者請求的 url,
然後決定交給哪一個 controller 處理

舉一個例子:

  1. 假設使用者輸入 url 為 http://localhost:8080/SpringMVC/hello
  • http://localhost:8080 是伺服器域名
  • SpringMVC 表示部署在伺服器上的web站點
  • hello表示控制器

通過分析,如上url表示為:

請求位於伺服器localhost:8080上的SpringMVC站點的hello控制器。

  1. HandlerMapping為處理器對映。
    DispatcherServlet呼叫 HandlerMapping,
    HandlerMapping根據請求url查詢Handler。

  2. HandlerExecution表示具體的Handler,其主要作用是根據url查詢控制器,如上url被查詢控制器為: hello。

  3. HandlerExecution將解析後的資訊傳遞給DispatcherServlet,如解析控制器對映等。

  4. HandlerAdapter表示處理器介面卡,其按照特定的規則去執行Handler。

  5. Handler讓具體的Controller執行。

  6. Controller將具體的執行資訊返回給HandlerAdapter,如ModelAndView.

  7. HandlerAdapter將檢視邏輯名或模型傳遞給DispatcherServlet.

  8. DispatcherServlet呼叫檢視解析器(ViewResolver)來解析HandlerAdapter傳遞的邏輯檢視名。

  9. 檢視解析器將解析的邏輯檢視名傳給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;
    }
}