cocoon的文档中有这样一段话:
Traditional Web
applications try to model the control flow of a Web application by
modeling the application as a finite state machine (FSM). In this
model, the Web application is composed of multiple states, but the
application can be only in one state at a time. Any request received by
the application transitions it into a different state. During such a
transition, the application may perform various side-effects, such as
updating objects either in memory or in a database. Another important
side-effect of such a transition is that a Web page is sent back to the
client browser.
Servlet模型提供的正是一个最基本的基于IO的FSM模型:应用程序的状态变量存储在session中,应用程序根据用户请求更新session中
变量的值。这里一个隐含的假设是session中的变量是不相关的,因为servlet模型中没有提供任何机制来同时操纵一组相关变量,例如我们在
session中存放了三个变量name, title, data,
如果我们希望删除这三个变量,我们必须通过三次独立的函数调用来完成,servlet模型本身并不知道这三者之间的关联关系。
当web应用程序逐渐变的复杂起来,这个最简单的FSM模型就显得力不从心了。因此发展出了MVC模型(Model-View-Controller),
这是对有限状态机的一个精细化。首先我们识别出session,request中的变量之间存在相关性,而且变量之间的地位也是不平等的,某些变量的改变
将直接导致另外一些变量的改变。因此变量根据相关性被聚合起来,构成很多对象。应用程序的状态不再由一个个独立的变量构成,而是由具有更丰富语义的对象构
成。在大的结构方面,一些基本的对象被分离出来,构成一个核心,即model层, 而外围的变量被分割在不同的view中。
在流行的struts和webwork等MVC框架中,变量的聚合都定义在action层,
各个相关的action并没有汇聚成一个具有独立意义的对象,似乎仅仅做到了model层和view层的分离,在model层内部并没有建立合适的模型,
即struts和webwork等建立的MVC模型中隐含假定整个model层内部是没有结构的(注,我对struts和webwork的了解限于简单介
绍文档,这里的说法可能并不准确)。一些更加精细的MVC架构直接支持model层的分解,即model层由一系列不相关的对象构成,每个对象具有从属于
自己的action。沿着这个复杂性发展的级列继续下去,我们可以知道,当对象之间的交互变得更加复杂的时候,我们需要框架本身能够直接支持model层
对象之间的相关性。最简单的控制关系是树形结构,即父节点控制子节点,父节点销毁的时候子节点自动销毁。这样就构成所谓的HMVC
(Hierarchical
MVC)模型。在这个模型中,model层由一系列的对象组成,而且这些对象被分割到不同的package中,组成一个树形结构.
分享到:
相关推荐
综上所述,这个通讯录应用是一个基于Java EE平台开发的Web应用,使用了MVC架构和DAO设计模式,实现了对通讯录数据的基本操作。开发过程中,Servlet处理HTTP请求,JSP生成响应页面,JavaBean封装业务逻辑,数据库用于...
《基于JSP的Web选题系统——Eclipse工程与数据库实现及MVC架构解析》 在Web开发领域,JavaServer Pages(JSP)技术是一种常用的技术,用于创建动态网页。本项目“jsp_Web_选题系统_eclipse工程+数据库_MVC”是一个...
在Java的MVC架构中,基础类通常指的是POJO(Plain Old Java Objects,普通Java对象)类,它对应于数据库中的表结构。POJO类的属性应与数据库表中的字段一一对应,并提供相应的getter和setter方法以便于读取和设置...
Spring MVC的架构由几个关键组件组成: 1. **DispatcherServlet**:它是所有请求的入口点,负责调度请求到相应的处理器。 2. **Controller**:控制器接收HTTP请求,执行业务逻辑,并返回ModelAndView对象,定义视图...
而Java是用于实现这一模式的主要编程语言,特别是在Web开发中,Servlet和JSP(JavaServer Pages)是Java EE平台上的核心组件,它们在MVC架构中分别扮演控制器和视图的角色。 【文件名称列表】中的: - `cmsdb.sql`...
在IT行业中,MVC(Model-View-Controller)架构模式被广泛应用于构建Web应用程序,尤其在Java领域,SpringMVC作为Spring框架的一部分,成为了开发者的首选。本文将深入探讨SpringMVC的基本概念,并结合名为...
在Spring MVC框架中,服务端表单验证是一个关键的步骤,确保从客户端接收到的数据是有效和安全的。本实例提供了完整的代码和配置,让你能够快速理解和应用服务端验证。以下是对这个实例的详细解析: 1. **Spring ...
本文将详细探讨一个基于Struts+Hibernate+MVC架构的员工在线请假系统,该系统旨在为公司的...通过深入研究和应用MVC架构、Struts、Hibernate等技术,本文为理解和实现类似的Web应用程序提供了宝贵的经验和理论基础。
### Spring MVC 全面解析 ...通过以上步骤,我们不仅理解了 Spring MVC 的基本概念和架构,还掌握了如何使用 Spring MVC 进行实际项目的开发。无论是理论知识还是实践技能,都能帮助开发者更高效地构建 Web 应用程序。
SSH(Struts+Spring+Hibernate)是一种常见的Java Web开发框架,它结合了Struts的MVC设计模式、Spring的依赖注入以及Hibernate的对象关系映射,为企业级应用提供了高效且灵活的基础。 【目的】 本报告的目的是为了...
学习如何根据项目需求选择合适的架构模式(如微服务架构、SOA、MVC等)以及如何设计和实现这些架构,是提升项目质量的关键步骤。 设计模式是软件工程中的通用解决方案,它们是经过时间检验的最佳实践。在Java开发中...
7. **导入**:这个标签可能指的是数据导入功能,比如从Excel文件导入数据到数据库或系统中。在Java环境中,这通常涉及到文件读取、数据转换和持久化操作,可能需要结合使用Java的IO流、CSV解析库(如OpenCSV)或...
MVC是一种常见的软件架构模式,用于将应用程序分为三个核心组件: - **Model(模型)**:负责存储和处理数据,实现业务逻辑。 - **View(视图)**:展示数据,与用户交互。 - **Controller(控制器)**:接收用户...
总的来说,这个项目提供了从理论到实践的完整学习资源,涵盖了Java Web开发的基础知识,包括三层架构、JDBC连接池、MySQL数据库操作以及MVC模式的应用,对于想要深入理解Java Web开发的初学者或者希望提升自己技能的...
总结起来,"使用JSP开发Web应用系统理论贯穿案例"这一主题涵盖了JSP的基本概念、生命周期、MVC架构、JSP内置对象、以及实际案例分析,对于希望在Web开发领域深入学习的人来说,是一个非常有价值的学习资源。...
3. **MVC架构** MVC是一种广泛应用于软件开发的架构模式,它将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。模型负责处理数据逻辑,视图显示数据,控制器则作为模型和视图之间的...
在MVC架构中: - Model层负责数据的处理和业务逻辑,它与数据库进行交互,获取和存储数据。 - View层主要负责展示数据,是用户看到的界面部分。 - Controller层则作为模型和视图之间的桥梁,处理用户的请求,更新...
总的来说,这个餐厅点餐系统提供了一个全面的实践平台,可以让学习者深入了解Java Web开发的各个环节,包括后端编程、数据库设计、MVC架构的应用以及项目部署。通过分析和修改源代码,开发者能够提升自己的编程技能...
本项目的核心部分可能采用了MVC(Model-View-Controller)设计模式,这是一种广泛应用于Web开发的架构模式,有助于保持代码结构清晰,提高可维护性和可测试性。Model代表业务逻辑和数据模型,View负责展示数据,而...
《Ruby On Rails》是Web开发领域中的一款著名框架,它基于Ruby编程语言,以其简洁、高效和MVC(模型-视图-控制器)架构而受到开发者喜爱。本资源提供了《Ruby On Rails》的相关源码,方便读者深入学习和研究。 在...