前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring技术知识点总结之二——SpringMVC DispatcherServlet

Spring技术知识点总结之二——SpringMVC DispatcherServlet

作者头像
剑影啸清寒
发布2020-07-10 11:19:13
4340
发布2020-07-10 11:19:13
举报
文章被收录于专栏:琦小虾的Binary

接上篇《Spring技术知识点总结之一——循环依赖》

二. SpringMVC DispatcherServlet

参考网址: 《SpringMVC 常见面试题总结(超详细回答)》 类似于使用大全的文章,比较长,适合查询:《深入理解 Spring MVC 思想》

SpringMVC 请求执行流程:

2.1 获取处理方法

  1. Spring 容器在启动时,会载入若干 HandlerMapping 实例到 DispatcherServlet 中,并将方法信息存储到映射注册器 MappingRegistry 中。请求进入后,根据 request 信息,调用接口方法 getHandler,该方法会在初始化后的 MappingRegistry 中寻找匹配的处理器方法 HandlerMethod
    • 服务获取客户端发来的 HTTP 请求,进入 DispatcherServlet#service() 方法,然后进入 doDispatch() 方法;
  2. 根据 HandlerMethod,封装得到统一的接口处理器 HandlerAdapter 中;
    • HandlerMethod 经过处理后包装为 HandlerExecutionChain 类型;

2.2 执行 Controller 方法

  1. 预处理:如果注册了拦截器 (HandlerInterceptor interceptor),则逐个执行拦截器的预处理方法,
  2. 执行处理器适配器 HandlerAdapter 中的方法,通过反射调用对应的 Controller 方法,进行逻辑处理并返回,处理返回值;返回值为 ModelAndView 类;
    • ModelAndView 中有数据结果 (ModelMap model) 以及视图 (Object view);其中 view 并不是真实的视图,而是逻辑视图名,ViewResolver 可以通过逻辑视图名获取真正的视图对象;
  3. 后处理:如果注册了拦截器 (HandlerInterceptor interceptor),则逐个执行拦截器的后处理方法;

2.3 渲染视图

  1. 根据处理结果 ModelAndView 中的逻辑视图,在视图解析器集合中匹配 ViewResolver,通过匹配到的视图解析器获取真实的视图对象 (View view);
  2. 视图根据数据结果 model 渲染;
  3. 将渲染的最后结果存入响应 response,返回客户端;

注:关于容器启动了之后做了哪些主要工作,见本文容器初始化部分;

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二. SpringMVC DispatcherServlet
    • 2.1 获取处理方法
      • 2.2 执行 Controller 方法
        • 2.3 渲染视图
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档