本想看关于DTO的文档,想不到这篇文档对Model 1, Model 2和Model 2x的描述写的很好,于是copy下来。
Model 1
Model 1的基础是JSP文件,它由一些相互独立的JSP文件,和其他一些Java Class组成(不是必须的)。这些JSP从HTTP Request中获得所需要的数据,处理业务逻辑,然后将结果通过Response返回前端浏览器。
Model 1的应该说是唯一的好处是"简单",可以大大加快系统的开发进度。它把表现层和业务逻辑层柔和在一起,不利于以后的维护工作以及开发角色的分配,所以这种模式只能适合于小的系统开发。
Model 2
采用面向对象技术实现MVC模式从而扩展JSP/Servlet的模式被成为是Model 2模式。Apache Jakarta项目中Struts是一个实现Model 2的很好的框架,它通过一些Custom Tag Lib处理表现层,用ActionFrom Bean表示数据,用自己提供的一个ActionServlet作为控制器实现页面的流转的控制功能。
Struts强制开发人员采用MVC的设计进行系统开发,虽然它会带来如将表现层和业务层分开,合理安排开发人员角色等诸多方面的好处,但也存在一些缺点:
- 由于View层采用JSP,所以开发人员还是可以在其中写上一大堆的Java代码,从而使最后的系统还处于一种混乱的状态。而实际上开发人员确实会出现这种状况;
- 开发人员需要学习Struts提供的Custome Tag Lib,这需要时间,尤其对以前只熟悉HTML的页面设计人员来说,同时其中的一些Tag已经被Java Standard Tag Library取代掉了。
Model 2x
将Struts中的View层用XML/XSLT技术替换掉,这就是我们要提到的Model 2x模式。Apache Cocoon是Jakarta项目组提供的另外一套XML技术框架,配合Struts一起使用,将很好的解决我们上面遇到的这些问题。
这样的结构会带来如下一些优点:
- 避免了开发人员将逻辑代码直接写在JSP中,从而明晰地划分了业务逻辑层和表现层的界限。后台的Java程序员只需要关心业务逻辑的实现,最后将结果用XML来表示;而页面设计人员只需要关心如何美化页面,只要双方定义好中间的数据接口;
- 借助XSLT,开发人员可以完全不用学习Struts提供的那些已经不标准的Custom Tag。这个问题我们可以从输入页面和输出页面来考虑。对于输入,不管我们的JSP页面(对于Struts来说)采用什么样的技术,最终在浏览器中显示的始终是HTML,那么我们完全可以不用Struts提供的例如html:form等Tag,而是直接用HTML来描述,只要我们注意表单(form)中的字段和ActionForm中属性之间的对应关系即可;而对于输出页面来讲,借助XSL/XSLT的帮助,我们也完全可以抛开Struts的Tag,将XML最终显示成HTML。
- 从上图中我们可以看到,对于Struts部分在结构上没有任何变化,只是另外加了一个层次。而对于Cocoon来说,虽然看上去我们又多用了一个框架结构,但实际我们不需要对Cocoon做什么程序编写工作,只是需要多维护一个sitemsp.xmap文件(一个XML文件)。
但是,任何一种架构或者解决方案都是双刃剑,在我们获得的同时必须有一定的付出。这种模式也带来了如下一些实际的问题。
- 开发人员需要学习XSL。但我们毕竟需要学习一些东西,相信XSL中对逻辑以及对数据格式等诸多的方便处理给我们的开发人员的项目经理一些学习这些东西的理由;
- 如何定义我们的数据结构,从而满足我们的业务需求。在自己做过的项目中,经常会遇到一些返回例如用户列表,用XML/XSLT显示报表的具体问题,那么如何能够定义一个比较好的数据结构方便地处理类似的问题呢?
- 如何使用Cocoon的Pipeline将我们的数据结构转化成XML并最终显示成HTML?经过研究发现,Cocoon提供的Generator无法满足我们具体的数据处理的要求。这个问题我们可以通过扩展Cocoon的Generator来解决。
回忆以前做的项目,大部分都是Model1,没用EJB的话开发还比较顺利,用了EJB开发起来也挺慢的。Model2只做过一个项目,感觉就一个字“烦”。与Model1最大的变化就是
- 一个form提交的action不是jsp,而是一个ActionBean;
- ActionBean得到FormBean之后可以直接从FormBean读取页面提交的参数,而不用每个参 数都request一次。
- url是.do结尾,而不是xxxx.jsp。
分享到:
相关推荐
JSP的两种设计模式,即Model1和Model2,是Web开发中常见的架构模式,主要用于分离展示层、控制层和业务逻辑层,提高代码的可维护性和可扩展性。 **JSP Model1模式**是最基础的JSP开发模式,主要特点是将业务逻辑、...
在B/S(Browser/Server,浏览器/服务器)架构的开发中,存在两种主要的开发模式:Model1和Model2。这两种模式都是为了更好地管理和组织Web应用程序的结构,提高可维护性和扩展性。以下是对这两种模式的详细解释: *...
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 ...
ADC083X.DLL(报错:External model DLL "ADC083X.DLL" not found. GLE=0x000036B1.) 注意!注意! 注意:替换后再次仿真时仍然有可能失败,这和电脑系统有关(毕竟用的是Po_Jie版本的),可以尝试换台电脑试一试! ...
"WORKING MODEL 2D 2004 V7.0"是一款三维动态模拟软件,专为产品设计和工程领域中的原型验证而设计。这款工具允许用户在2D环境中创建和测试他们的设计理念,以评估其功能性和物理可行性,从而在实际制造前优化设计。...
1. **模型层(Model)**:这是应用的核心部分,负责处理业务逻辑和数据操作。在这个用户注册登录的场景中,Model可能会包含User类,该类定义了用户的属性如用户名、密码等,并提供相应的操作方法,如注册、验证、登录...
在Web开发领域,JSP Model2模式是一种广泛应用的架构,它是对MVC(Model-View-Controller)设计模式的一种实现。MVC模式是软件工程中用于分隔应用程序数据和显示逻辑的重要工具,使得代码结构清晰,易于维护。下面将...
MVC Model2 模型 调用过程 MVC Model2 模型 调用过程 MVC Model2 模型 调用过程
AR2 6轴3D打印DIY机械臂 Model AR2 Electrical 电路教程AR2 6轴3D打印DIY机械臂 Model AR2 Electrical 电路教程AR2 6轴3D打印DIY机械臂 Model AR2 Electrical 电路教程AR2 6轴3D打印DIY机械臂 Model AR2 Electrical ...
在理解这个模型文件之前,我们需要先了解SeetaFace2的基本架构和工作原理。 SeetaFace2主要由以下几个模块组成: 1. 人脸检测(Face Detection):这是整个流程的第一步,目的是在图像中找到人脸的位置。SeetaFace...
通过控制台得知长度一直为1。原来是拿不到数据。 v-model通常用于input的双向数据绑定,它并不会向子组件传递数据。 :model是v-bind:model的缩写,是绑定自定义属性.它只是将父组件的数据传递给子组件,并没有实现父...
特斯拉MODEL X 经济性测试报告
1. Model2模式:Model2模式是在传统的MVC模式基础上发展而来,它增强了用户交互的处理能力,特别适合于Web应用。在Model2中,控制器扮演了更重要的角色,它可以处理表单提交、验证用户输入,并根据处理结果更新模型...
华为1+x初级模拟题3.model
WORKING MODEL下载种子。构建一个想象中产品的结构的最好仿真工具,测定其合理性,推荐产品的相关参数,开发系统产品的首选。 有空玩玩,确实不错,就算当成玩具也很有乐趣。
在这个demo中,我们将探讨JSONModel如何与MVC架构相结合,以及它与另外两个流行的数据转换框架——MJExtension和MVVM(Model-View-ViewModel)的关系。 首先,我们来看看MVC模式。MVC是软件工程中广泛采用的一种...
在实际应用中,当接收到一张含有倾斜文字的图像时,ChineseOCR系统会先通过Angle-model对图像进行预处理,校正文字的角度,然后可能再结合其他部分的模型(如Part1和Part2的模型)进行文字识别。这种分步处理的方式...
Maverick是一个轻量而完备的MVC Model 2框架。Maverick的Action称作Controller。Controller只接受一个ControllerContext参数。request,response, servlet config, servelt context等输入信息都包装在...
1.下载 Modeltest 程序和 PAUP 软件 * 从作者的网站下载 Modeltest 程序 * 下载 PAUP 软件(需要 license) 2.准备序列 alignment 文件 * 使用 ClustalX 软件将序列 alignment 转换为 NEXUS 格式 * 在文本编辑器中...
材料供应商为特斯拉Model X提供原材料和半成品,比如有信制造提供的轮毂轴承螺母和滚球轴承,SKF提供的制动软管总成与橡胶皮套,旭硝子提供的线束连接架,以及Adler Pelzer提供的电机轴承等。这些供应商通常提供标准...