前言
SpringMVC 是 Spring 的一个模块,与 Spring 是直接整合在一起
SpringMVC 是基于 MVC 的 web 框架
MVC:模型-视图-控制器
一、MVC模式的演进
1、标准MVC
(1)、是架构型的模型;
(2)、Model:模型,包含数据和行为,提供模型数据查询和模型数据更新等功能,包含数据和业务;
(3)、View:视图,负责模型的展示;
(4)、Controller:控制器,让模型进行数据处理,让视图进行数据返回和展示;
(5)、推模型
2、web MVC
web是一个请求响应的模型,无法做到模型推送数据
3、model1
JSP 负责表现逻辑、业务对象调用、控制逻辑,调用 javaBean 业务对象;
4、model2
(1)、在JavaEE里,web MVC就是指model2的模型;
(2)、servlet作为控制器,JSP作为视图,JavaBean作为模型;
(3)、控制器的问题
a、请求参数封装麻烦;
b、给视图传输共享数据,视图和视图数据严重依赖控制器;
c、控制器逻辑麻烦(增删改查)
(4)、模型:业务和数据,service/dao;
(5)、视图:被绑定为JSP,更换很难;
二、web MVC改进
1、前端控制器:所有的请求都会到达前端控制器;
2、应用控制器:真正的处理请求,视图管理,业务逻辑管理,策略模式;
3、页面控制器(动作):功能处理代码(controller);
4、上下文:所有请求的一些公用的逻辑,数据传递和共享;
生命周期线性图:
总结:
三、SpringMVC框架图
1、DispatcherServlet
(1)、前端控制器,会接收所有请求的servlet;
(2)、所有的交互都是来自于前端处理器,可以减少耦合;
2、HandlerMapping
(1)、处理器映射器;
(2)、将URL映射到Handler,找到的是经过封装的Handler的类型;
3、HandlerExecutionChain
(1)、Handler+interceptor拦截器;
(2)、方法执行前,视图返回前,方法执行完成后,对其附加上通用功能;
4、Handler
(1)、controller
5、HandlerAdapter
(1)、接口,找到适配的类来实现Handler的执行,是真正执行Handler的地方;
6、ViewResolver
(1)、视图解析,将ModelAndView对应的逻辑视图转换为物理视图;
7、View
(1)、接口,不同的视图实现(JSP,freemarker等);
8、SpringMVC灵活的体现
(1)、拦截器,可自定义拦截器进入执行链;
(2)、HandlerAdapter:执行controller,可自定义adapter执行各种Handler;
(3)、ViewResolver:可以解析不同的视图;
PS:因作者能力有限,如有误还请谅解;