SpringMvc---SpringMvc的执行流程

SpringMvc---SpringMvc的执行过程

1、SpringMVC常用组件

  • DispatcherServlet前端控制器,不需要工程师开发,由框架提供

作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求

  • HandlerMapping处理器映射器,不需要工程师开发,由框架提供

作用:根据请求的url、method等信息查找Handler,即将请求和控制器方法建立映射关系

  • Handler处理器,需要工程师开发

作用:在DispatcherServlet的控制下Handler对具体的用户请求进行处理 控制器方法

  • HandlerAdapter处理器适配器,不需要工程师开发,由框架提供

作用:通过HandlerAdapter对处理器(控制器方法)进行执行,调用控制器方法

  • ViewResolver视图解析器,不需要工程师开发,由框架提供

作用:进行视图解析,得到相应的视图,例如:ThymeleafView、InternalResourceView、RedirectView

  • View视图

作用:将模型数据通过页面展示给用户

2、SpringMvc的初始化

DispatcherServlet本质也是一个Servlet,他的生命周期也遵循servlet的规则,初始化也应该从init方法开始。

首先进入DiapatcherServlet中,再进入他的父类FrameworkServlet,再进入FrameworkServlet的父类HttpServletBean、在进入HttpServletBean的父类HttpServlet、再进入HttpServlet的父类GenericServlet、最后发现GenericServlet实现了Servlet的接口。已知在Servlet接口中有一个初始化方法init

使用IDEA左下角工具栏的structure工具可以看见当前类中的方法和继承关系,方法后出现向上的箭头就是来自父类的方法

接下来分别在GenericServlet、HttpServlet、HttpServletBean、FrameworkServlet、DiapatcherServlet中找实现了父类的init方法。发现在GenericServlet中init的工作是把ServletConfig的值赋给成员变量,在HttpServlet中没有实现init方法,在HttpServletBean中init方法调用了一个initServletBean()方法,在initServletBean()方法中什么都没写。在FrameworkServlet中对它父类的initServletBean()进行了编写内容以及再次调用了一个方法initWebApplicationContext(),在initWebApplicationContext()方法中

首先通过工具类的getWebApplicationContext()方法创建了一个WebApplicationContext类型的对象,又在底下再次创建了一个对象。对第二次创建的对象进行判断是否为空。由于是从初始化一路找来的,并没有对这个对象进行任何操作,他肯定为空。在下面的判断中,如果为null,首先会去找,没找到就会创建一个WebApplicationContext对象。在创建这个WebApplicationContext对象的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值