`
y806839048
  • 浏览: 1080499 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

springMvc源码大致过程

阅读更多

web.xml加载DispatcherServlet(子类兼有自己特性还有父类所有的特性,若有覆盖方法的用子类自己的,父类的某个方法有入口作用

那么如果用子类的话(子类 覆盖了这个方法)子类的这个方法也就有了入口特性)

 

源配入口

 

DispatcherServlet--》应用上下文初始化--》执行转发--》通过各种拦截器--》最终跳转

 

FrameworkServlet

  public void onApplicationEvent(ContextRefreshedEvent event)

  {

    this.refreshEventReceived = true;

    onRefresh(event.getApplicationContext());

  }

  

  protected void onRefresh(ApplicationContext context) {}///框架在写接口时会自己先写一个抽象的供自己调用,后面有子类继承他的时候覆写这个方法就会在子类中

  调用这个具体方法了

  

 

 

  DispatcherServlet

 

 protected void onRefresh(ApplicationContext context)

  {

    initStrategies(context);

  }

 

  protected void initStrategies(ApplicationContext context)

  {

    initMultipartResolver(context);

    initLocaleResolver(context);

    initThemeResolver(context);

    initHandlerMappings(context);

    initHandlerAdapters(context);

    initHandlerExceptionResolvers(context);

    initRequestToViewNameTranslator(context);

    initViewResolvers(context);

    initFlashMapManager(context);

  }

 

 

 

 

 

protected void doService(HttpServletRequest request, HttpServletResponse response)

    throws Exception

  {

  

  

    doDispatch(request, response);

 

 

  }

 

 protected void doDispatch(HttpServletRequest request, HttpServletResponse response)

    throws Exception

  {

 mappedHandler.applyPostHandle(processedRequest, response, mv);

 processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);

 

}

 

 

 

  private void processDispatchResult(HttpServletRequest request, HttpServletResponse response, HandlerExecutionChain mappedHandler, ModelAndView mv, Exception exception)

    throws Exception

  {

    boolean errorView = false;

    if (exception != null) {

      if ((exception instanceof ModelAndViewDefiningException))

      {

        this.logger.debug("ModelAndViewDefiningException encountered", exception);

        mv = ((ModelAndViewDefiningException)exception).getModelAndView();

      }

      else

      {

        Object handler = mappedHandler != null ? mappedHandler.getHandler() : null;

        mv = processHandlerException(request, response, handler, exception);

        errorView = mv != null;

      }

    }

    if ((mv != null) && (!mv.wasCleared()))

    {

      render(mv, request, response);

      if (errorView) {

        WebUtils.clearErrorRequestAttributes(request);

      }

    }

    else if (this.logger.isDebugEnabled())

    {

      this.logger.debug("Null ModelAndView returned to DispatcherServlet with name '" + getServletName() + "': assuming HandlerAdapter completed request handling");

    }

    if (WebAsyncUtils.getAsyncManager(request).isConcurrentHandlingStarted()) {

      return;

    }

    if (mappedHandler != null) {

      mappedHandler.triggerAfterCompletion(request, response, null);

    }

  }

分享到:
评论

相关推荐

    手撸springMvc源码【一】

    大致流程 1. springMvc基本概念 MVC作为WEB项目开发的核心环节,正如三个单词的分解那样,C(控制器)将V(视图、用户客户端)与M(javaBean:封装数据)分开构成了MVC。 2. springMvc 核心流程 反射,类加载,...

    JavaEE-SpringMVC-云借阅图书管理系统(包含源码、数据库sql文件、报告)

    云借阅图书管理系统:全部源码打包。含有数据库sql文件,简单报告书介绍,通过课设验收。 架构: 持久对象层(持久层或持久化层):该层由若干持久化类(实体类)组成。 数据访问层(DAO层):该层由若干DAO接口和...

    基于SSM+Vue的协同过滤算法的电影推荐系统(源码+部署说明+系统介绍+源码解释).zip

    整个系统的实现过程大致如下: 用户登录后,进入用户管理模块,获取用户的基本信息和历史观影记录。 用户在电影管理模块中添加自己感兴趣的电影,并填写电影的相关信息。 用户在电影推荐模块中输入自己的兴趣标签...

    基于SSM+Vue的医药进出口交易系统(源码+部署说明+系统介绍+源码解释).zip

    整个系统的实现过程大致如下: 用户登录后,进入用户管理模块,获取用户的基本信息和权限。 用户在商品管理模块中添加自己感兴趣的商品,并填写商品的相关信息。 用户在订单管理模块中选择要购买的商品,填写订单...

    基于SSM框架+mysql开发的一个博客系统项目源码+项目说明.zip

    使用SSM框架开发的一个博客系统,包含的功能大致有: 1.用户注册与激活,激活方式通过邮件激活 2.用户的登录和退出,包括账号登录、手机快捷登录和qq第三方登录 3.用户账号登录和注册时需要输入验证码验证 4.首页...

    ssm框架视频电影管理系统影音项目源代码

    使用Spring+SpringMVC+MyBatis架构,数据库使用MySQL,将电影网站大致分为用户管理、资源管理、评论管理、收藏管理等四大模块,管理员从后端添加电影资源并赋予资源的信息如名称、图片、时长、电影上映时间、评分、...

    过滤器与拦截器的区别

    和框架的其他功能一样,原理很简单,使用起来也很简单,大致看了下SpringMVC这一部分的源码,其实还是比较容易理解的。  我们项目中仅仅用到了preHandle这个方法,而未用其他的,框架提供了一个已经实现了拦截器...

    百度地图毕业设计源码-MyStudyNote:我的学习历程笔记

    百度地图毕业设计源码 GitHub ReadMe tags: MyGitHub 临时存放 .LOG 毕业设计题目是B/S模式下的办公家具企业连锁店管理系统的设计与实现 目录 [TOC] 到现在为止已经完成的工作有 1.需求分析:系统用户有哪些,系统有...

    leetcode中国-Coding:编程知识笔记,Keepgoing~

    项目维护的大致方向 基础知识 设计模式 redis jdk源码 spring mybatis springmvc 分布式 mq 微服务 仓库Github的访问比较慢,电信如果屏蔽,自行把DNS服务器指定到 114.114.114.114。后期可能同步到Gitee上,解决...

    最新基于SSM框架二手手机回收平台系统.zip

    这个系统采用了Java作为开发语言,并结合了Spring、SpringMVC和MyBatis(SSM)框架,实现了一个B/S架构的解决方案。系统的前端提供了一个用户友好的界面,而后端则采用了MySQL数据库来存储和管理数据,整个项目由...

Global site tag (gtag.js) - Google Analytics