Spring MVC 核心工作流程

发布于:2025-07-23 ⋅ 阅读:(20) ⋅ 点赞:(0)

1. 流程起点:用户发起请求

  • 角色:用户(浏览器/客户端)
  • 动作:发送 HTTP 请求(如访问 http://xxx/user/list ),请求先到达 DispatcherServlet(Spring MVC 入口)。

2. 核心调度:DispatcherServlet(前端控制器)

作为 Spring MVC 的“总调度”,是所有请求的入口,负责协调后续所有组件:

  • 职责:接收请求 → 调用其他组件处理 → 组装响应返回。

3. 找处理器:HandlerMapping(处理器映射器)

  • 作用:根据请求的 URL,查找对应的 Handler(处理器,通常是 Controller 的方法)
  • 细节:还会关联 HandlerInterceptor(处理器拦截器),形成 HandlerExecutionChain(包含拦截器 + 处理器),用于在请求前后做增强(如日志、权限校验 )。

4. 执行处理器:Handler + HandlerAdapter(处理器适配器)

  • Handler:即实际处理请求的业务逻辑(如 UserController 的某个方法 ),可理解为“谁处理这个请求”。
  • HandlerAdapter:“适配器”,因为 Handler 有多种实现方式(如注解式、实现接口等 ),Adapter 负责适配调用,让框架能统一执行不同类型的 Handler。
  • 执行结果:返回 ModelAndView(包含数据 Model + 视图名 View ),也可能直接返回数据(如 REST 接口用 @ResponseBody )。

5. 解析视图:ViewResolver(视图解析器)

  • 作用:根据 ModelAndView 中的视图名,解析出实际的 View(视图对象,如 JSP、Thymeleaf 模板 )
  • 细节:拼接视图路径(如配置前缀 /WEB-INF/views/ + 视图名 userList + 后缀 .jsp ),找到最终要渲染的视图文件。

6. 渲染视图:View(视图)

  • 职责:结合 Model 中的数据(如用户列表、提示消息 ),渲染出完整的页面(HTML)。
  • 输出:生成的响应内容(HTML/JSON 等)通过 DispatcherServlet 返回给用户。

7. 流程闭环:返回响应

  • 结果:用户收到最终响应(如网页、接口数据 ),流程结束。

关键设计思想

  • 职责分离:每个组件只做一件事(DispatcherServlet 调度、Handler 处理业务、View 渲染…),符合“单一职责”。
  • 可扩展:通过适配器(HandlerAdapter)、拦截器(HandlerInterceptor)等,轻松扩展功能(如添加日志、校验 )。
  • 解耦:组件间通过接口交互(如 HandlerMapping 不直接依赖 Controller 实现 ),降低代码耦合度。

简单总结流程:
用户请求 → DispatcherServlet 接收 → HandlerMapping 找处理器 → HandlerAdapter 执行 Handler → 返回 ModelAndView → ViewResolver 解析视图 → View 渲染 → 响应给用户

Spring MVC 核心工作流程


网站公告

今日签到

点亮在社区的每一天
去签到