zoukankan      html  css  js  c++  java
  • springMVC 流程

    springMVC流程控制springMVC流程控制

    SpringMVC流程

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

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

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

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

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

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

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

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

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

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

    总结

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

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

    微信公众号:宋坤明
    如果您觉得对您有所帮助,记得转发点赞哦
    如有问题或建议,请公众号留言或者直接微信联系我
    下面的是我的公众号二维码图片,欢迎关注我。

    图注:宋坤明公众号图注:宋坤明公众号

  • 相关阅读:
    HTTPS安全超文本传输协议
    前端性能监控工具
    跨域:跨域及解决方法
    源码安装nginx
    浏览器工作原理(四):浏览器事件解读
    浏览器工作原理(三):js运行机制及Event Loop
    前端性能优化:gzip压缩文件传输数据
    Vue源码学习(零):内部原理解析
    netsh命令操作ipsec
    netsh命令操作防火墙
  • 原文地址:https://www.cnblogs.com/skm-blog/p/9160656.html
Copyright © 2011-2022 走看看