`
老顽童
  • 浏览: 48242 次
  • 性别: Icon_minigender_1
  • 来自: 默认
社区版块
存档分类
最新评论

Model 1和Model 2(转载)

阅读更多
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为了降低系统后期维护的复杂度,却导致前期开发的更高复杂度。

 

分享到:
评论

相关推荐

    Machine Learning for Model Order Reduction epub

    Machine Learning for Model Order Reduction 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书

    TESLA_Model S_OWNER_SAFTY_INFORMATION.pdf

    文档内容以及所有软件均受到版权法和其他知识产权法律的保护,未经授权,不得对文档内容进行修改、复制或转载。 最后,文档中列出了特斯拉及其产品的商标,包括注册商标和商标名称,并明确指出,文档中出现的其他...

    Servlet和Struts2的交互(转载)

    而Struts2是一个基于MVC(Model-View-Controller)设计模式的框架,它在Servlet之上提供了一层抽象,简化了开发流程,增强了可维护性和可扩展性。 Servlet的核心是`Servlet`接口,实现了这个接口的类可以接收和响应...

    Azure Automation Using the ARM Model epub

    Azure Automation Using the ARM Model 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Azure Automation Using the ARM Model 无水印原版pdf

    Azure Automation Using the ARM Model 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书...

    2019-ICCVlearning a Generative Model from a Single Natural Image(原文+代码)

    这允许生成具有显著可变性的任意大小和高宽比的新样本,同时保持训练图像的整体结构和精细纹理。与以往的单一图像GAN方案相比,我们的方法不仅限于纹理图像,而且没有条件(即从噪声中生成样本)。用户研究证实,生成...

    Mind+Machine A Decision Model for Optimizing and Implementing Analytics 无水印原版pdf

    Mind+Machine A Decision Model for Optimizing and Implementing Analytics 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有...

    Flash编程和JTAG仿真的全部资料(转载)

    使用办法是将目标代码(二进制文件*.bin)拷贝到本目录下,名称必须是model.bin,覆盖掉原来的文件,然后点击批处理文件F.bat,即开始烧写。 批处理文件的内容如下: FluteD a -f model.bin -v -s 0 因为这里面设定...

    jsr168 portlet(struts2+spring2.5+hibernate3.3)(转载)

    【Struts2框架】Struts2是MVC(Model-View-Controller)设计模式的一个实现,它提供了一种组织应用程序的方式,将业务逻辑、数据展示和用户界面分离。Struts2的核心组件包括Action、Result和Interceptor,其中Action...

    <转载>ThinkAndroid

    2. **MVP(Model-View-Presenter)模式**:作为主要的设计模式,ThinkAndroid鼓励使用MVP模式来组织代码。Model处理数据逻辑,View负责用户界面,Presenter作为两者之间的桥梁,处理交互逻辑。这种模式有利于降低...

    COM+实战(转载)

    在组件开发过程中,首先创建了一个ActiveX Library项目,然后建立Transactional Data Module对象,定义了组件的CoClass Name(如Orders)、Threading Model(Apartment)和Transaction model(Requires a ...

    hmm模型matlab代码-Hidden-Markov-Model-chs:中文评论

    欢迎应用于研究用途,使用或转载时请说明引用来源 Welcome to download and execute. Please cite the code if you use in any research and commercial fields. This is a Hidden Markov Model (HMM) class ...

    deeplearning4j.zip (自己封装,deeplearning4j和apache的资源)欢迎转载

    1. **神经网络**:提供了多种类型的神经网络结构,如卷积神经网络(CNN)、循环神经网络(RNN)以及用于图像、文本和时间序列数据的模型。 2. **模型训练**:支持反向传播算法进行模型训练,同时具备预训练和微调...

    浅谈iOS中MVVM的架构设计与团队协作

    转载他人的,Model层是少不了的了,我们得有东西充当DTO(数据传输对象),当然,用字典也是可以的,编程么,要灵活一些。Model层是比较薄的一层,如果学过Java的小伙伴的话,对JavaBean应该不陌生吧。 ViewModel层,...

    常见的vue面试题汇总

    其中 Model 代表数据模型,View 代表看到的页面,ViewModel是View和Model之间的桥梁,数据会绑定到ViewModel层并自动将数据渲染到页面中,视图变化的时候会通知ViewModel层更新数据。以前是通过操作DOM来更新视图,...

    JetpackViewModel 架构组件 博客源码

    【Jetpack】ViewModel 架构组件 ( 视图 View 和 数据模型 Model | ViewModel 作用 | ViewModel 生命周期 | 代码示例 | 使用注意事项 ) https://hanshuliang.blog.csdn.net/article/details/129374914 一、Activity ...

Global site tag (gtag.js) - Google Analytics