SpringMVC概述
Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。
MVC和三层架构的区分
- 三层架构:在服务器内部进行模块划分
- MVC:主要集中在Web层,是请求和响应的过程中提供解耦,模块化
MVC模式
- Model:
数据模型,提供要展示的数据,因此包含数据和行为,行为是用来处理这些数据的。也就是数据由实体类或者javabean来提供,行为由service层来提供. - View
负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。 - Controller
接收用户请求,委托给模型进行处理,处理完毕后把返回的模型数据交给给视图进行渲染填充。也就是说控制器在中间起到一个调度的作用。
Spring MVC的特点:
- 轻量级,简单易学
- 高效 , 基于请求响应的MVC框架
- 与Spring兼容性好,无缝结合
- 约定优于配置
- 功能强大:RESTful、数据验证、格式化、本地化、主题等
- 简洁灵活
SpringMVC核心组件:
1.DispatcherServlet: 前端控制器,用来过滤客户端发送过来,想要进行逻辑处理的请求。
2.HandlerMapping: 处理器映射器。DispatcherServlet接收到客户端请求的URL之后,根据一定的匹配规则,再把请求转发给对应的Controller,这个匹配规则由HandlerMapping决定。
3.HandlerAdaptor:处理器适配器。处理器适配器用来适配每一个要执行的Handler对象。通过HandlerAdapter可以支持任意的类作为处理器
4.Controller/Headler: 控制器/处理器。开发人员自定义,用来处理用户请求的,并且处理完成之后返回给用户指定视图的对象。
5.ViewResolver:视图解析器。Handler返回的是逻辑视图名,需要有一个解析器能够将逻辑视图名转换成实际的物理视图。而且Spring的可扩展性决定了视图可以由很多种,所以需要不同的视图解析器,解析不同的视图。但是一般由jsp充当视图的情况居多
SpringMVC执行的流程
- 首先用户发送请求,前端控制器DispatcherServlet收到请求后 自己不进行处理,而是委托给其他的解析器进行处理,前端控制器作为统一访问点,进行全局的流程控制;【用户发送请求至前端控制器DispatcherServlet】
- DispatcherServlet把请求转交给HandlerMapping ,HandlerMapping根据请求url查找Handler。
- 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
- DispatcherServlet再把请求转交给HandlerAdapter,HandlerAdapter将会把处理器包装为适配器。
- HandlerAdapter将会根据适配的结果调用真正的处理器(controller);
- Controller返回一个ModelAndView对象(包含模型数据、逻辑视图名);
- HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
- ModelAndView的逻辑视图名交给ViewResolver解析器, ViewResolver解析器把逻辑视图名解析为具体的View;
- DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
- 最后返回到DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。