刚才有一个关于Struts和MVC组件对应关系的帖子,现在好像被放入了新手区,关于这个问题记得以前有过激烈的讨论,可惜刚才我搜索一下没有找到想找的那篇,希望有谁找到能把链接发上来
对于这个问题我觉得还是有讨论的一些必要,因为疑惑的人还是存在,而且从我个人来说对这个问题的理解也在不断的变化。现在把我现在的理解写下来,可能存在偏颇(本来理解也在变化),只供讨论
我现在的观点是:
MVC可以帮助刚刚进入面向对象设计的开发者理解分层体系结构(MVC的最大价值),之后在面对Struts,Spring时,可以借助那种分层思想、及各层的大致组件角色和职责对这些框架进行理解,但不必钉钉铆铆的去对应,因为这种对应是模糊的、是非对称的
理由如下
第一
MVC是80年代Smalltalk80引入的一种用户界面应用程序设计模型,经过二十多年的发展,到现在Struts、Spring这些框架已经对MVC进行了很大的(局部)扩展,增加了很多原来不存在的角色,以使其分工更加细致。
以Struts为例,Struts其实只是体现MVC思想的Web层框架,只体现了View和“泛Controller”含义,而对于Model实现规定很少,基本可以自由实现。
这其中最有争议的是Action属于Controller还是Model,我觉得如果非要给Action找个归宿的话,就要看系统设计的具体情况,要看让Action来做什么,如果只让Action来根据请求调用相应的业务服务/处理对象,并将处理结果放入Request Attribute中,那么就可以将Action和ActionServlet、RequestProcessor统统作为“泛Controller”的组成部分(这种纯度高的设计层次较多较细,实际使用不多);如果让Action来承担一些业务逻辑的处理,比如一次请求需要调用多个业务服务的多个处理,再比如对于简单的设计Action直接调用DAO进行操作,那么它就又具有Model的部分职能,所以一般情况下Action是一个介于Controller和Model的衔接角色。
第二
原始MVC所存在的Smalltalk用户界面应用程序,与Struts、Spring的Web应用程序体系结构不同。在用户界面应用程序中,View和Model之间交互是基于事件的,Controller是作为一种策略Strategy模式应用的,控制不同的事件产生不同的相应方式;而在Web应用程序中,View和业务服务是基于请求/响应机制的,而Action更普遍的认同是作为一个Command模式。
个人理解,欢迎拍砖
分享到:
相关推荐
总的来说,这个压缩包提供了一个深入理解SpringMVC、Struts和Java MVC模式的实战案例,对于学习和提升Java Web开发技能是非常有价值的资源。通过分析和运行其中的代码,开发者可以更好地掌握Spring框架的核心功能,...
**mvc模式详解** ...总结来说,MVC模式是现代Web应用的基础,而Struts2作为成熟的MVC框架,为开发者提供了强大且灵活的工具。通过学习和仿照Struts2,开发者可以加深对MVC的理解,提升软件开发的效率和质量。
《Struts应用开发完全手册》这本书可能是为了深入讲解Struts框架的使用和实践,通过书中各个章节的源代码,读者可以更好地理解并掌握Struts的核心概念和实际操作。 在描述中提到的"以数字命名的文件代表书中的章节...
4. **实践项目开发**:通过实际的项目开发来加深对Struts 2的理解,同时也能积累宝贵的实战经验。 5. **学习最佳实践**:参考一些成熟的项目案例或开源项目,了解如何在实际工作中合理运用Struts 2。 通过以上内容...
本手册“Struts应用开发完全手册(11-15)”涵盖了从第11章到第15章的内容,主要关注Struts框架的核心概念、配置、以及实际应用中的技巧。 1. **MVC模式的理解与应用**: MVC模式是软件工程中的一种设计模式,它将...
Struts2是一个强大的Java EE应用程序框架,用于构建MVC(模型-视图-控制器)架构的Web应用。它是Apache软件基金会旗下Jakarta项目的一部分,基于经典的Struts1框架,并引入了更多现代特性和设计模式,提高了开发效率...
### Struts 2完全学习手册知识点总结 #### 一、Struts 2 框架概览 **Struts 2** 是一个基于 **MVC(Model-View...对于想要深入了解和掌握 Struts 2 的开发者来说,《Struts 2 完全学习手册》是一个非常有价值的资源。
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
Struts2是一个强大的MVC(Model-View-Controller)框架,它是Apache软件基金会下的一个开源项目,被广泛用于构建Java Web应用程序。这个压缩包“struts2.0”似乎包含了全面的Struts2练习代码,这将是一个学习和理解...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
首先,我们来看一下Spring MVC的核心组件: 1. **DispatcherServlet**:前端控制器,它是所有HTTP请求的入口点。DispatcherServlet负责接收请求,并通过HandlerMapping找到合适的Controller进行处理。 2. **...