zoukankan      html  css  js  c++  java
  • spring MVC 原理及源码解析

    首先要知道springmvc的核心控制器dispatcherServlet(继承自httpServlet)

    一般httpServlet的请求过程:

    1、初始化(创建servlet实例时)时会执行servlet的init()方法对httpServlet进行初始化。

    2、当一个请求request到来,会执行service()方法,在service方法中根据请求类型调用doGet()或者doPost()方法。(所以可以继承httpServlet然后重写service(或者doGet()、doPost()方法完成自己的业务逻辑))。

    3、服务器关闭后执行servlet的destroy方法。

    dispatcherServlet继承链:

    springMvc的请求过程:

    1、初始化时会执行init()方法,该方法在dispatcherServlet类的父父类HttpServletBean中。

    2、一个request请求过来,首先请求到HttpServlet的service()方法中,在子类FrameworkServlet中重写了doGet()和doPost()方法等等,然后调用processRequest()方法,在processRequest()中调用dispatcherServlet的doService()方法,接着调用doDispatch()方法(主要方法)。

    3、在doDispatch()方法中获取处理器调用链HandlerExecutionChain(里面有处理器对象handler和处理器相关的拦截器interceptors),根据处理器对象找到支持的处理适配器HandlerAdapter,然后执行处理器适配器的handle(内部使用反射调用具体方法)返回一个ModelAndView对象,然后在render()中调用视图解析器(ViewResolver)

    看doDispatch()

    使用的这个类 HandlerExecutionChain(处理器调用链),(类中包含处理器对象和处理器相关的拦截器),

    HandlerExecutionChain获取方式:通过HandlerMapping(保存请求到Controller的映射)获取

    HandlerAdapter:处理适配器,主要是用来调用具体的方法对用户的请求进行处理。

     注解的配置:

  • 相关阅读:
    【转载】Git和Repo扫盲——如何取得Android源代码 .
    【转载】玩转C链表
    【转载】彩色 LCD 接口
    【转载】LCD DBI接口与DPI接口
    【原创】Display interface types supported
    【转载】交叉编译的基本概念
    【转载】谈谈Linux内核驱动的coding style
    深层神经网络
    Renju 方案(draft)
    Mathematica练习
  • 原文地址:https://www.cnblogs.com/huangyin/p/8676831.html
Copyright © 2011-2022 走看看