2.1 MVC思想概述
2.1.1 传统Model1和 Model2
Java Web
应用的结构经历了Model1
和Model2
两个时代,从Model1
发展到Model2
既是技术发展的必然,也是无数程序员的心血结晶。
在Model1
模式下,整个Web
应用几乎全部由JSP
页面组成,JSP
页面接收处理客户端请求,对请求处理后直接做岀响应。用少量的JavaBean
来处理数据库连接、数据库访问等操作。Model1
模式的实现比较简单,适用于快速开发小规模项目。但从工程化的角度看它的局限性非常明显:JSP
页面身兼View
和Controller
两种角色,将控制逻辑和表现逻辑混杂在一起,从而导致代码的重用性非常低,增加了应用的扩展和维护的难度.
早期由大量JSP
页面所开发出来的Web
应用,大都采用了Model1
架构。实际上,早期绝大部分ASP
应用也属于这种Model1
架构。Model2
是基于MVC
架构的设计模式。在Model2
架构中,
Servlet
作为前端控制器,负责接收客户端发送的请求。在Servlet
中只包含控制逻辑和简单的前端处理;- 然后,调用后端
JavaBean
来完成实际的逻辑处理; - 最后,将其转发到相应的
JSP
页面来处理显示逻辑。
其具体的实现方式如图2.1所示。
正如在图2.1中看到的,Model2
下的JSP
不再承担控制器的责任,它仅仅是表现层角色,仅仅用于将结果呈现给用户。JSP
页面的请求与Servlet
(控制器)交互,而Servlet
负责与后台的JavaBean
通信。在Model2
模式下,
- 模型(
Model
)由JavaBean
充当, - 视图(
View
)由JSP
页面充当, - 而控制器(
Controller
)则由Servlet
充当。
由于引入了MVC
模式,使得Model2
具有组件化
的特点,从而更适用于大规模应用的开发,但也增加了应用开发的复杂程度。原本需要一个简单的JSP
页面就能实现的应用,在Model2
中被分解成多个协同工作的部分,程序员需要花更多时间才能真正掌握其设计和实现过程。Model2
是MVC
设计思想下的架构。下面简要介绍MVC
设计思想的优势。
提示:对于非常小型的Web
站点,如果后期的更新、维护工作不是特别多,则可以使用Model1
模式来开发应用,而不是Model2
模式。虽然Model2
提供了更好的可扩展性及可维护性,但其增加了前期开发成本。从某种程度上讲,Model2
为了降低系统后期维护的复杂度,而导致前期开发的高复杂度。