一、springmvc中间件介绍
1.1 DispatcherServlet
-
DispatcherServlet表示前置控制器。
-
主要功能:是整个SpringMVC的控制中心
-
在web.xml中有对DispatcherServlet的配置,首先所有的请求都会被拦截DispatcherServlet控制器所拦截
<servlet>
<servlet-name>springServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-cfg/spring-controller.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
1.2HandlerMapping
-
HandlerMapping主要表示处理器映射。
-
主要功能:用来解析请求url,解析出控制器,从而映射控制器
-
例如
-
我们假设请求的url为: http://localhost:8080/SpringMVC/input-product 如上url拆分成三部分: http://localhost:8080 服务器域名 SpringMVC部署在服务器(http://localhost:8080)上的web站点 input-product表示控制器 通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的input-product控制器。
-
1.3HandlerAdapter
- HandlerAdapter主要表示处理器适配。
- 主要功能:其按照特定的规则去执行Handler,调度Controller来处理业务逻辑等。
1.4ViewResolver
- ViewResolver主要表示视图解析器。
- 主要功能:解析DispatcherServlet传递的逻辑视图名,并将解析结果传回给DispatcherServlet
二、springMvc执行流程(文字叙述)
-
第一步:用户发出请求,DispatcherServlet接收请求并拦截请求。
-
第二步:DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。
- HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:input-product。
-
第三步:HandlerExecution将解析后的信息(handler)传递给DispatcherServlet。(另外一种说法:处理器映射器HandlerMapping向前端控制器返回Handler)
-
第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行Handler。
-
第五步:处理器适配器(HandlerAdapter)按照特定的规则去执行Handler。
-
第六步:Handler找到具体的Controller去处理,返回ModelAndView给处理器适配器(HandlerAdapter)
-
第七步:处理器适配器(HandlerAdapter)向前端控制器(DispatcherServlet)返回ModelAndView
-
第八步:前端控制器(DispatcherServlet)调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。
-
第九步:视图解析器(ViewResolver)根据逻辑视图名解析成真正的视图(jsp)并向前端控制器(DispatcherServlet)返回View
-
第十步:前端控制器(DispatcherServlet)进行视图渲染。视图渲染将模型数据(在ModelAndView对象中)填充到request域
-
第十一步:前端控制器(DispatcherServlet)向用户响应结果