一、MVC框架概述
MVC框架使用一个分发器(dispatcher)来处理请求,它根据URL决定调用那个控制器(controller)来填充model,进而选择那个视图(view)来渲染模型。
分发器使用mappings(通常是URL maps)来判断调用哪个控制器。同样,调用那个view来渲染相应也通过mappings来判定。一个控制器包含比如数据库查询或service调用等业务逻辑,这些都是在相应生成前完成的;控制器的另一个工作就是用数据填充model。一个试图负责渲染逻辑并生成最终的相应。它查询model中的数据并传递给渲染函数。
处理过程如下:
1、dispatcher 处理传入的请求,假设出入的URL为 /hotels
2、dispatcher在map中查找该URL
3、如果有,关联控制器被调用。控制器调用外面的服务并检索出hotels列表,创建一个model,用列表填充
4、调度器查找与该URL匹配的view
5、如果有,则调用。view接收model并用来渲染HTML元素,生成hotels列表
6、发送相应给终端用户
MVC模式最主要的好处是完全分离业务逻辑和渲染逻辑,使应用程序模块化,允许插件式使用controllers和views。它也提供了重用,比如一个controller共享多个views,或者多个controller共享一个view。
2、Spring Web MVC
Spring Web MVC是Spring框架web应用对Model-View-Controller的一个实现
基于Spring configuration、java beans 实现controller、views、model、mappings(URLs和handlers间的,这里handlers包括controller和view)。Spring Web MVC拥有很强的扩展性,让你专注于自己的代码,编写可插拔的bean,或者是通过配置重写一些东西。
对于Spring Web MVC,dispatcher就是dispatcher servlet 。一个controller是一个在Spring framework中注册过的的Plain Old Java Object(POJO),model是一个命名属性的简单map。控制器计算出这些属性,然后再回到dispatcher servlet中填充model。然后,dispatcher servlet 尝试着选择一个view来渲染生成的model,并展示给终端用户。它检查视图解析器(view resolvers)的注册表并询问每一个是否能够处理传入的请求URL,如果匹配到一个视图解析器,就会被用来创建一个视图对象(view object),给用户渲染模型。
通常情况下,Spring Web MVC应用程序开发者会集中大量精力在编写控制器和视图上,而这两部分随后又会使用Spring configuration XML关联起来。