随着应用系统的逐渐增大, 系统的业务逻辑复杂度是以几何的方式增长, 在这种情况下, 如果依然把所有的业务逻辑都放在 JSP 页面中, 那将成为一场恶梦.
MVC 思想将应用中各个组件按照功能来进行分类, 不同的组将使用不同的技术来担当, 甚至推荐了严格分层, 不同的组件被严格的分层在所在的层内, 各层之间是以松耦合的方法来组织在一起, 从而提供了良好的封装.
1. 传统的 Model 1 和 Model 2
Javaweb 经历了 Model 1 和 Model 2 两个阶段:
Model 1 模式下, 整个 Web 应用几乎全部是由 JSP 页面来组成的, JSP 页面除了接受用户端的请求, 还要对请求处理后直接做出相应, 用少量的 JavaBean 来处理数据库的连接, 和数据库的访问. 该模式的局限性非常明显: JSP 页面身兼 View 和 Controller 两种角色, 将控制逻辑和视图逻辑杂在一起, 从而导致了代码的复用率非常低, 增加了应用的扩展性和维护的难度.
Model 2 已经是基于 MVC 架构的设计模式, 在 Model 2 中, Servlet 作为前端控制器, 负责接受客户端的请求, 在 Servlet 中只包含了逻辑控制和简单的前端控制; 然后, 调用 JavaBean 来完成实际的逻辑处理; 最后, 转发到相应的 JSP 页面显示逻辑
Model2 的流程
在 Model2 的模式下, JSP 不再承担控制器的责任, 它仅仅是表现层的角色, 仅仅用于将结果呈现给用户, JSP 页面的请求与 Servlet(控制器)交互, 而 Servlet 是负责与后台的 JavaBean 通信. 在 Model2 的模式下, 模型 (model) 由 JavaBean 来充当, 视图 (view) 由 JSP 来充当, 而控制器 (Controller) 是由 Servlet 来充当.
对于非常小型的 Web 站点, 如果后期的更新, 维护工作不是特别的大, 可以使用 model1 的模式来开发应用, 而不是使用 Model2 的模式, 虽然 Model2 提供了更好的可展性及可维护性, 但是增加了前期的开发成本, 从某种程度上来讲, Model2 为了降低后期的维护的复杂度, 却导致了前期开发的更高的复杂度.
2.MVC 思想及其优势
MVC 的思想不是 Java 语言特有的思想, 也并不是 Web 应用所特有的思想, 而是所有面向对象程序设计语言都应该遵循的规范.
MVC 思想将一个应用分为三个基本部分: Model,View,Controller, 这三个部分以最少的耦合协同工作, 从而提高应用的扩展性及可维护性.
在经典的 MVC 模式中, 事件是由控制器来处理, 控制器根据事件的类型改变模式或者视图, 反之亦然, 具体的说, 每个模型对应一系列的视图列表, 这种对应关系通常是由注册来完成, 既: 把多个视图注册到同一个模型, 当模型发生改变时, 模型向所有注册的视图发起通知, 接下来, 视图从对相应的模型中获取信息, 然后完成视图的更新.
经典的 MVC 模式和 Web 的 MVC 思想也存在一定的差别, 引起差别的原因是因为 Web 应用是一种请求 / 响应模式下的应用, 对于请求 / 响应的应用, 如果用户不对应用发出请求, 视图无法主动更新自己.
来源: http://www.bubuko.com/infodetail-3070371.html