1.4 Model规范
MVC设计模式的理念虽然很好,但技术实现起来却很困难,这主要是由HTML的实现所决定的,这种基于请求/响应的实现方式,很难做到如果有变化了能够及时通知。当JavaEE的JSP Model 2规范出来以后,才有了实现MVC设计模式的可能。它用JSP技术实现视图的功能,用Servlet技术实现控制器的功能,用JavaBean技术实现模型的功能。
1.4.1 Model 1规范
Sun公司共制定了两种JSP规范,分别是Model 1和Model 2规范,它们分别描述了采用JSP技术构成Web应用的不同模型。
随着JSP技术的推出,在使用Java技术建立Web应用的实例中,这种便于开发的技术就流行起来了。JSP页面可以非常容易地将业务逻辑、服务器端处理过程和HTML结合在一起,在JSP页面中同时实现显示、业务逻辑和流程控制,从而可以快速地完成应用开发。现在很多的Web应用就是由一组JSP页面构成的,这种以JSP为中心的开发模型称为Model 1。Model 1的架构图如图1.12所示。
图1.12 Model 1的架构图
当需要快速开发某种Web应用或开发小规模的Web应用时,这种以JSP为中心的开发模型是比较好的选择。但它也有一些不足之处,比如,页面显示和业务逻辑、数据库连接结合在一起,如果有改动则要改很多地方,扩展性和灵活性比较差。
1.4.2 Model 2规范
因为上述开发模型的不足之处,在开发大型的Web应用时,就必须将开发模型进行分层,而前面讲过的MVC分层方式是一个不错的选择。Model 2就是基于MVC模式的框架,通过这种设计模型,把应用逻辑、处理过程和显示逻辑分成不同的组件实现,这些组件可以进行交互和重用,从而弥补了Model 1的不足。将MVC模式应用到一个系统设计中的过程就是对系统中不同责任的划分过程。Model 2的架构图如图1.13所示。
图1.13 Model 2的架构图
因为Model 2规范对开发模式进行了分层,从而更易于实现对大规模系统的开发和管理,但这种方式在开发上就没有前面以JSP为中心的开发模型速度快,而且这种开发模式实现起来比较困难,开发人员也需要很长时间才能掌握它。
● 必须基于MVC组件的方式,重新思考和设计应用结构。原来通过建立一个简单的JSP页面就能实现的应用,现在变成了多个步骤的设计和实现过程。
● 所有的页面和组件必须在MVC框架中实现,所以必须进行附加的开发工作。
● 客户机和服务器的无状态连接,这种无状态行为使得模型很难将更改通知视图。在Web上,为了发现对应用程序状态的修改,浏览器必须重新查询服务器。