SpringMvc的执行流程及工作原理

发布时间 2023-07-31 11:53:54作者: 吉田sang

 

先上图
针对流程图解析一下:

用户发送请求至前端控制器DispatcherServlet
前端控制器 DispatcherServlet收到请求调用处理器映射器HandlerMapping。
处理器映射器根据请求url找到具体的处理器,生成处理器执行链HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给DispatcherServlet
DispatcherServlet根据处理器Handler获取处理器适配器HandlerAdapter执行HandlerAdapter处理一系列的操作,包括但不限于:参数封装,数据格式转换,数据验证等操作
执行处理器Handler(Controller,也叫页面控制器)
执行完成返回ModelAndView
HandlerAdapter接收到 ModelAndView对象后,将其返回给 DispatcherServlet
DispatcherServlet 接收到 ModelAndView 对象后,会请求 ViewResolver(视图解析器)对视图进行解析
ViewReslover解析后返回具体View
DispatcherServlet 接收到具体的 View 视图后,进行视图渲染,将 Model 中的模型数据填充到 View 视图中的 request 域,生成最终的 View(视图)
相应用户请求
我们再对流程里出现的一些组件进行解析

前端控制器(DispatcherServlet):他的主要作用是接受客户端请求以及响应请求,它也是整个SpringMvc执行流程的中心,控制整个流程的执行,对各个组件进行统一调度
处理器映射器(HandlerMapping):其作用是根据请求的 URL 路径,通过注解或者 XML 配置,寻找匹配的处理器(Handler)信息。
处理器(Handler):和 Java Servlet 扮演的角色一致。其作用是执行相关的请求处理逻辑,并返回相应的数据和视图信息,将其封装至 ModelAndView 对象中。
处理器适配器(HandlAdapter):按照特定规则执行相关的处理器(Handler)
ModelAndView:是springmvc的封装对象,将model和view封装在一起。
视图解析器(ViewResolver):ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户
视图(View):其本身是一个接口,View的实现类支持不同类型的视图,例如:jspview,jstlview,pdfview等