使用三层有几年了,还记得当时很多人都写了《三层与MVC的异同》这样的文章,看下面的评论,有不少人指出这两者属于不同的范畴,没什么可比性。当时也想写一篇关于三层和MVC文章,奈何只有“望文生义”的理解,写不出什么来。现在结合项目所学,重新理顺一下。
M、V、C
因为无论是Model1还是Model2,都涉及到M、V、C这些基础概念,所以先简单介绍一下M、V、C代表的含义。
V,View,视图:视图是用户看到并与之交互的界面。
M,Model,模型:模型表示企业数据和业务规则,模型拥有最多的处理任务。
C,Controller,控制器:控制器接受用户的输入并调用模型和视图去完成用户的需求。
Model1
Web早期开发中,使用的是Model1,按照MVC来说,它仅包含V和M,即视图和模型,它把业务逻辑也放到了视图中,因为它的视图和逻辑耦合太高,代码重用性低,难以维护,但是对于小型项目来说,开发效率很高。
在JSP开发中,Model1相当于JSP+Javabean,流程是为:
- JSP获取表单数据并提交
- 调用业务或数据处理
- 处理完毕后返回给JSP
- JSP显示给用户
Model2
Model2也就是我们常说的MVC,相对于Model来说,把业务和显示分离,抽离出C,负责转发和调用业务逻辑。
在Java的Web项目中,相当于JSP+Servlet+Javabean,它的流程是:
- Servet获取表单数据并提交
- 调用业务或数据处理
- 把处理完毕的数据返回给Servlet
- Servlet调用JSP,传递参数
- JSP显示给用户