`
burnquist
  • 浏览: 69275 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

Model 1和Model 2

    博客分类:
  • WEB
阅读更多
Model 1和Model 2

对于Java阵营的动态Web编程技术而言,则经历了所谓的Model 1和Model 2时代。


图1.3  动态Web编程技术的发展历史
所谓Model 1就是JSP大行其道的时代,在Model 1模式下,整个Web应用几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出响应。用少量的JavaBean来处理数据库连接、数据库访问等操作。

Model 1模式的实现比较简单,适用于快速开发小规模项目。但从工程化的角度看,它的局限性非常明显:JSP页面身兼View和Controller两种角色,将控制逻辑和表现逻辑混杂在一起,从而导致代码的重用性非常低,增加了应用的扩展性和维护的难度。
早期有大量ASP和JSP技术开发出来的Web应用,这些Web应用都采用了Model 1架构。
Model 2已经是基于MVC架构的设计模式。在Model 2架构中,Servlet作为前端控制器,负责接收客户端发送的请求,在Servlet中只包含控制逻辑和简单的前端处理;然后,调用后端JavaBean来完成实际的逻辑处理;最后,转发到相应的JSP页面处理显示逻辑。其具体的实现方式如图1.5所示。

图1.4显示了Model 1的程序流程。




图1.5显示了Model 2的程序流程。
正如图1.5中看到的,Model 2下JSP不再承担控制器的责任,它仅仅是表现层角色,仅仅用于将结果呈现给用户,JSP页面的请求与Servlet(控制器)交互,而Servlet负责与后台的JavaBean通信。在Model 2模式下,模型(Model)由JavaBean 充当,视图(View)由JSP页面充当,而控制器(Controller)则由Servlet充当。
由于引入了MVC模式,使Model 2具有组件化的特点,更适用于大规模应用的开发,但也增加了应用开发的复杂程度。原本需要一个简单的JSP页面就能实现的应用,在Model 2中被分解成多个协同工作的部分,需花更多时间才能真正掌握其设计和实现过程。
Model 2已经是MVC设计思想下的架构,下面简要介绍MVC设计思想的优势。

注意:  对于非常小型的Web站点,如果后期的更新、维护工作不是特别大,可以使用Model 1的模式来开发应用,而不是使用Model 2的模式。虽然Model 2提供了更好的可扩展性及可维护性,但增加了前期开发成本。从某种程度上讲,Model 2为了降低系统后期维护的复杂度,却导致前期开发的更高复杂度。

转载自:http://book.51cto.com/art/200708/53966.htm
分享到:
评论

相关推荐

    JSP的两种设计模式 Model1和Model2

    JSP的两种设计模式,即Model1和Model2,是Web开发中常见的架构模式,主要用于分离展示层、控制层和业务逻辑层,提高代码的可维护性和可扩展性。 **JSP Model1模式**是最基础的JSP开发模式,主要特点是将业务逻辑、...

    Model1和Model开发模式

    在B/S(Browser/Server,浏览器/服务器)架构的开发中,存在两种主要的开发模式:Model1和Model2。这两种模式都是为了更好地管理和组织Web应用程序的结构,提高可维护性和扩展性。以下是对这两种模式的详细解释: *...

    从Servlet到JSP,从Model1到Model2.rar_java_jsp

    Model1和Model2则是两种不同的设计模式,用于组织和管理应用程序的业务逻辑、视图和控制层。本篇文章将深入探讨这些概念,并提供一个从基础到进阶的学习路径。 首先,Servlet是一种Java类,它是Java平台上的服务器...

    DDR2 model and testbench

    DDR2 model and testbench, Micron DDR2 die; File Descriptions: ------------------ ddr2.v -ddr2 model ddr2_mcp.v -structural wrapper for ddr2 - multi-chip package model ddr2_module.v -structural ...

    填坑记录之Vue中v-model与:model区别

    通过控制台得知长度一直为1。原来是拿不到数据。 v-model通常用于input的双向数据绑定,它并不会向子组件传递数据。 :model是v-bind:model的缩写,是绑定自定义属性.它只是将父组件的数据传递给子组件,并没有实现父...

    JSP model2(MVC)思想实现用户注册

    下面将详细阐述JSP Model2和MVC模式,以及如何用它们来实现用户注册功能。 **1. JSP Model2概述** JSP Model2是JavaServer Pages(JSP)技术的一种改进,它引入了Servlet作为控制器,JavaBean作为模型,而JSP则作为...

    WORKING MODEL 2D 2004 V7.0

    "WORKING MODEL 2D 2004 V7.0"是一款三维动态模拟软件,专为产品设计和工程领域中的原型验证而设计。这款工具允许用户在2D环境中创建和测试他们的设计理念,以评估其功能性和物理可行性,从而在实际制造前优化设计。...

    Model2模块实现用户注册登录.zip

    1. **模型层(Model)**:这是应用的核心部分,负责处理业务逻辑和数据操作。在这个用户注册登录的场景中,Model可能会包含User类,该类定义了用户的属性如用户名、密码等,并提供相应的操作方法,如注册、验证、登录...

    MVC Model2 模型

    MVC Model2 模型 调用过程 MVC Model2 模型 调用过程 MVC Model2 模型 调用过程

    JSONModel MVC demo

    在这个demo中,我们将探讨JSONModel如何与MVC架构相结合,以及它与另外两个流行的数据转换框架——MJExtension和MVVM(Model-View-ViewModel)的关系。 首先,我们来看看MVC模式。MVC是软件工程中广泛采用的一种...

    chineseocr model part3-1 :Angle-model.zip

    在实际应用中,当接收到一张含有倾斜文字的图像时,ChineseOCR系统会先通过Angle-model对图像进行预处理,校正文字的角度,然后可能再结合其他部分的模型(如Part1和Part2的模型)进行文字识别。这种分步处理的方式...

    Modeltest 使用说明

    1.下载 Modeltest 程序和 PAUP 软件 * 从作者的网站下载 Modeltest 程序 * 下载 PAUP 软件(需要 license) 2.准备序列 alignment 文件 * 使用 ClustalX 软件将序列 alignment 转换为 NEXUS 格式 * 在文本编辑器中...

    wiki.model wiki.model.trainables.syn1neg.npy wiki.model.wv.vecto

    标题中的"wiki.model"、"wiki.model.trainables.syn1neg.npy"和"wiki.model.wv.vectors.npy"分别指的是一个预训练的自然语言处理模型、该模型的特定训练参数以及词向量文件。这些文件是进行词性标注和计算词性相似度...

    Model View Presenter vs Model View Controller

    1. **Model**:同样负责业务逻辑和数据管理,与MVP中的Model角色相同。 2. **View**:展示数据给用户,响应用户的交互。在MVC中,View可以直接绑定到Model,但通常建议避免过多的直接耦合。 3. **Controller**:...

    Spring-MVC-model(1)

    总结来说,"Spring-MVC-model(1)"涵盖了Spring MVC框架中模型层的核心概念和实践,包括模型对象的创建、模型数据的绑定与传递、以及模型验证等。理解和熟练掌握这些知识点对于开发基于Spring MVC的Web应用程序至关...

    新闻管理系统model1模式

    虽然在大型项目中可能不太适用,但对于初学者和小型项目,model1模式提供了一个快速开发和理解Web应用基础结构的途径。通过深入研究newsSystemModel1中的代码,可以进一步学习和掌握Web开发的基础技能和最佳实践。

    韩顺平的model2模式的新闻管理系统

    1. Model2模式:Model2模式是在传统的MVC模式基础上发展而来,它增强了用户交互的处理能力,特别适合于Web应用。在Model2中,控制器扮演了更重要的角色,它可以处理表单提交、验证用户输入,并根据处理结果更新模型...

    Maverick MVC Model 2

    Maverick是一个轻量而完备的MVC Model 2框架。Maverick的Action称作Controller。Controller只接受一个ControllerContext参数。request,response, servlet config, servelt context等输入信息都包装在...

    qtableview和model配合使用,实现复杂功能

    2. **自定义Model**: 对于更复杂的需求,如嵌入QCheckBox,你需要创建一个自定义的Model。继承自QAbstractTableModel,实现必要的数据接口(如data(), flags(), setData()等),并在这些方法中处理QCheckBox的状态...

    QTreeView 使用自定义Model

    2. **连接Model和View** - 设置Model:通过调用QTreeView的`setModel()`方法,将自定义Model赋值给QTreeView。 - 显示数据:一旦设置了Model,QTreeView会自动根据Model的数据结构和内容进行渲染。 3. **自定义...

Global site tag (gtag.js) - Google Analytics