SpringMVC以条理清晰、易维护、效率高的特点成为当下热门框架之一,应用也非常广泛。但很多同学都仅限于会用,并不真正了解SpringMVC框架,面试问起来也只是会用,显然这是远远不够的,笔者今天就以SpringMVC注解开发为例,为大家讲解一下SpringMVC的执行流程。不当之处,欢迎补充。
一、组件介绍
1.前端控制器(DispatcherServlet)
作用就是接受请求,响应结果。相当于转发器。
2.处理器映射器(HandleMapping)
作用就是解析请求的url,得到请求的uri,查找Handler。
3.处理器适配器(HandlerAdapter)
作用就是按照特定的规则去执行Handler,这也是为什么开发Handler的时候需要满足HandlerAdapter的规则,这样HandlerAdapter才能Handler。这里的Handler指的就是我们在Controller的逻辑处理。找到Handler就是找到对应的Controller。
4.视图解析器(View resolver)
作用就是根据逻辑视图解析成真正的视图。
5.视图(View)
View是一个接口,其实现类能支持不同的View类型,如jsp、freemarker、Excel等。
二、执行流程图
原图片地址:https://www.2cto.com/uploadfile/Collfiles/20161230/20161230093354709.png
三、流程图解读
第一步
用户发起请求到前端控制器DispatchServlet
第二步
DispatchServlet请求处理器映射器HandlerMapping查找Handler,可以根据xml查找,也可以根据注解查找。
第三步
HandlerMapping解析请求的URL,得到uri,查找到处理器执行链HandlerExcutionChain返回给前端控制器DispatchServlet。
第四步
HandlerMapping调用处理器适配器HandlerAdapter去执行Handler
第五步
处理器适配器执行Handler
第六步
Handler执行完给处理器适配器返回一个ModelAndView对象,该对象是SpringMVC框架的一个底层对象,包括了Model和View。
第七步
处理器适配器给前端控制器返回ModelAndView对象。
第八步
前端控制器请求视图解析器View resolver进行视图解析,根据逻辑视图解析成真正的物理视图(jsp、FreeMark等)。
第九步
视图解析器给前端控制器返回View对象
第十步
前端控制器进行视图渲染
第十一步
前端控制器向用户响应结果
以上就是SpringMVC的执行流程,如有不当之处,欢迎指出。