• 那是从何处传来的钟声呢?偶尔听到那钟声,平添一份喜悦与向往之情。

Spring MVC 流程图

后端 Nanait 5年前 (2019-09-29) 973次浏览 已收录 0个评论 扫描二维码
Spring MVC 工作流程图
图一
Spring MVC 流程图
图二 
Spring MVC 流程图
Spring 工作流程描述
      1. 用户向服务器发送请求,请求被 Spring 前端控制 Servelt DispatcherServlet 捕获;
      2. DispatcherServlet 对请求 URL 进行解析,得到请求资源标识符(URI)。然后根据该 URI,调用 HandlerMapping 获得该 Handler 配置的所有相关的对象(包括 Handler 对象以及 Handler 对象对应的拦截器),最后以 HandlerExecutionChain 对象的形式返回;
      3. DispatcherServlet 根据获得的 Handler,选择一个合适的 HandlerAdapter。(附注:如果成功获得 HandlerAdapter 后,此时将开始执行拦截器的 preHandler(…)方法)
       4.  提取 Request 中的模型数据,填充 Handler 入参,开始执行 Handler(Controller)。 在填充 Handler 的入参过程中,根据你的配置,Spring 将帮你做一些额外的工作:
      HttpMessageConveter: 将请求消息(如 Json、xml 等数据)转换成一个对象,将对象转换为指定的响应信息
      数据转换:对请求消息进行数据转换。如 String 转换成 Integer、Double 等
      数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
      数据验证: 验证数据的有效性(长度、格式等),验证结果存储到 BindingResult 或 Error 中
      5.  Handler 执行完成后,向 DispatcherServlet 返回一个 ModelAndView 对象;
      6.  根据返回的 ModelAndView,选择一个适合的 ViewResolver(必须是已经注册到 Spring 容器中的 ViewResolver)返回给 DispatcherServlet ;
      7. ViewResolver 结合 Model 和 View,来渲染视图
      8. 将渲染结果返回给客户端。
Spring 工作流程描述
    为什么 Spring 只使用一个 Servlet(DispatcherServlet)来处理所有请求?
     详细见 J2EE 设计模式-前端控制模式
    Spring 为什么要结合使用 HandlerMapping 以及 HandlerAdapter 来处理 Handler?
    符合面向对象中的单一职责原则,代码架构清晰,便于维护,最重要的是代码可复用性高。如 HandlerAdapter 可能会被用于处理多种 Handler。

何处钟 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Spring MVC 流程图
喜欢 (0)
[15211539367@163.com]
分享 (0)
Nanait

您必须 登录 才能发表评论!