SpringMVC
MVC:指一种架构模式。用来将业务逻辑,数据,显示分离的方法来组织代码。
M(model):模型。提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:数据DAO和行为Service。
V(view):视图。负责进行模型的展示,一般就是我们看到的用户界面,客户想要看到的东西。
C(controller):控制器。接受用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返会给视图,由视图负责展示。也就是说控制器做了个调度员的工作。
职责:控制器: 1. 取得表单数据;2.调用业务逻辑;3.转向指定的页面;
模型: 1.业务逻辑; 2.保存数据的状态;
视图: 1.显示视图。
作用:提高了代码的复用率和项目的扩展性,并且大大降低了项目的维护成本。
SpringMVC是Spring Framework的一部分,使基于Java实现MVC的轻量级Web框架。
SpringMVC的特点:
1. 轻量级,简单易学
2. 高效,基于请求响应的MVC框架
3. 与Spring兼容性好,无缝结合
4. 约定大于配置
5. 功能强大:RESTful,数据验证,格式化,本地化,主题等;
6. 简洁灵活
Spring的web框架围绕DispatchServlet(调度Servlet)设计;SpringMVC框架像许多框架一样,以请求为驱动,围绕一个中心Servlet分派请求以及提供
其他功能,DispatchServlet是一个实际的Servlet(它继承了HttpServlet)
--涉及组件分析
1.DispatchServlet:前端控制器(不需要程序员开发)由框架提供,在web.xml中配置。
作用:接受请求,响应结果,相当于转发器,中央处理器。
2.HandlerMapping:处理器映射器(不需要程序员开发)由框架提供,
作用:根据请求的URL查找Handler(处理器/Controller),可以通过xml和注解方式来映射。
3.HandlerAdapter:处理器适配器(不需要程序员开发)由框架提供,
作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler中的方法。
4.Handler:处理器,也称之为Controller,需要程序员开发
注意:编写Handler使要按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler。
作用:接受用户请求,调用业务方法处理请求,也称之为后端控制器。
5.ViewReslover:视图解析器(不需要程序员开发)由框架提供,
作用:进行视图解析,把逻辑视图解析成真正的物理视图。
SpringMVC框架支持多种View视图技术,包括:jstlView,freemarkerView,ThymelwafView等
6.View:视图(需要程序员开发)
作用:把数据展现给用户的页面。View是一个接口实现类支持不同的View技术(jsp,freemarker,pdf等)
执行流程:
1.用户发出请求被DispatchServlet拦截并进行处理
2.DispatchServlet收到请求调用HandlerMapping(处理器映射器)
3.HandlerMapping找到具体的处理器(查找xml配置或注解配置),生成处理器对象以及处理器拦截器(如果有)
随后再一起返回给DispatchServlet。
4.DispatchServlet调用HandlerAdapter(处理器适配器)。
5.HandlerAdapter经过适配器调用具体的处理器(Handler/Controller)
6.Controller执行完成后返回ModelAndView对象
7.HandlerAdapter将Controller执行结果ModelAndView传给ViewReslover(视图解析器)
8.DispatchServlet将ModelAndView后返回具体View(视图)给DispatchServlet。
9.ViewReslover解析ModelAndView后返回具体View(视图)给DispatchServlet。
10.DispatchServlet根据View进行渲染视图(即将模型数据填充视图中)。
11.DispatchServlet响应 View给用户。