我是靠谱客的博主 俭朴小虾米,最近开发中收集的这篇文章主要介绍SpringMVC-详解一个http请求是如何被成功处理的,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文基于spring 5.5.2.release

项目中一直在使用SpringMVC,自信对它很了解,但是前几天测试环境出了一个问题,才发现对它的了解远远不够。于是我计划开一个springmvc的专栏,详细介绍请求处理逻辑,以及它的各个组件功能。今天是第一篇关于springmvc的文章,先从整体上看一下springmvc的逻辑。
下图是springmvc的一个经典图,图中最重要的是DispatcherServlet,它是整个处理过程的核心,它将各个组件串在一起,完成一次http请求。
在这里插入图片描述
DispatcherServlet实现了Servlet接口,因此它可以接受http请求,springmvc将所有的请求都发送给DispatcherServlet,下面看一下它对请求的处理过程:

  1. 遍历HandlerMapping找到对应的Controller,HandlerMapping的作用是根据请求参数找到对应的Handler,每个Handler对象包含了一个Controller,springmvc提供了多种HandlerMapping,每种HandlerMapping都可以根据某个请求参数查找对应的Handler;
  2. 找到Controller后,调用Controller处理请求获得返回结果,不过springmvc不是直接调用Controller,而是通过适配器(HandlerAdapter),适配器在调用前,会处理Controller方法入参,包括类型转换,参数校验等,Controller返回结果后,适配器根据配置对返回结果做不同的处理,比如可以将返回值直接返回客户端,请求结束;还可以将返回结果组装成ModelAndView对象,以进行后续处理;
  3. 如果上一步创建了ModelAndView对象,那么接下来遍历ViewResolver,以找到合适的View对象,每个View对象可以理解为一个Html页面,或者一个返回给客户端的json串,总之一个View对象代表最终呈现给客户端的内容;
  4. 找到了View对象后,需要对View对象进行渲染,我觉得这个渲染用的比较高端,对View对象的处理显得很奇妙,其实简单的说就是处理页面中的一些参数,将不确定的值转换为确定值,比如jsp页面中判断,显示值等;
  5. View渲染之后,就可以将View对象内容转换为字符串返回给客户端,请求处理结束。

上面这个流程是一个正常的请求处理过程,为了简单,里面忽略了很多细节,在后续文章中会介绍。

最后

以上就是俭朴小虾米为你收集整理的SpringMVC-详解一个http请求是如何被成功处理的的全部内容,希望文章能够帮你解决SpringMVC-详解一个http请求是如何被成功处理的所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部