总结: 十分钟快速理解MVC框架模式以及在Java框架中的解释
MVC英文即Model-View-Controller,即把一个应用的输入,处理,输出流程按照模型(Model),视图(View),控制器(Controller)的方式进行分离,这样一个应用被分为3个层----模型层,视图层,控制层.
MVC中,视图可以有多个,在视图中没有真正的处理,视图只作为一种数据输出的形式,一个允许用户操作的平台,模型中的代码可以被多个视图使用,控制器通过接受用户的输入,调用模型,调用视图去完成用户的请求,控制器也不做处理,只做接收请求然后通知相关的模型,再确定用哪个视图来返回数据,MVC将视图层和业务层分离,很容易改变应用程序的数据层和业务规则,耦合性低且可维护性高,MVC中的模型可以被不同的视图使用,重用性高.
MVC框架模式很早就被提出了,有人叫MVC框架,有人叫MVC设计模式,查阅了一些资料才得知,应该叫MVC框架模式.
以下是百度百科的内容
1.struts2
接下来看一下从struts2来理解一下MVC模式
从MVC的角度出发看,可以对Struts2的工作流程作出如下描述:
- 浏览器发出请求。
- 控制层中的核心控制器FilterDispatcher根据请求调用相应的Action。
- Struts2的拦截器链(即一系列拦截器)自动对应请求调用一些通用的控制逻辑,如数据校验、对数据的封装和文件上传等功能。
- 回调Action中的execute()方法(Action对象的默认方法),并在方法体中调用业务逻辑组件,即自定义的JavaBean等来处理请求,如数据的查询处理等。
- execute()方法返回后会产生一个输出。
- 该输出经过拦截器链自动处理,这和开始的拦截器链处理是相反的过程。
- 控制层最后将数据返还并更新视图层。
由此,可以看到Struts2和MVC是相对应的,Struts2中的FilterDispatcher对应着MVC中的控制层,Action对应着模型层,产生的结果Result对应视图层。
- FilterDispatcher--------控制层
用户请求首先到达Struts2中的FilterDispatcher。FilterDispatcher负责根据用户提交的URL和struts.xml中的配置,来选择合适的动作(Action),让这个Action来处理用户的请求。
FilterDispatcher其实是一个过滤器Filter(Servlet规范中的一种Web组件),它是Struts2核心包里已经做好的类,不需要程序员去开发,是需要在项目的web.xml文件中配置一下即可。FilterDispatcher体现了J2EE核心设计模式中的前端控制器模式。
- Action--------模型层
Action负责把用户请求中的参数组装成合适的参数模型,并调用相应的业务逻辑进行真正的功能处理,然后产生下一个视图展示所需要的数据。最后得到下一个视图所需要的信息,并传递给控制层中的拦截器链。
- Result--------视图层
视图层主要用来与用户交互,它将从控制层得到的数据通过适合的展示方式展现给用户,让用户与之交互更加简洁简单。在Struts2中,除了大众熟知的JSP方式,还有freemarker、velocity等各种优秀的展示方式。
总之,Struts2框架实现了MVC的设计思想,使得系统各组件之间的偶和降低,提高了程序的高度扩展性和可维护性。
2.SpringMVC接下来看一下SpringMVC的流程图
只要理解MVC的精髓就可以了