概述
SpringMVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。
为什么要学习SpringMVC呢?
1、轻量级、简单易学;
2、高效,基于请求响应的MVC框架;
3、与Spring兼容性好,无缝结合;
4、约定优于配置;
5、功能强大:RESTful、数据验证、格式化、本地化、主题等;
6、简介灵活;
SpringMVC执行原理
作用是将请求分发到不同的处理器,DispatcherServlet是一个实际的Servlet。
Spring的web框架围绕DispatcherServlet设计。
发起的请求首先会被前置的控制器拦截到请求,
根据请求参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,
(实际控制器我理解成我们写好的一些接口)
创建数据模型,访问数据库,将模型响应给中心控制器,
控制器使用模型与视图渲染视图结果,返回给中心控制器,进而返回给请求者。
(中心控制器即DispatherServlet)
图中实线为SpringMVC框架已经提供好的技术,不需要开发者实现,虚线表示需要开发者实现的部分。
流程:
1、DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心,用户发出的请求会被DispatcherServlet接收并拦截。
如:发送请求的url为:http://localhost:8080/SpringMVC/hello,
表示请求位于服务器localhost:8080上的SpringMVC站点的/hello对应的控制器。
2、HandlerMapping为处理器映射,根据请求url查找Handler。
3、4、HandlerExecution把解析后的信息传递给DispatcherServlet。
5、HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。
6、Handler让具体的Controller执行。
7、Controller将具体的执行信息返回给HandlerAdapter。
8、HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。
9、DispatcherServlet调用视图解析器来解析HandlerAdapter传递的逻辑视图名。
10、视图解析器将解析的逻辑视图名传给DispatcherServlet。
11、DispatcherServlet根据视图解析器解析的试图结果,调用具体的视图。
12、最终视图呈现给用户。
总之就是三部分:
先适配请求往哪走(HandlerMapping和HandlerExecution来做)——>再去解决请求具体要做的事情(HandlerAdapter和Controller来做)——>最后进行视图解析(View和ViewResolver来做)