模型2 和 MVC 模式

  Java Web应用开发中有两种设计模型,为了方便, 分别称为模型1和模型2。模型1是页面中心,适合于小 应用开发。而模型2基于MVC模式,是Java Web应用的 推荐架构(简单类型的应用除外)。

一. 模型1介绍

  第一次学习JSP,通常通过链接方式进行JSP页面间 的跳转。这种方式非常直接,但在中型和大型应用中, 这种方式会带来维护上的问题。修改一个JSP页面的名 字,会导致大量页面中的链接需要修正。因此,实践中 并不推荐模型1(但仅有2~3个页面的应用除外)

二.  模型2介绍

  模型2基于模型-视图-控制器(MVC)模式,该模 式是Smalltalk-80用户交互的核心概念,那时还没有设 计模式的说法,当时称为MVC范式。 一个实现MVC模式的应用包含模型、视图和控制 器3个模块。视图负责应用的展示。模型封装了应用的 数据和业务逻辑。控制器负责接收用户输入、改变模型 以及调整视图的显示。

注:

  Steve Burbeck博士的论文:Applications Programming in Smalltalk80(TM): How to use Model-View-Controller (MVC) 详细讨论了MVC模 式,论文地址为: http://st-www.cs.illinois.edu/users/smarch/st-docs/mvc.html。

  模型2中,Servlet或者Filter都可以充当控制器。几 乎所有现代Web框架都是模型2的实现。Spring MVC和 Struts 1使用一个Servlet作为控制器,而Struts 2则使用一 个Filter作为控制器。大部分都采用JSP页面作为应用的 视图,当然也有其他技术。而模型则采用POJO(Plain Old Java Object)。不同于EJB等,POJO是一个普通对 象。实践中会采用一个JavaBean来持有模型状态,并将 业务逻辑放到一个Action类中。一个JavaBean必须拥有 一个无参的构造器,通过get/set方法来访问参数,同时 支持持久化。  

  每个HTTP请求都发送给控制器,请求中的URI标 识出对应的action。action代表了应用可以执行的一个操 作。一个提供了Action的Java对象称为action对象。一个 action类可以支持多个actions(在Spring MVC以及Struts 2中),或者一个action(在Struts 1中)。

  看似简单的操作可能需要多个action。如,向数据 库添加一个产品,需要两个action:

  (1)显示一个“添加产品”的表单,以便用户能输 入产品信息。

  (2)将表单信息保存到数据库中。

  如前述,我们需要通过URI方式告诉控制器执行相 注意: 应的action。例如,通过发送类似如下URI,来显示“添 加产品”表单:

http://domain/appName/product_input

通过类似如下URI,来保存产品:

http://domain/appName/product_save

  控制器会解析URI并调用相应的action,然后将模 型对象放到视图可以访问的区域(以便服务端数据可以 展示在浏览器上)。最后,控制器利用 RequestDispatcher跳转到视图(JSP页面)。在JSP页面 中,用表达式语言以及定制标签显示数据。

注意:

  调用RequestDispatcher.forward方法并不会停止执行剩余的代码。 因此,若forward方法不是最后一行代码,则应显式地返回。

三.

四.

猜你喜欢

转载自www.cnblogs.com/jiangfeilong/p/10745113.html