首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

springMVC 流程

springMVC流程控制

SpringMVC流程

web.xml 中配置 org.springframework.web.servlet.DispatcherServlet 这一步其实和spring mvc没有关系,可理解为一个普通的servlet的配置

客户端请求抵达前端控制器【又称为中央控制器】DispatcherServlet

DispatcherServlet根据请求路径【path】去请求处理器映射器HandlerMappering,【HandlerMappering是在spring ioc容器加载时创建的,不了解的可以查看文章spring ioc & wb 宿主,创建时会遍历所有bean,把含有RequestMapping注解的方法和其value值建立映射关系】,所以现在可以根据path直接找到对应的handler【即controller中的某个标有RequestMapping注解的方法】,把hander和对应的HanderInterceptor【如果有】一起作为一个HandlerExecutionChain返回

根据HandlerExecutionChain中的hander的类型,查到合适的HanderAdapter去处理【HanderAdapter也是在springioc容器加载时创建的】,用到了适配器模式,方便后续扩展

根据合适的HandlerAdapter去执行handler【即controller中带有RequestMapping的注解的方法】

Handler执行完后给处理器适配器HandlerAdapter返回ModelAndView,同样handlerAdapter把ModelAndView返回给前端控制器DispatcherServlet

前端控制器请求最后调用processDispatchResult针对返回的结果ModelAndView进行处理,也就是调用视图解析器(ViewResolver)去进行视图解析,如果此时Hander返回的不是ModelAndView【API接口返回JSON数据时Handler一般返回的是一个实体对象而不是ModelAndView,那么ModelAndView就是Null】,如果ModelAndView是Null,则此时处理流程处理就已经完成了

如果ModelAndView不为Null,则视图解析器ViewResolver根据ModelAndView向前端控制器返回View【真正的物理视图】

前端控制器对视图进行渲染,调用其Render方法开始解析视图

前端控制器向用户响应结果

总结

springMVC的流程比较复杂,我们可以把其拆分成几个具体的组件逐个学习,比如 前端控制器(DispatcherServlet)、处理器映射器(HandlerMapping)、处理器(Handler)、处理器适配器(HandlerAdapter)、视图解析器(ViewResovler)。

后续我们也将针对这些组件逐个进行讲解……………

微信公众号:宋坤明

如果您觉得对您有所帮助,记得转发点赞哦

如有问题或建议,请公众号留言或者直接微信联系我

下面的是我的公众号二维码图片,欢迎关注我。

图注:宋坤明公众号

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180609G1CBY500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券