SpringMVC源码(零)SpringMVC的架构流程
回顾MVC架构
MVC是一种架构模型,本身没有什么功能,只是让我们的项目结构更加合理,流程控制更加清晰,一般包含三个组件:Model(模型):数据模型,用于提供要展示的数据。一般包含数据和行为(也就是业务),在JavaWEB中,数据和业务往往是分离开的。
View(视图):负责对模型数据进行展示,例如我们看到的网页。概念比较广泛,可以是:html、JSP、excel、Word、PDF、json、XML等
Controller(控制器):接收用户请求,委托给模型做处理,处理完毕返回数据,再交给视图做渲染,相当于调度员工作
SpringMVC是Spring架构中的一部分:
Spring Web MVC是一种基于Java的,实现了Web MVC设计模式的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,采用了松散耦合可插拔组件结构,比其它MVC框架更具扩展性和灵活性。
可以让我们实现:
进行更简洁的Web层的开发;
天生与Spring框架集成(如IoC容器、AOP等);
提供强大的约定大于配置的契约式编程支持;
支持灵活的URL到页面控制器的映射;
非常容易与其他视图技术集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用);
非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API;
支持Restful风格。
SpringMVC在架构设计、扩展性、灵活性方面已经全面超越了Struts、WebWork等MVC框架,从原来的追赶着一跃成为MVC的领跑者!
SpringMVC的架构
流程总结:
1、 用户发起请求到DispatcherServlet(前端控制器)
2、 DispatcherServlet通过HandlerMapping(处理映射器)寻找用户要请求的Handler
3、 HandlerMapping返回执行链,包含两部分内容:
a) 处理器对象:Handler
b) HandlerInterceptor(拦截器)的集合
4、 前端控制器通过HandlerAdapter(处理器适配器)对Handler进行适配包装
5、 调用包装后的Handler中的方法,处理业务
6、 处理业务完成,返回ModelAndView对象,包含两部分
a) Model:模型数据
b) View:视图名称,不是真正的视图
7、 DispatcherServlet获取处理得到的ModelAndView对象
8、 DispatcherServlet将视图名称交给ViewResolver(视图解析器),查找视图
9、 ViewResolver返回真正的视图对象给DispatcherServlet
10、 DispatcherServlet把Model(数据模型)交给视图对象进行渲染
11、 返回渲染后的视图
12、 将最终的视图返回用户,产生响应