zoukankan      html  css  js  c++  java
  • Spring MVC 工作原理--自我理解

    一个Http请求,大致分为请求->响应过程,其中SpringMvc框架接受请求,处理一系列事情后响应给客户端。

    大家都知道,Tomcat启动监听读取web.xml配置文件,其中servlet配置<load-on-startup>1</load-on-startup> 随服务启动而自动加载org.springframework.web.servlet.DispatcherServlet。

    DispatcherServlet是个关键,没有它就没有SpringMvc应用。它里面包含很多,其中关键点有个HandlerMapping,它是个接口。负责的是@RequestMapping,请求路由处理器。

    首先先来了解下annotation-driven 注解驱动

    1. <mvc:annotation-driven/>

    annotation-driven 注解驱动 在xml中肯定有,那为啥要写,有啥关联?

    其实就是帮我们注册了DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter (可能这2个已经过时了,不过没关系,知道原理就行)

    过时现在最新对应的是RequestMappingHandlerMapping 和 RequestMappingHandlerAdapter ,这更好理解。

    RequestMappingHandlerMapping :看源代码肯定是实现了HandlerMapping接口,它会处理@RequestMapping 注解,并将其注册到请求映射表中

     

     。。。。

    继承很多

    RequestMappingHandlerAdapter:看源代码肯定是实现了HandlerAdapter接口,则是处理请求的适配器,确定调用哪个类的哪个方法,并且构造方法参数,返回值。说白了就是依赖注入处理,

    扫描到的@Component@Controller@Service,@Repository等注解标记的组件注册到工厂中,来处理我们的请求。

    总结: 

    1、说白了注解驱动就干了2件很关键的事情,一个是路由匹配,另一个是注解依赖注入。

    2、结合DispatcherServlet 来看,就是DispatcherServlet 中有一个HandlerMapping接口,annotation-driven去实现它,然后Tomcat 服务启动后自动加载annotation-driven 中的2个bean

    Spring MVC 框架主要由 DispatcherServlet、处理器映射、控制器、视图解析器、视图组成,其工作原理如图 1 所示

      从图 1 可总结出 Spring MVC 的工作流程如下:

    1. 客户端请求提交到 DispatcherServlet。
    2. 由 DispatcherServlet 控制器寻找一个或多个 HandlerMapping,找到处理请求的 Controller。
    3. DispatcherServlet 将请求提交到 Controller。
    4. Controller 调用业务逻辑处理后返回 ModelAndView。
    5. DispatcherServlet 寻找一个或多个 ViewResolver 视图解析器,找到 ModelAndView 指定的视图。
    6. 视图负责将结果显示到客户端。

    再看一张流程图,上下2张结合看,更清楚。

     

  • 相关阅读:
    安卓基础之读取联系人的姓名和电话
    Android基础之6.0系统以上的权限分配
    Android基础之内容提供者的实现
    android中Post方式发送HTTP请求
    安卓基础之Sqlite数据库最最基础操作
    安卓基础之Get方式发送http请求
    安卓基础之国际化
    安卓基础之主题/样式
    安卓基础之Activity的生命周期
    Kotlin入门(14)继承的那些事儿
  • 原文地址:https://www.cnblogs.com/zjtao/p/12175157.html
Copyright © 2011-2022 走看看