通过 JSP Model 深入学习 MVC

转载 2016年08月29日 16:14:13

通过 JSP Model 深入学习 MVC

来源:WEB开发者 发布时间:2012-03-01 阅读次数:1030
 


动态Web编程技术的发展历史

  使用 JSP 技术开发 Web 应用程序, 有两种架构模型可供选择. 通常称为 Model1和 Model2.

  所谓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页面处理显示逻辑。如下图:

  Model 2下JSP不再承担控制器的责任,它仅仅是表现层角色,仅仅用于将结果呈现给用户,JSP页面的请求与Servlet(控制器)交互,而Servlet负责与后台的JavaBean通信。在Model 2模式下,模型(Model)由JavaBean 充当,视图(View)由JSP页面充当,而控制器(Controller)则由Servlet充当。

  由于引入了MVC模式,使Model 2具有组件化的特点,更适用于大规模应用的开发,但也增加了应用开发的复杂程度。原本需要一个简单的JSP页面就能实现的应用,在Model 2中被分解成多个协同工作的部分,需花更多时间才能真正掌握其设计和实现过程。

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

  MVC并不是Java语言所特有的设计思想,也并不是Web应用所特有的思想,它是所有面向对象程序设计语言都应该遵守的规范。

  MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器),这三个部分以最少的耦合协同工作,从而提高应用的可扩展性及可维护性。

  起初,MVC模式是针对相同的数据需要不同显示的应用而设计的,其整体的效果如下图所示。

  在经典的MVC模式中,事件由控制器处理,控制器根据事件的类型改变模型或视图,反之亦然。具体地说,每个模型对应一系列的视图列表,这种对应关系通常采用注册来完成,即:把多个视图注册到同一个模型,当模型发生改变时,模型向所有注册过的视图发送通知,接下来,视图从对应的模型中获得信息,然后完成视图显示的更新。

  从设计模式的角度来看,MVC思想非常类似于一个观察者模式,但与观察者模式存在少许差别:观察者模式下观察者和被观察者可以是两个互相对等的对象,但对于MVC思想而言,被观察者往往只是单纯的数据体,而观察者则是单纯的视图页面。

  概括起来,MVC有如下特点:

  1、多个视图可以对应一个模型。按MVC设计模式,一个模型对应多个视图,可以减少代码的复制及代码的维护量,一旦模型发生改变,也易于维护。
  2、模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术,例如,使用JSP页面、Velocity模板或者直接产生Excel文档等。
  3、应用被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性。
  4、控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起,完成不同的请求。因此,控制层可以说是包含了用户请求权限的概念。
  5、MVC更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。
  6、相对于早期的MVC思想,Web模式下的MVC思想则又存在一些变化,因为对于一个应用程序而言,我们可以将视图注册给模型,当模型数据发生改变时,即时通知视图页面发生改变;而对于Web应用而言,即使将多个JSP页面注册给一个模型,当模型发生变化时,模型无法主动发送消息给JSP页面(因为Web应用都是基于请求/响应模式的),只有当用户请求浏览该页面时,控制器才负责调用模型数据来更新JSP页面。

  注意  MVC思想与观察者模式有一定的相似之处,但并不完全相同。经典的MVC思想与Web应用的MVC思想也存在一定的差别,引起差别的主要原因是因为Web应用是一种请求/响应模式下应用,对于请求/响应应用,如果用户不对应用发出请求,视图无法主动更新自己。

相关文章推荐

在eclipse 把Modle1和Model2架构改为MVC架构开发Jsp遇到的种种问题

最近在使用eclipse学习jsp的开发,一开始利用model1的模式写了很多,逐渐的也是发现modle1的问题颇多,尤其是html和java片段混合狠不清晰而且对于数据库操作每次都要重新写一遍代码很...

【JavaWeb】JSP学习笔记(二)JavaBean相关|Model1|状态管理|

JavaBean JavaBean简介 设计原则 Jsp动作元素 什么是动作元素 如何使用JavaBean 通过动作标签使用javaBean useBeans setProperty getPrope...

YII Framework学习教程-YII的Model-MVC最佳实践-2011-11-22

原文地址上文已经提到。这里对其进行翻译和稍加说明。 Best MVC Practices 最佳的MVC实践 Although Model-View-Controller...

MVC学习1-实现Model—Controller—View分离

有人会问:为什么要实现分离?小项目就不需要进行分离,但是大项目最好还是分离的好,层次更鲜明,看着比较舒服。 结构如下 首要要先建立一个MvcApplication项目,然后新建项添加yang....

学习ASP.NET MVC5框架揭秘笔记-Model2

Model2         Trygve M.H.Reenskau当初提出的MVC是作为桌面应用的架构模式。 Web应用和桌面应用的主要区别在于用户是通过浏览器与应用进行交互,交互请求和响应是通过...

MVC5学习系列——添加模型(Model)、链接字符串

MVC5学习笔记,其实就是敲了一遍官网代码,官网地址:http://www.asp.net/mvc            接着上一篇MVC5学习系列——添加视图,这次我们添加模型(Model)。 ...

敏捷思维学习Ext.Net MVC--3.3文本字段与后台的高级通信(model)

敏捷思维学习Ext.Net MVC--3.3文本字段与后台的高级通信(model) 上节我们介绍了文本字段与后台的基本通信,这种通信方法是所用web网站Form表单通信的基本方法,可以满足大多数前后...

JSP MVC案例下载学习(一)

  • 2009-02-19 16:03
  • 2.69MB
  • 下载

java web学习(基础篇)四 JSP MVC架构

对于Java阵营的动态Web编程技术而言,则经历了所谓的Model 1和Model 2时代。一 Jsp Model 11.传统的Jsp Model 1模型, Jsp是独立的,自主完成所有的任务,如图:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)