zoukankan      html  css  js  c++  java
  • springmvc源码分析

    主要类实现逻辑:

    DispatcherServlet>FrameworkServlet>HttpServeltBean>HttpServlet>GenericServlet>Servlet

        视图解析器:

    1
    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

    mvc初始化流程:

    HttpServletBean 
      主要做一些初始化的工作,将web.xml中配置的参数设置到Servlet中。比如创建BeanWrapper,servlet标签的子标签init-param标签中配置的参数。

    FrameworkServlet 
      将Servlet与Spring容器上下文关联。其实也就是初始化FrameworkServlet的属性(在initServletBean()中创建容器上下文)webApplicationContext,这个属性代表SpringMVC上下文,它有个父类上下文,既web.xml中配置的ContextLoaderListener监听器初始化的容器上下文。

            调用OnRefresh()方法加载配置文件等。

    DispatcherServlet 
      调用initStrategies(),初始化8个功能的实现类。比如异常处理、视图处理、请求映射处理等。

    核心组件初始化:

    HandlerMapping,负责映射URL和对应的处理类,将mapping关系保存在handlerMap集合中,将maping中的intercetors保存在adaptedInterceptors数组中。

    HandlerAdapter,处理这个URL对应的请求,自定义各种handler。初始化创建HandlerAdapter对象保存在HandlerAdapter集合中。

    ViewResolver,根据返回的viewName,创建view对象。没有name时,调用resolveViewName方法时调用createView方法,实例化类,用render()渲染jsp页面。

    Controler请求调用实现流程:(Filter加载过程)

    调用doService方法,调用doDispatch方法;

    handlerMappings集合中匹配每个HandlerMapping,返回处理链HandlerExecutionchain, 调用这个类的getHandler(request)方法。

    根据getHandler返回的object对象,在HandlerAdapter集合找到支持的handlerAdapter,执行相应方法返回modelAndview对象。

    模板模式:

    AbstractHandlerMapping和AbstractView。

  • 相关阅读:
    Action<T>和Func<T>委托
    异步委托学习笔记
    .Net身份验证里边的几个基本概念(转)
    线程和进程
    WebClient类的使用
    关于NHibernate的更新和读取操作,及碰见的一点问题
    ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)
    LINQ标准查询操作符学习笔记
    C#3.0中的扩展方法
    NHibernate中的一对多映射
  • 原文地址:https://www.cnblogs.com/shuchen007/p/9173491.html
Copyright © 2011-2022 走看看