SpringMVC 执行原理

SpringMVC执行原理
SpringMVC 执行原理_第1张图片

简单分析执行流程:

  1. 客户端发出HTTP请求,Web应用服务器接受此请求。若匹配DispatchServlet的请求映射路径(在Web.xml 中指定),则Web容器将该请求转交给DispatchServlet处理。

  2. DispatchServlet接收到该请求后,根据请求的信息(包括URL、请求参数、HTTP方法等)及HandlerMapping的配置(在< servletName>-servlet.xml中配置)找到处理请求的处理器(Handler)。

  3. DispatchServlet根据HandlerMapping找到对应当前请求的 Handler 之后,通过 HandlerAdapterHandler 进行封装,再以统一的适配器接口调用 HandlerHandlerAdapter 可以理解为具体使用 Handler 来干活的人,HandlerAdapter 接口里一共有三个方法。如下图:HandlerAdapter 接口提供的方法。

SpringMVC 执行原理_第2张图片

  • boolean supports(Object handler);//方法:判断是否可以使用某个Handler。
    ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler);//具体使用Handler干活。
    long getLastModified(HttpServletRequest request, Object handler);//该方法:获取资源的Last-Modified。
    
  1. 在请求信息到达真正调用 Handler 的处理方法之前的这段时间内,Spring MVC 还完成了很多工作,它会将请求信息以一定的方式转换并绑定到请求方法的入参中,对于入参的对象会进行数据转换、数据格式化以及数据效验等。这些都做完之后,最后才真正地调用 Handler 的处理方法进行相应的业务逻辑处理。

  2. 处理器完成业务逻辑处理之后将返回一个 ModelAndView 对象给 DispatchServletModelAndView 对象包含了逻辑视图名和模型数据信息。

  3. ModelAndView 对象中包含的是 “ 逻辑视图名 ”,而真正的视图对象。 DispatchServlet 会通过 ViewResolver 将逻辑视图名解析为真正的视图对象 View 。当然,负责数据展示的视图可以为 JSP、PDT、JSON 等多种数据格式,对此 Spring MVC 均可灵活配置。

  4. 当得到真实的视图对象 View 后, DispatchServlet 会使用 ModelAndView 对象中的模型数据对 View 进行视图渲染

  5. 最终客户端获得响应消息,根据配置,可以是普通的 HTML 页面,也可以是一个 XML 或者 JSON 格式的数据等。

学习笔记,仅供参考。

你可能感兴趣的:(Spring,MVC,spring)