摘要 简单介绍一下当用户在客户端发起请求后,Spring MVC 的执行流程,提升自己对Spring框架的认知层次。一言以蔽之,解答【Spring MVC的工作原理是什么】,这是一个热点面试题。
Spring Web 框架是围绕前端控制器DispatcherServlet设计的,DispatcherServlet是servlet接口的一个实现类,主要用于接收客户端符合要求的请求并将服务端处理结果发送至客户端。
简述Spring MVC的工作内容:
- 服务端接收用户请求;
- 指定应用程序实现客户需求;
- 将应用程序处理的结果渲染成视图;
- 客户端响应用户请求(回传渲染后的视图)。
执行流程
Spring MVC执行流程:
1、前端控制器捕获用户请求。用户向服务器发送请求,请求被 Spring 前端控制器DispatcherServlet 捕获。
2、查找Handler。 DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据此URI调用处理器映射器HandlerMapping获得该Handler配置的所有相关的对象(包括 Handler对象以及Handler对象对应的拦截器),最后以 HandlerExecutionChain对象的形式返回。
HandlerMapping是撮合URI和Method的红娘,在Spring MVC体系结构中有着举足轻重的地位,充当着配置URI和Controller中Method之间映射关系的角色。一个URI和一个可执行的Method通常是一一映射的关系。
3、Controller执行完成并返回 ModelAndView 对象。DispatcherServlet根据获得的 Handler,匹配一个合适的处理器适配器HandlerAdapter。HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。Controller执行完成后,向 DispatcherServlet 返回一个 ModelAndView 对象。
4、选择视图解析器。DispatcherServlet 根据返回的 ModelAndView,选择一个适合的视图解析器 ViewResolver(必须是已经注册到 Spring 容器中的 ViewResolver) 。
5、通过视图解析器渲染并返回视图。通过 ViewResolver 结合 Model 和 View 渲染视图(即将模型数据Model填充至视图中),DispatcherServlet 将渲染结果传递给客户端。其中的View是视图名称,用于在视图解析器中查找视图。
客户端得到响应,视图可能是一个普通的HTML页面,也可以是XML或JSON字符串,还可以是一张图片或者一个PDF文件。
小结
以上就是Spring MVC 的工作流程,欢迎点赞阅读,一同学习交流;若有疑问,请在文章下方留下你的神评妙论!