前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringMVC工作流程

SpringMVC工作流程

作者头像
名字是乱打的
发布2022-05-13 12:39:35
4050
发布2022-05-13 12:39:35
举报
文章被收录于专栏:软件工程

image.png

讲解看大牛 牛大 牛二

  • 1、 用户发送请求至前端控制器DispatcherServlet。 DispatcherServlet工作原理:它重写父类FrameworkServlet的doService方法,doService中主要设置了一些属性和调用doDispatch方法,doDispatch用来做分发请求和流程控制doDispatch方法解析
  • 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。
  • 3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 这一步会调用getHander返回一个HandlerExecutionChain包含处理器和处理器拦截器
  • 4、 DispatcherServlet调用HandlerAdapter处理器适配器。 获取适配器是通过遍历handlerAdapters列表找的,HandlerAdapter包含了3个方法. boolean supports(Object handler); ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception; long getLastModified(HttpServletRequest request, Object handler);
  • 5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
  • 6、 Controller执行完成返回ModelAndView。
  • 7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。 处理器适配器中applyPreHandle中会遍历该HandlerExecutionChain中所有的拦截器,然后使用拦截器通过preHandle对handler进行预处理,如果所有的拦截器都能处理那就会继续往下执行,如果一旦有一个拦截器不能处理,就没必要往下走了,那就会触发triggerAfterCompletion方法,在triggerAfterCompletion中它是倒序遍历的拦截器的,执行完triggerAfterCompletion返回false之后doDispatch这个方法就执行结束了,下面的八、九、十、十一就不再执行。从第五步括号里的备注也能猜出来HandlerExecutionChain.handler处理器是什么,它可以是Controller。
  • 8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
  • 9、 ViewReslover解析后返回具体View
  • 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。 注意: 渲染视图是前端控制器做的而不是视图解析器
  • 11、 DispatcherServlet响应用户。

源码分析:

https://www.jianshu.com/p/8a20c547e245

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 源码分析:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档