首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Spring MVC 請求處理流程圖解:從 DispatcherServlet 到視圖渲染全鏈路

     編輯:Java 綜合教學

Spring MVC 請求處理流程圖解:從 DispatcherServlet 到視圖渲染全鏈路

Spring MVC 作為經典 Web 框架,其核心請求處理流程是面試必考、排錯基礎。本文結合架構圖,詳細解析 12 步驟全鏈路,標註哪些組件需配置、哪些由框架自動完成。

架構流程圖

Spring MVC 請求處理流程圖

12 步驟詳細解析

  1. 用戶發送請求 → 瀏覽器/客戶端發起 HTTP Request。
  2. 前端控制器 DispatcherServlet 接收請求,統一入口,web.xml 配置 load-on-startup 啟動。
  3. 處理器映射器 HandlerMapping 根據請求 URL、Method、Header 等匹配 Handler (Controller 方法),返回 HandlerExecutionChain (含攔截器)。
    ⚙️ 配置:<mvc:annotation-driven/> 自動註冊 RequestMappingHandlerMapping。
  4. DispatcherServlet 將 Handler 傳遞給 處理器適配器 HandlerAdapter。
    ⚙️ 配置:<mvc:annotation-driven/> 自動註冊 RequestMappingHandlerAdapter。
  5. HandlerAdapter 調用 Handler 方法 (Controller),執行業務邏輯,支持參數綁定、類型轉換、數據驗證。
  6. 業務層執行:Service、DAO、數據庫操作,返回領域模型或 DTO。
  7. 返回 ModelAndView:包含模型數據 (Model) 與視圖名 (View Name)。
  8. HandlerAdapter 將 ModelAndView 返回給 DispatcherServlet。
  9. 視圖解析器 ViewResolver 根據視圖名解析為具體 View 實例 (JSP/Thymeleaf/FreeMarker/JSON)。
    ⚙️ 配置:InternalResourceViewResolver (JSP)、ThymeleafViewResolver、ContentNegotiatingViewResolver (多視圖)。
  10. View 物理視圖 返回給 DispatcherServlet。
  11. 視圖渲染:DispatcherServlet 調用 view.render(model, request, response),JSP 轉發、模板引擎輸出、JSON 序列化寫入響應流。
  12. 響應返回用戶:瀏覽器渲染 HTML 或客戶端解析 JSON。

核心組件配置對照表

組件接口/類是否需手動配置備註
DispatcherServletorg.springframework.web.servlet.DispatcherServlet是 (web.xml)核心前端控制器
HandlerMappingRequestMappingHandlerMapping否 (mvc:annotation-driven)支持 @RequestMapping
HandlerAdapterRequestMappingHandlerAdapter否 (mvc:annotation-driven)支持 @RequestBody, @ResponseBody
HandlerExceptionResolverExceptionHandlerExceptionResolver否 (mvc:annotation-driven)支持 @ExceptionHandler
ViewResolverInternalResourceViewResolver 等是視圖技術相關
LocaleResolverSessionLocaleResolver否 (默認)國際化
ThemeResolverFixedThemeResolver否 (默認)主題
MultipartResolverStandardServletMultipartResolver是 (文件上傳)Servlet 3.0+ 原生

紅色標註:僅需 XML/注解配置,無需編寫 Java 代碼

  • DispatcherServlet (web.xml)
  • HandlerMapping / HandlerAdapter / ExceptionResolver (<mvc:annotation-driven/>)
  • ViewResolver (Spring 配置文件)
  • MultipartResolver (可選)

常見問題排查

  • 404:HandlerMapping 未匹配到 Handler → 檢查 @RequestMapping 路徑、DispatcherServlet url-pattern、Controller 掃描包。
  • 405:HandlerMapping 匹配到 Handler 但 HTTP Method 不支持 → 檢查 @RequestMapping(method)。
  • 500:Handler 執行拋異常 → 檢查 HandlerExceptionResolver、@ExceptionHandler、日誌堆棧。
  • 視圖解析失敗:ViewResolver 前綴/後綴配置錯誤、JSP 文件不存在、模板語法錯誤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved