SpringMVC(十二)SpringMVC执行流程

发布于:2024-02-22 ⋅ 阅读:(53) ⋅ 点赞:(0)

一、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里面没有重写初始化的方法,我们继续往下看:

此时继承HttpS

本文含有隐藏内容,请 开通VIP 后查看