SpringMVC 框架是以请求为驱动,围绕 Servlet 设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。其中核心类是 DispatcherServlet,它是一个 Servlet,顶层是实现的Servlet接口。DispatcherServlet
的作用是将请求分发到不同的处理器
一图看懂springMVC
简要分析执行流程
-
DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,
DispatcherServlet接收请求并拦截请求。
我们假设请求的url为 : http://localhost:8080/SpringMVC/hello
如上url拆分成三部分:
http://localhost:8080服务器域名
SpringMVC部署在服务器上的web站点
hello表示控制器
通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。 -
HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据
请求url查找Handler。 -
HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器
为:hello。 -
HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等。
-
HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。
-
Handler让具体的Controller执行。
-
Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。
-
HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。
-
DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。
-
视图解析器将解析的逻辑视图名传给DispatcherServlet。
-
DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。
-
最终视图呈现给用户。
1. 前端控制器
客户端发起请求,会首先经过前端控制器 DispatcherServlet
进行转发,转发到 Handler Mapping
DispatcherServlet
是前置控制器,配置在web.xml
文件中的。拦截匹配的请求,Servlet
拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controller
来处理,是配置spring MVC
的第一步。- DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。
2. 页面控制器
HandlerMapping
为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler