在web早期的开发中,通常采用的都是model1。Model1设计模式中,主要分为两层,视图层和模型层。那么,项目中的业务流程该如何处理呢?实际上,model1模式中jsp就充当了这个角色,也就是说一切的业务逻辑都是由jsp来处理的,通常是通过jsp直接调用模型来处理相关的业务,model1是以jsp为中心的。举个例子,比如我们用model1模式开发了一个网站,该网站可以注册会员,那么当我们在注册页面中点击提交时,我们在页面中输入的数据就直接提交给一个jsp对象了,然后由该jsp对象直接调用dao类对象,往数据库中插入一条注册记录,实际上,该jsp对象可以直接就是展示注册页面给我们的jsp。好了,看完例子,我们是否会觉得model1的设计模式在逻辑上比较混乱呢?我想答案是肯定的,要不然也不会引出现在正流行的mvc设计模式了。然而,model1也还是有其自己的优点的。那就是,对于一个小项目而言,采用model1模式来开发,开发效率往往会更高。但是,model1开发模式所带来的问题是,使用该模式开发的项目难以扩展,难以维护,代码重用率也相当低。
由于现在人对软件质量的要求越来越高,软件项目的规模也越来越大,所以model1设计模式绝对不再适用于现在的软件开发。现在的软件开发是以工程的思想进行的,因此,model2,也就是mvc设计模式,自然而然就受到了人们的追捧了。Model2设计模式,把一个web软件项目分成三层,包括视图层、控制层、模型层。这样的分层思想,不仅提高的代码的重用率、项目的扩展性,而且大大降低了项目的维护成本。此外,model2设计模式的这种分层思想,在逻辑上相当的清晰,易被人们接受,而且便于开发人员的分工合作,因此,大大提升了开发效率。现在,具体谈一下model2的三层结构是如何完成一个业务流层的吧。首先,要先介绍一下,model2中的三层结构都包含了那些内容:视图层包括jsp、html、css、javascript、图片等,控制层由servlet构成,模型层由javaBean构成(包括dao、vo、action等)。其次,对于一个具体的业务请求,这三层结构到底是如何配合完成的呢?举个例子,为了跟model1模式做比较,我们还是引用注册会员的例子。当我们点击注册页面上的提交按钮时,客户端的注册请求不再是传给一个jsp对象了,而是传给了一个servlet对象(控制层,我们定义该servlet对象做为主控servlet,由它来接收所有的业务请求,然后决定交给哪个action对象来处理,最后由它来接收action对象返回的数据并跳转到指定的url),然后由该servlet对象决定将业务请求交给哪个具体的action对象来处理,然后当action对象处理完请求后,便返回一个url给该servlet对象,由该servlet对象根据返回的url决定跳转到哪个页面(即决定将哪个页面展示给客户端)。另外,需要提到的一点就是,刚刚提到的action对象实际上是model2模型中最关键的部分,因为它是model2中真正干活的组件,它解决的是做什么的问题,然后由它通过调用相关的业务组件(模型)来完成相应的业务,业务组件解决的是如何做的问题。对于action对象该划分到控制层还是模型层的问题,其实这是有所争议的。个人比较赞成把它归到控制层中去,因为它实际上并不执行具体的业务,只是调用相关的业务模型对象来处理罢了,换句话说,它不应该包含过多的业务逻辑,而应该只是简单地收集客户端传过来的数据,并将这些数据传给具体的业务处理对象来处理,最后,由它决定跳转到那个url,并由主控servlet执行跳转。确切的来说,我认为它可以理解为是控制层与具体model对象的适配器。
分享到:
相关推荐
前言 前段时间在训练模型的时候,发现当训练集的数量过大,并且输入的图片维度过大时,很容易就超内存了,举个简单例子,如果我们有20000个样本,输入图片的维度是224x224x3,用float32存储,那么如果我们一次性将...1
SSH框架,全称为Struts+Spring+Hibernate,是Java企业级开发中常用的一种技术栈,主要用于构建基于MVC(Model-View-Controller)设计模式的Web应用。在本篇文章中,我们将深入探讨这三个组件的核心概念和进阶用法,...
### 浅谈MVP与Model-View-ViewModel(MVVM)设计模式 #### 一、MVP设计模式概述 在软件工程中,特别是在GUI应用程序开发领域,为了更好地组织代码结构和提高开发效率,设计师和开发者们发展出了多种设计模式。其中...
### 浅谈框架与MVC #### 架构的重要性及概念 在软件开发领域,架构设计扮演着至关重要的角色。良好的架构设计不仅能够确保软件系统的稳定性、可维护性和可扩展性,还能提升团队协作效率。正如文章所述,“好的产品...
1. 在组件内部包含原生表单组件,例如input或select。 2. 给原生控件绑定事件,捕捉到原生组件的值。 3. 利用$emit方法,触发input事件,并将值传递给v-model所绑定的属性。 v-model的核心机制 v-model的核心机制...
### 浅谈 AJAX 技术及其优缺点 #### 一、AJAX 技术简介 AJAX(Asynchronous JavaScript and XML)是一种用于构建交互式 Web 应用的技术,它允许 Web 页面无需重新加载整个页面即可动态地更新部分数据。这项技术最...
2. **生命周期管理**:在Android中,需要妥善处理Presenter与View的生命周期,确保在Activity或Fragment重建时恢复状态。 总结,Android MVP模式是一种强大的设计模式,能够帮助开发者构建结构化、可测试和可扩展的...
总的来说,理解并解决Django Model与PostgreSQL JSON字段的编码问题是非常关键的,它能帮助我们更好地利用数据库的特性,同时避免因编码不兼容而产生的错误。通过自定义或利用现有的高级编码器,如DRF的JSONEncoder...
### 浅谈SOAP协议 #### 一、为什么需要SOAP? 随着信息技术的发展,现代企业的信息化建设面临着日益复杂的挑战。为了应对这种复杂性,企业需要构建一套兼容性强、支持多平台、多系统的解决方案。这意味着信息系统...
vue.js为开发者提供了很多便利的指令,其中v-model用于表单的数据绑定很常见, 下面是最常见的例子: <input type="text" v-model="msg"> {{msg}} js里data初始化数据 [removed][removed] ...
Struts框架在JSP Model2架构上建立,实现了MVC模式,使得业务逻辑、数据显示和用户交互得以有效分离。 **MVC模式详解** MVC模式由模型(Model)、视图(View)和控制器(Controller)三部分组成。模型负责处理业务...
### 浅谈SOAP知识点解析 #### 一、为什么需要SOAP? 随着信息技术的飞速发展,企业面临着日益复杂的信息化挑战。为了适应这种变化,现代企业信息系统往往由多个平台和技术构成,形成了复杂的多系统环境。这样的...
1. **模型(Model)**:模型是应用程序的核心,负责处理数据和业务逻辑。它与数据源交互,存储和管理数据,同时也处理与数据相关的业务规则。模型并不关心视图或控制器如何显示和处理这些数据。 2. **视图(View)*...
其基本语法与`get`方法类似,但返回的是一个QuerySet对象。 **特点:** 1. **多条记录:**`filter`方法可以返回零条或多条记录,即使没有匹配项也会返回一个空的QuerySet对象`[]`,不会引发异常。 ```python ...
【CMMI与CMMI五级认证概述】 CMMI,全称为Capability Maturity Model Integration,即能力成熟度模型集成,是软件工程领域的一种过程改进框架,旨在提升组织的工程能力和业务流程效率。CMMI是CMM(Capability ...
1. Model类:这部分代码主要负责数据的获取和存储,可能包括网络请求、数据库操作等。 2. View接口:定义了View需要实现的方法,如显示数据、处理用户事件等。 3. Presenter类:实现了View接口,作为View和Model的...
### 浅谈SOAP #### 一、引言 随着信息技术的迅速发展,现代企业的运营环境变得日益复杂。这种复杂性不仅体现在技术层面,更表现在跨平台、跨系统的集成需求上。为了应对这一挑战,企业解决方案必须具备广泛的兼容...