DispatcherServlet工作原理,处理流程
2022/9/4 6:54:20
本文主要是介绍DispatcherServlet工作原理,处理流程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
工作原理
1. 当DispatcherServlet接到请求时,他先回查找适当的处理程序来处理请求。DispatcherServlet通过一个或者多个处理程序映射,将每个请求映射到处理程序中。处理程序映射配置在web应用程序的上下文中,是实现了HandlerMapping接口的Bean。它负责为请求返回一个适当的处理程序(也就是Controller)。处理程序映射通常根据请求的URL将请求映射到处理程序(Controller)。
2. 一旦DispatcherServlet选择了适当的控制器,它就会调用这个控制器来处理请求。
3. 控制器处理完请求后,会将模型和视图名(有时候是视图对象)返回给DispatcherServlet。模型包含了控制器要传递给视图进行显示的属性。如果返回的是视图名称,它会被解析成视图对象再进行呈现。绑定模型和视图的基本类是ModelAndView
4. 当DispatcherServlet接收到模型和视图名称时,它会将逻辑视图名称解析成视图对象再进行呈现。DispatcherServlet从一个或者多个视图解析器中解析视图。视图解析器配置在Web应用程序上下文中,是实现了ViewResolver接口的Bean。它的任务是根据逻辑视图名称返回试图对象。
5. 一旦DispatcherServlet将视图名称解析称为试图对象,它就会呈现视图对象,并传递控制器返回的模型。视图的任务是将模型属性展示给用户。
处理流程
在配置好DispatcherServlet之后,当请求交由该DispatcherServlet处理时,其处理流程如下:
1、构造WebApplicationContext被作为属性绑定到请求上以备控制器和其他元素使用。绑定的默认key为DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE。
2、绑定地区解析器到请求上以备解析地区时使用,比如生成视图和准备数据时等等。如果不需要解析地区,则无需使用。
3、绑定主题解析器到请求上以备视图等元素加载主题时使用。
4、如果配置了文件流解析器,则会检测请求中是否包含文件流,如果包含,则请求会被包装为MultipartHttpServletRequest供其他元素做进一步处理。这一部分将会在后面的章节中进行详细说明。
5、搜索合适的处理器处理请求。找到的话,与该处理器相关联的执行链(前拦截器、后拦截器、控制器等)会被执行以准备模型数据或生成视图。
6、如果返回了模型对象,下一步就会进行视图的渲染。如果没有任何模型对象返回,例如因为安全的原因被前拦截器或后拦截器拦截了请求,那么就没有视图会生成,因为该请求已经结束了。
这篇关于DispatcherServlet工作原理,处理流程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26RocketMQ入门指南:搭建与使用全流程详解
- 2024-11-26RocketMQ入门教程:轻松搭建与使用指南
- 2024-11-26手写RocketMQ:从入门到实践的简单教程
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享