返回

SpringMVC源码剖析之SpringMVC工作流程

后端

从请求进入到控制器方法,到视图的返回,SpringMVC是如何工作的呢?带着这个问题,我们一起来分析一下SpringMVC的工作流程。

SpringMVC核心组件

SpringMVC的核心组件主要包括:

  • DispatcherServlet:SpringMVC的前端控制器,负责接收和分发请求。
  • HandlerMapping:处理器映射器,用于将请求映射到控制器方法。
  • HandlerAdapter:处理器适配器,负责将控制器方法适配到DispatcherServlet。
  • ViewResolver:视图解析器,负责将视图名称解析为实际的视图对象。

SpringMVC请求处理流程

当请求进入到SpringMVC系统时,首先由DispatcherServlet接收请求,DispatcherServlet会根据请求信息,通过HandlerMapping找到对应的控制器方法,然后调用HandlerAdapter将控制器方法适配到DispatcherServlet,最后再由ViewResolver将视图名称解析为实际的视图对象,并返回给客户端。

HandlerMapping

HandlerMapping是处理器映射器,用于将请求映射到控制器方法。SpringMVC中提供了多种HandlerMapping,包括:

  • BeanNameUrlHandlerMapping:根据请求路径中的bean名称来查找控制器方法。
  • SimpleUrlHandlerMapping:根据请求路径中的简单URL模式来查找控制器方法。
  • AntPathMatcherHandlerMapping:根据请求路径中的Ant风格URL模式来查找控制器方法。
  • RegexMatchHandlerMapping:根据请求路径中的正则表达式来查找控制器方法。

HandlerAdapter

HandlerAdapter是处理器适配器,负责将控制器方法适配到DispatcherServlet。SpringMVC中提供了多种HandlerAdapter,包括:

  • HttpRequestHandlerAdapter:用于处理HTTP请求的控制器方法。
  • SimpleControllerHandlerAdapter:用于处理简单控制器方法的控制器方法。
  • AnnotationMethodHandlerAdapter:用于处理带有@RequestMapping注解的控制器方法的控制器方法。

ViewResolver

ViewResolver是视图解析器,负责将视图名称解析为实际的视图对象。SpringMVC中提供了多种ViewResolver,包括:

  • InternalResourceViewResolver:用于解析内部资源视图名称的视图解析器。
  • JspViewResolver:用于解析JSP视图名称的视图解析器。
  • BeanNameViewResolver:用于解析bean名称视图名称的视图解析器。

SpringMVC工作流程示例

下面我们通过一个示例来说明SpringMVC的工作流程:

  1. 用户在浏览器中输入一个URL,如“http://localhost:8080/hello”。
  2. 请求进入到DispatcherServlet,DispatcherServlet会根据请求信息,通过HandlerMapping找到对应的控制器方法,如“HelloController.hello()”。
  3. DispatcherServlet调用HandlerAdapter将控制器方法“HelloController.hello()”适配到DispatcherServlet。
  4. DispatcherServlet调用“HelloController.hello()”方法,并得到返回结果。
  5. DispatcherServlet将返回结果传递给ViewResolver,ViewResolver将返回结果解析为实际的视图对象,如“hello.jsp”。
  6. DispatcherServlet将视图对象返回给客户端。

以上就是SpringMVC的工作流程。