一、SpringMVC常用组件
DispatcherServlet:前端控制器,不需要工程师开发,由框架提供
作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求
HandlerMapping:处理器映射器,不需要工程师开发,由框架提供
作用:根据请求的url、method等信息查找Handler,即控制器方法
Handler:控制器,需要工程师开发
作用:在DispatcherServlet的控制下Handler对具体的用户请求进行处理
HandlerAdapter:处理器适配器,不需要工程师开发,由框架提供
作用:通过HandlerAdapter对处理器(控制器方法)进行执行
ViewResolver:视图解析器,不需要工程师开发,由框架提供
作用:进行视图解析,得到相应的视图,例如:ThymeleafView(转发视图,会被ThymeleafView进行渲染)、InternalResourceView(转发视图,不会被渲染)、RedirectView(重定向视图)
View:视图
作用:将模型数据通过页面展示给用户
二、DispatcherServlet初始化过程
DispatcherServlet本质上是一个Servlet,所以天然的遵循Servlet的生命周期,所以宏观上是Servlet生命周期来进行调度。
我们查看Servlet继承的顺序如下所示:
DispatcherServlet继承了FrameworkServlet:
FrameworkServlet继承了HttpServletBean:
HttpServletBean继承了HttpServlet:
HttpServlet继承了GenericServlet:
GenericServlet实现了当前Servlet接口:
之后我们查看从Servlet的初期化:
servlet的初期化为init方法:
继承servlet的为GenericServlet,里面不仅重写了继承Servlet的init方法,还对init进行了重载。
重写和重载的区别可以查看如下:Java—重写与重载的区别_重载和重写的区别-CSDN博客
有如下向上的箭头的方法就是重写的:而重载的init方法就是提供为子类进行重写。
我们查看继承GenericServlet的HttpServlet:
我们发现此Servlet里面没有重写初始化的方法,我们继续往下看:
此