Spring MVC工作流程以及请求处理流程
发布日期:2021-06-30 12:25:36 浏览次数:2 分类:技术文章

本文共 1284 字,大约阅读时间需要 4 分钟。

SpringMVC主要是通过前端控制器controller中的注解来完成请求处理的。前段请求从web.xml中servlet的配置开始,根据servlet拦截的url-parttern,来进行请求转发控制。

处理请求的流程

具体执行步骤如下:

1、首先用户发送请求————>前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图2-1中的1、2步骤;

2、页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在Spring Web MVC中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名);图2-1中的3、4、5步骤;

3、前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图2-1中的步骤6、7;

4、前端控制器再次收回控制权,将响应返回给用户,图2-1中的步骤8;至此整个结束。

工作流程

Spring MVC工作流程
工作流程描述如下:

  1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;

  2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;

  3. DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(…)方法)

  4. 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:

    HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息数据转换:对请求消息进行数据转换。如String转换成Integer、Double等数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中.

  5. Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象;

  6. 根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;

  7. ViewResolver 结合Model和View,来渲染视图

  8. 将渲染结果返回给客户端。

转载地址:https://javaedge.blog.csdn.net/article/details/106542816 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:SpringMVC源码解析之Last-Modified缓存机制
下一篇:SpringMVC源码解析之HandlerAdapter

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月06日 00时15分51秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

OpenCV(二) —— 颜色通道提取 & 边界填充 & 数值计算 & 图像融合 2019-04-30
OpenCV四) —— 图像形态学处理(腐蚀操作 & 膨胀操作 & 开运算与闭运算 & 梯度运算 & 礼貌与黑帽) 2019-04-30
OpenCV(五) —— 图像梯度处理(Sobel算子 & Scharr算子) 2019-04-30
OpenCV(六) —— 边缘检测(高斯滤波器 & 非极大值抑制 & 双阈值检测) 2019-04-30
OpenCV(七) —— 图像金字塔(拉普拉斯金字塔) & 轮廓检测(轮廓特征 & 轮廓近似 & 边界矩形 & 外接圆 & 傅里叶变换) 2019-04-30
OpenCV(八) —— 直方图(mask操作 & (自适应)直方图均衡化) & 模板匹配 & 图像特征(harri角点检测) 2019-04-30
TPU & 使用TPU训练tensorflow初探(Colab) 2019-04-30
单目深度估计 monodepth2模型 代码 2019-04-30
搜索中的TSA(树搜索算法) & GSA(图搜索算法) & UCS(代价一致) & CSP(约束满足问题) 2019-04-30
位图索引Bitmap indexes 2019-04-30
YOLO算法(二)—— Yolov2 & yolo9000 2019-04-30
YOLO算法(三)—— Yolov3 & Yolo系列网络优缺点 2019-04-30
Python的__future__模块 2019-04-30
Paper reading —— Semantic Stereo Matching with Pyramid Cost Volumes(SSPCV-Net) 2019-04-30
计算机视觉中的cost-volume的概念具体指什么(代价体积) 2019-04-30
Paper reading——Pyramid Stereo Matching Network(PSM-Net) 2019-04-30
启发函数heuristic 与 A* 2019-04-30
什么是non-trivial 2019-04-30
Nest Loop Join嵌套循环连接 2019-04-30
Paper reading——PWC-Net: CNNs for Optical Flow Using Pyramid, Warping, and Cost Volume(PWC-Net) 2019-04-30