SpringMVC执行流程图解(简易版)

SpringMVC执行流程图解(简易版)_第1张图片

 一、SpringMVC常用组件

  1. DispatcherServlet(前端控制器):

    • DispatcherServlet是Spring MVC的核心组件之一,充当请求的入口点。
    • 它负责接收用户的请求并将其分发给其他组件进行处理。
    • DispatcherServlet还处理全局配置、异常处理和视图渲染等。
  2. HandlerMapping(处理器映射器):

    • HandlerMapping根据请求的URL、请求方法等信息,确定应该由哪个处理器来处理该请求。
    • 它维护一个处理器映射表,将URL映射到相应的处理器(Controller)。
  3. HandlerExecutionChain(处理器执行链):

    • HandlerExecutionChain包含一个或多个处理器以及相应的处理器拦截器。
    • 它表示请求处理的执行链,包括处理器和拦截器的顺序。
    • 拦截器可以在请求前后进行预处理和后处理操作。
  4. HandlerAdapter(处理器适配器):

    • HandlerAdapter负责根据处理器的类型调用具体的Controller(处理器)进行处理。
    • 它将请求传递给处理器并执行处理器的逻辑。
    • HandlerAdapter根据处理器的类型不同,使用相应的适配策略进行适配。
  5. Controller(处理器):

    • Controller是实际处理业务逻辑的组件。
    • 它接收请求并根据业务逻辑进行处理。
    • Controller处理请求后,将处理结果封装到ModelAndView对象中并返回。
  6. ModelAndView:

    • ModelAndView是一个包含处理结果的模型数据和要渲染的视图信息的对象。
    • 它将处理结果数据以及要展示的视图名称封装在一起,供视图解析器进行处理。
  7. ViewResolver(视图解析器):

    • ViewResolver将ModelAndView中的视图名称解析为具体的视图对象。
    • 它根据配置和规则,将逻辑视图名称解析为实际的视图对象。
    • 视图解析器可以根据需要使用不同的解析策略,如内部资源视图解析、JSP视图解析等。
  8. View(视图):

    • View负责将模型数据填充到视图中,并生成最终的HttpResponse对象。
    • 它是将模型数据渲染到客户端的关键组件。
    • View可以是JSP、Thymeleaf、Freemarker等不同的模板引擎,或者是其他自定义的视图实现。

二、SpringMVC执行流程

1. 用户发送的请求由前端控制器(DispatcherServlet)接收。
   - DispatcherServlet 是 Spring MVC 的核心模块之一,它充当请求的入口点。

2. DispatcherServlet 是 Spring MVC 的核心模块,它负责调度其他组件的执行,降低了不同组件之间的耦合性。
   - DispatcherServlet 根据配置和规则,将请求分发给适当的处理器和组件,协调整个请求处理过程。

3. DispatcherServlet 将用户请求发送给处理器映射器(HandlerMapping)。
   - 处理器映射器负责根据请求的URL、请求方法等信息,确定应该由哪个处理器来处理该请求。

4. 处理器映射器根据请求的URL、请求方法等信息,确定应该由哪个处理器来处理该请求。
   - 处理器映射器会根据预先配置的映射规则,将请求映射到合适的处理器(Controller)。

5. 处理器映射器将找到的处理器封装为处理器执行链(HandlerExecutionChain)对象,并将其返回给 DispatcherServlet。
   - 处理器执行链包含了一个或多个处理器以及相应的处理器拦截器,用于执行请求处理过程。

6. 处理器执行链中包含了一个或多个处理器以及相应的处理器拦截器(HandlerInterceptor)。
   - 处理器执行链将请求传递给处理器前后执行相应的处理器拦截器,用于实现拦截、验证、日志记录等功能。

7. DispatcherServlet 根据处理器执行链,找到能够执行该处理器的处理器适配器(HandlerAdapter)。
   - 处理器适配器负责将请求传递给处理器并执行处理器的逻辑。

8. 处理器适配器根据处理器的类型调用具体的 Controller(处理器)。
   - 处理器适配器通过适配不同类型的处理器,将请求委托给具体的 Controller 进行处理。

9. Controller 是实际处理业务逻辑的组件,它会根据请求的内容进行相应的处理,并将处理结果和要跳转的视图封装到一个 ModelAndView 对象中。
   - Controller 接收请求,并根据业务逻辑进行处理,然后将处理结果封装在 ModelAndView 对象中返回。

10. ModelAndView 包含了处理结果的模型数据和要渲染的视图信息,处理器适配器将 ModelAndView 返回给 DispatcherServlet。
    - ModelAndView 包含处理结果的数据模型以及用于渲染结果的视图的名称。

11. 处理器适配器将 ModelAndView 直接交给 DispatcherServlet。
    - 处理器适配器将 ModelAndView 对象返回给 DispatcherServlet,让它继续处理请求。

12. 业务处理完毕后,DispatcherServlet 需要将处理结果展示给用户,所以它调用 ViewResolver(视图解析器)。
    - ViewResolver 解析 ModelAndView 中的视图名称,将其解析为具体的视图对象。

13. ViewResolver 将 ModelAndView 中的视图名称解析为具体的视图对象(View)。
    - ViewResolver 根据视图名称解析为可以渲染的具体视图对象。

14. 解析后的视图对象返回给 DispatcherServlet。
    - ViewResolver 返回一个实现了 View 接口的具体视图对象。

15. DispatcherServlet 调用视图对象的方法,让视图对象自己进行渲染,将模型数据填充至视图中,形成一个 HttpResponse 对象。
    - DispatcherServlet 调用视图对象的方法,由视图对象负责将模型数据填充到视图中,并生成最终的 HttpResponse 对象。

16. 最后,DispatcherServlet 将生成的 HttpResponse 对象返回给浏览器,展示在页面上。
    - DispatcherServlet 将生成的 HttpResponse 对象返回给客户端浏览器,完成请求处理过程,并将最终结果展示在页面上。

你可能感兴趣的:(流程图,java,spring)