zoukankan      html  css  js  c++  java
  • springmvc源码解读

    一、基础流程

     ApplicationContext初始化时建立所有url和Controller类的对应关系(用Map保存).
    1、url和Controller的beanName保存至Map;
    AbstractUrlHandlerMapping->registerHandler(String urlPath, Object handler);

    2、根据请求url找到对应的Controller,并从Controller中找到处理请求的方法
    DispatcherServlet -> doService() -> doDispatch();

    3、通过反射获取该方法上的注解和参数,解析方法和参数上的注解,最后反射调用方法获取ModelAndView结果视图
    RequestMappingHandlerAdapter ->handleInternal(HttpServletRequest request,HttpServletResponse response, HandlerMethod handlerMethod);

    二、重要组成

    )DispatherServlet
    前端控制器
    1、从HandlerMapping获取HandlerExecutionChain(Controller对象、HandlerInterceptor);
    2、调用拦截器,将HandlerExecutionChain传入HandlerAdapter,返回ModelAndView;
    3、将ModelAndView传入ViewResolver,获得View并返回Response;

    )HandlerMapping
    1、RequestMappingHandlerMapper,获取@Controller及@RequestMapping注释的Bean和拦截器封装成HandlerExecutionChain;

    )HandlerAdapter
    1、RequestMappingHandlerAdapter,获取HandlerAdapter;
    2、RequestResponseBodyMethodProcessor,处理@RequestBody注释参数;
    3、HandlerParamMethodArgumentResolver,解析方法参数,@RequestParam映射,asm编译字节码文件获取入参;
    4、反射调用实际方法;
    5、RequestResponseBodyMethodProcessor,处理@ResponseBody注释参数;
    6、ModelAndViewMethodReturnValueHandler,处理方法返回值,返回ModelAndView;

    )ViewResolver

    三、流程图

     转载至:https://blog.csdn.net/huyang0304/article/details/82997514

  • 相关阅读:
    编译php5.4的时候出现错误----configure: error: in `/usr/local/src/php540/php-5.4.0':
    git之旅【第二篇】
    如何在CentOS 5/6上安装EPEL源
    python之旅【第二篇】
    UML类图
    《大话设计模式》——简单工厂模式
    存储过程与存储函数学习笔记
    Mybatis逆向工程
    Navicat for MySQL安装工具及破解工具
    启动maven的web项目
  • 原文地址:https://www.cnblogs.com/anhaogoon/p/12461431.html
Copyright © 2011-2022 走看看