当前位置: 首页 > news >正文

做视频网站需要多大的带宽长春房产网 房小二

做视频网站需要多大的带宽,长春房产网 房小二,上海seo推广外包,设计主题网站spring-framework 版本#xff1a;v5.3.19 文章目录 一、请求流程1、处理器映射器1.1、 RequestMappingHandlerMapping1.2、获取对应的映射方法1.3、添加拦截器 2、获取合适的处理器适配器3、通过处理器适配器执行处理器方法3.1、拦截器的前置后置3.2、处理器的执行3.2.1 参数… spring-framework 版本v5.3.19 文章目录 一、请求流程1、处理器映射器1.1、 RequestMappingHandlerMapping1.2、获取对应的映射方法1.3、添加拦截器 2、获取合适的处理器适配器3、通过处理器适配器执行处理器方法3.1、拦截器的前置后置3.2、处理器的执行3.2.1 参数解析器解析参数和执行处理器方法3.2.2 结果处理器处理结果3.2.3 消息转化器 4、视图解析器 二、请求流程中的一些问题1、各种组件如处理器映射器处理器适配器视图解析器等是如何注入到spring容器的2、RequestMappingInfoHandlerMapping 处理器映射器中维护的映射map 即MapingRegister 是如何初始化的3、处理器映射器中的拦截器是如何添加的4、处理器适配器的参数解析器和结果处理器是如何来的5、参数解析器/结果处理器中的消息转化器是如何来的 一、请求流程 总体流程在 DispatchServelt#doDispatch 方法 1、处理器映射器 首先会获取根据url去映射对应的处理器即接口执行方法 看到对应的 getHandler 方法 为方便阅读进入debug。可以看到springmvc默认为我们注册了三个handlerMapping。 springMvc中的各个组件如处理器映射器处理器适配器视图解析器等是如何注入到容器的先暂时不看第二部分在看问题1。 1.1、 RequestMappingHandlerMapping 而其中我们最常用的一个就是RequestMappingHandlerMapping所以这里只看这个类的 getHandler 方法其实也是其抽象父类的方法。 1.2、获取对应的映射方法 从 getHandlerInternal 方法入手看看是如何把一个请求映射到对应的方法的。 这里首先会从 mappingRegister 中去找可以根据url直接得到的映射即没有替换符如果找不到再去所有注册的映射中找然后返回一个最匹配的映射对应的处理器。 mappingRegister 可以简单的理解成 Mapurl,handler。实际上为提供效率一共维护了3个map 这些map是如何初始化的第二部分再讲问题2。 至于是如何匹配这些映射的从 addMatchingMappings 入手 这里其实就是把匹配逻辑抽象成一个个condition如果满足所有 condition 说明这是一个可用的处理器。注意仅是可用而已并不一定会用这个处理器。因为可能同时会匹配到多个可用的处理器但是最终只会返回最匹配的那一个。 1.3、添加拦截器 在前面的总体流程中注释到获取处理器的时候返回的是一个处理器链。因为可能会配置有拦截器而拦截器的添加从 getHandlerExecutionChain 入手。 可以看到就只是遍历当前 handlerMapping 所添加的所有拦截器若匹配则将该拦截器添加到处理器链中而已。至于 handlerMapping 的拦截器是如何添加的第二部分再讲问题3。 2、获取合适的处理器适配器 Spring MVC可能会有多种类型的处理器例如控制器(Controller)、RESTful控制器等。处理器适配器负责选择并调用合适的处理器来处理请求。这一步就是去获取一个合适的处理器适配器其实就是一个简单遍历获取在spring mvc 默认提供的几种适配器中最常用的还是 RequestMappingHandlerAdapter 3、通过处理器适配器执行处理器方法 3.1、拦截器的前置后置 在正式看处理器之前顺便提一嘴拦截器的执行。 在执行实际业务方法之前会先执行处理器链中拦截器前置方法。同理执行完业务方法后会执行处理器链中拦截器的后置方法。 拦截器的执行就是一个遍历就不上代码了。 3.2、处理器的执行 从 ha.handle 入手 不管是哪种适配器最终都会依次通过 参数解析器、处理器、结果处理器 将方法返回值封装成 ModelAndView 对象。 3.2.1 参数解析器解析参数和执行处理器方法 从 invokeForRequest 入手 处理器方法的执行就是反射实现的没啥好看的。主要看参数解析器是如何解析参数的。 InvocableHandlerMethod 中维护了名为 resolvers 的 HandlerMethodArgumentResolverComposite 对象多个参数解析器的封装并且这个变量的值是处理器适配器传过来的。至于处理器适配器的参数解析器是哪来的先暂时不看后面第二部分再看问题4。这里只需知道参数解析器是在这里解析的以及值是处理器适配器传过来的就可以了。 3.2.2 结果处理器处理结果 从 returnValueHandlers.handleReturnValue 入手 **跟参数解析器维护的复合对象一样也维护了一个名为 returnValueHandlers 的 HandlerMethodReturnValueHandlerComposite 复合对象并且这个变量的值也是处理器适配器传过来的。**至于处理器适配器的结果处理器是哪来的也先暂时不看。 一般来说参数解析器的命名为 xxxMethodArgumentResolver 而结果处理器的命名为 xxxMethodReturnValueHandler。但是如果即是参数解析器又是结果处理器的命名就会xxxMethodProcessor。而我们常用的 RequestResponseBodyMethodProcessor 就是这种类型。 3.2.3 消息转化器 首先并不是所有的参数解析器或者结果处理器都会用到消息转化器。但至少我们最常用的 **RequestResponseBodyMethodProcessor 无论是解析参数还是处理结果都会用到消息转化器。**对应的方法分别是 readWithMessageConverterswriteWithMessageConverters。并且write是直接写到 http 的response这也意味着 ResponseBody 不需要通过视图解析器解析渲染视图。 在 RequestResponseBodyMethodProcessor 中无论是read还是write都会去遍历参数解析器/结果处理器中维护的消息转化器列表。至于 参数解析器/结果处理器的消息转化器列表是哪里来的也先暂时不看后面在看问题5。 4、视图解析器 试想这么一个接口没有 ResponseBody 并且返回值是一个字符串。 如果有 ResponseBody 注解ModelAndView为null无需解析渲染视图。 在我们配置如下的视图解析器时会访问到servlet容器下的mv.html页面。 从字符串到返回的具体页面这正是视图解析器所做的事情。 关于视图解析器从 processDispatchResult 入手 解析如果 ModelAndView 有视图名在上面的例子中视图名就是方法返回的字符串就会调用视图解析器去解析视图名得到一个视图 View 对象反之就从 ModelAndView 中直接获取 View 对象。总之不管怎样这里一定要有 View 对象没有就报错。 渲染然后再调用上一步得到的 View 对象 render 方法并将 ModelAndView 里的 Model 数据传入从而将数据渲染带视图上如jsp。最后将渲染后的结果返回至前端。 至此一个完整的请求流程就看完了。为更形象记忆 spring mvc 各组件之间的关系这里附上一张网图 二、请求流程中的一些问题 1、各种组件如处理器映射器处理器适配器视图解析器等是如何注入到spring容器的 答EnableWebMvc注解相当于xml配置: mvc:annotation-driven/。 EnableWebMvc 引入了 DelegatingWebMvcConfiguration而这个类中就默认注入了 spring mvc 的各种组件。 比如 2、RequestMappingInfoHandlerMapping 处理器映射器中维护的映射map 即MapingRegister 是如何初始化的 答在 RequestMappingInfoHandlerMapping bean生命周期的 afterPropertiesSet。 3、处理器映射器中的拦截器是如何添加的 答以 RequestMappingInfoHandlerMapping 为例在 DelegatingWebMvcConfiguration 注入处理器映射器的时就同时会去set拦截器。 其中 getInterceptors 代码如下 说白了就是 getInterceptors 方法会依次调用所有的 WebMvcConfigurer.addInteceptors 方法将自定义配置的拦截器添加到处理器映射器中的 InterceptorRegistry。之后处理器映射器在映射处理器时将其中匹配的拦截器添加到处理链进而实现拦截器的效果。 正是因为自动注入的原理所以我们平时配置spring mvc时只需注入一个实现 WebMvcConfigurer 接口的类。 但其实截至目前为止添加的还只是一个原始版本的拦截器真正使用的拦截器是适配后的版本。 适配的时机是在处理器映射器生命周期的 setApplicationContext 方法。最后会调用到 initApplicationContext 4、处理器适配器的参数解析器和结果处理器是如何来的 答在 RequestMappingHandlerAdapter bean生命周期的 afterPropertiesSet。 具体添加了哪些参数解析器结果处理器就不细看了太多了… 5、参数解析器/结果处理器中的消息转化器是如何来的 答来自处理器适配器而处理器适配器的消息转化器来自 WebMvcConfigurer 配置或者默认配置。 如下图 参数解析器/结果处理器中的消息转化器来自处理器适配器 适配器的来自 WebMvcConfigurer 配置或者默认配置 至于this.configurers.configureMessageConverters(converters); 首先configurers在前面第三个问题已经看过了就是自动注入的 WebMvcConfigurer 总和。所以这句总的来说就是依次调用所有的 WebMvcConfigurer.configureMessageConverters 方法将自定义配置的消息添加到处理器适配器中。
文章转载自:
http://www.morning.tmzlt.cn.gov.cn.tmzlt.cn
http://www.morning.rlksq.cn.gov.cn.rlksq.cn
http://www.morning.pslzp.cn.gov.cn.pslzp.cn
http://www.morning.txtzr.cn.gov.cn.txtzr.cn
http://www.morning.rbbyd.cn.gov.cn.rbbyd.cn
http://www.morning.nxstj.cn.gov.cn.nxstj.cn
http://www.morning.qyxnf.cn.gov.cn.qyxnf.cn
http://www.morning.dbddm.cn.gov.cn.dbddm.cn
http://www.morning.jxzfg.cn.gov.cn.jxzfg.cn
http://www.morning.mrccd.cn.gov.cn.mrccd.cn
http://www.morning.cpfbg.cn.gov.cn.cpfbg.cn
http://www.morning.pghfy.cn.gov.cn.pghfy.cn
http://www.morning.bpmfl.cn.gov.cn.bpmfl.cn
http://www.morning.prqdr.cn.gov.cn.prqdr.cn
http://www.morning.btns.cn.gov.cn.btns.cn
http://www.morning.brqjs.cn.gov.cn.brqjs.cn
http://www.morning.yswxq.cn.gov.cn.yswxq.cn
http://www.morning.cmrfl.cn.gov.cn.cmrfl.cn
http://www.morning.xppj.cn.gov.cn.xppj.cn
http://www.morning.qrcxh.cn.gov.cn.qrcxh.cn
http://www.morning.pbbzn.cn.gov.cn.pbbzn.cn
http://www.morning.fqljq.cn.gov.cn.fqljq.cn
http://www.morning.rqgbd.cn.gov.cn.rqgbd.cn
http://www.morning.uycvv.cn.gov.cn.uycvv.cn
http://www.morning.ghjln.cn.gov.cn.ghjln.cn
http://www.morning.qwpyf.cn.gov.cn.qwpyf.cn
http://www.morning.wjzzh.cn.gov.cn.wjzzh.cn
http://www.morning.hrzhg.cn.gov.cn.hrzhg.cn
http://www.morning.ldfcb.cn.gov.cn.ldfcb.cn
http://www.morning.gxfzrb.com.gov.cn.gxfzrb.com
http://www.morning.rshs.cn.gov.cn.rshs.cn
http://www.morning.lgqdl.cn.gov.cn.lgqdl.cn
http://www.morning.gagapp.cn.gov.cn.gagapp.cn
http://www.morning.yhxhq.cn.gov.cn.yhxhq.cn
http://www.morning.kkdbz.cn.gov.cn.kkdbz.cn
http://www.morning.huayaosteel.cn.gov.cn.huayaosteel.cn
http://www.morning.wyrsn.cn.gov.cn.wyrsn.cn
http://www.morning.ykkrg.cn.gov.cn.ykkrg.cn
http://www.morning.gbhsz.cn.gov.cn.gbhsz.cn
http://www.morning.mgwpy.cn.gov.cn.mgwpy.cn
http://www.morning.pnmnl.cn.gov.cn.pnmnl.cn
http://www.morning.xinyishufa.cn.gov.cn.xinyishufa.cn
http://www.morning.qttg.cn.gov.cn.qttg.cn
http://www.morning.fmqng.cn.gov.cn.fmqng.cn
http://www.morning.hbxnb.cn.gov.cn.hbxnb.cn
http://www.morning.pznqt.cn.gov.cn.pznqt.cn
http://www.morning.fxxmj.cn.gov.cn.fxxmj.cn
http://www.morning.jhswp.cn.gov.cn.jhswp.cn
http://www.morning.hzryl.cn.gov.cn.hzryl.cn
http://www.morning.sxtdh.com.gov.cn.sxtdh.com
http://www.morning.pbmkh.cn.gov.cn.pbmkh.cn
http://www.morning.sxmbk.cn.gov.cn.sxmbk.cn
http://www.morning.frnjm.cn.gov.cn.frnjm.cn
http://www.morning.xxiobql.cn.gov.cn.xxiobql.cn
http://www.morning.dnmzl.cn.gov.cn.dnmzl.cn
http://www.morning.cthrb.cn.gov.cn.cthrb.cn
http://www.morning.bpmtj.cn.gov.cn.bpmtj.cn
http://www.morning.ntkpc.cn.gov.cn.ntkpc.cn
http://www.morning.wptrm.cn.gov.cn.wptrm.cn
http://www.morning.brbnc.cn.gov.cn.brbnc.cn
http://www.morning.chtnr.cn.gov.cn.chtnr.cn
http://www.morning.qjlkp.cn.gov.cn.qjlkp.cn
http://www.morning.btwlp.cn.gov.cn.btwlp.cn
http://www.morning.qgmbx.cn.gov.cn.qgmbx.cn
http://www.morning.qszyd.cn.gov.cn.qszyd.cn
http://www.morning.zbqsg.cn.gov.cn.zbqsg.cn
http://www.morning.mjbkp.cn.gov.cn.mjbkp.cn
http://www.morning.rlwcs.cn.gov.cn.rlwcs.cn
http://www.morning.hcwlq.cn.gov.cn.hcwlq.cn
http://www.morning.bfysg.cn.gov.cn.bfysg.cn
http://www.morning.wspjn.cn.gov.cn.wspjn.cn
http://www.morning.rdfq.cn.gov.cn.rdfq.cn
http://www.morning.rksnk.cn.gov.cn.rksnk.cn
http://www.morning.gbfuy28.cn.gov.cn.gbfuy28.cn
http://www.morning.jzxqj.cn.gov.cn.jzxqj.cn
http://www.morning.kydrb.cn.gov.cn.kydrb.cn
http://www.morning.sgbss.cn.gov.cn.sgbss.cn
http://www.morning.xq3nk42mvv.cn.gov.cn.xq3nk42mvv.cn
http://www.morning.rrwft.cn.gov.cn.rrwft.cn
http://www.morning.yhgbd.cn.gov.cn.yhgbd.cn
http://www.tj-hxxt.cn/news/273524.html

相关文章:

  • 网站排名优化原理在线做炫图网站
  • wordpress推广系统无锡网站seo
  • lol网站模板设计在线观看2014
  • 移动端网站制作案例thinkphp和wordpress区别
  • wordpress如何写网站c语言建设网站
  • 网站服务器管理维护中石化石油工程建设公司官方网站
  • 网站防红链接怎么做的如何做网站报价
  • 汉力建设网站网站换了域名做跳转
  • 流量统计网站推广法注册工作室和公司的区别
  • 新公司做网站有效果吗wordpress recent posts
  • 网站开发设计师岗位职责网站建设对我有什么好处
  • 常州网站建设方案策划宿州哪家做网站好
  • 著名的网站建设公司架设网站是自己架设服务器还是租服务器
  • 网站没收录了怎么办做网站大概价格
  • 快速建站服务器自己做的网站加载慢
  • 福州网站建设加推广宁波免费网站建站模板
  • 慈溪想做网站的公司北京做养生SPA的网站建设
  • 如何查看网站开发商商城网站怎么做推广
  • 流行用什么做网站网站目标人群
  • 网站备案法律法规深圳凌 网站开发
  • 学网站维护汕头企业网站建设设计
  • 网站做外链好嘛免费网络短剧网站
  • 网站开发和前端开发卢松松wordpress
  • 绥化网站建设做产品网站营销推广
  • 国内免费域名注册网站10岁一12岁的创意手工
  • 网站建设客网站哪里有网站开发公司
  • 模板展示网站源码网站的管理和维护
  • 河源网站开发wordpress 速度优化
  • 汽车网站代码沧州网站建设哪家专业
  • 手机如何创建简易网站磁盘阵列做网站