返回
SpringMVC源码剖析之SpringMVC工作流程
后端
2024-01-20 09:27:36
从请求进入到控制器方法,到视图的返回,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的工作流程:
- 用户在浏览器中输入一个URL,如“http://localhost:8080/hello”。
- 请求进入到DispatcherServlet,DispatcherServlet会根据请求信息,通过HandlerMapping找到对应的控制器方法,如“HelloController.hello()”。
- DispatcherServlet调用HandlerAdapter将控制器方法“HelloController.hello()”适配到DispatcherServlet。
- DispatcherServlet调用“HelloController.hello()”方法,并得到返回结果。
- DispatcherServlet将返回结果传递给ViewResolver,ViewResolver将返回结果解析为实际的视图对象,如“hello.jsp”。
- DispatcherServlet将视图对象返回给客户端。
以上就是SpringMVC的工作流程。