Struts老了,在这个web框架泛滥的年代里,他开始越来越不被人关注了,追溯起来他的历史要比我当程序员的历史还要远上一年半载。我走到现在,也完全是依赖于对他的一知半解才没有被IT的潮流所淘汰。但现在,他老了,他正在淡出历史的舞台。在他身后,JSF,Tapestry,WebWork等等一批新生代web框架都在对他虎视眈眈,另一方面他又受到Asp.net,ROR,Django等其他语言框架的围堵,用苟延残喘来形容Struts的现状,应该不为过。
在这个时候,对,在这个市场份额激烈争抢的时候,Struts当然不会坐以待毙,2.0的推出又让众多Struts粉丝们对其报以众望。事实是什么呢,事实仅仅是Struts合并WebWork后,在其基础上推出的一个产品,我不同意Struts2.0与Struts1.X是完全两个不同产品的这一观点,这不仅仅是因为他完全兼容1.x,而且在于他的编程理念事实上和1.x是一致的,只不过换了一个实现手段而已。当然,从1.3升级到2.0,其中Struts自己的新技术寥寥无几,核心机能都是WebWork的,从另一方面看,Struts这层皮是多么的值钱,也是可想而知的。
说到这,该往题目上靠一下了,ActionForm是什么?他是画面数据的载体,他是MVC中的M,他是javabean,他是值对象VO。我们为什么要使用它,因为我们要将页面的数据传到后台,也就是从表示层传到逻辑层。ok,我们现在知道了ActionForm也知道了ActionForm是干什么用的,那么我要告诉你,ActionForm正在被广大java应用框架们所抛弃,WebWork没这个概念,JSF没这个概念,ASP.net之类的就跟没这个东西了。而现在,Struts2.0也将它扔掉了。大多数人津津乐道于将pojo直接传递到画面,因为这会节省很多coding time,也提高了编程效率。当然我也很乐意省掉那些将VO与POJO倒来倒去的那些麻烦的事情。Struts2为每一个请求产生一个Action实例,这使得在Action中便可以定义画面上的众多属性,所以他抛弃ActionForm也是理所应当。
但是,我想说的是,Struts将ActionForm类取消这没有问题,但是千万不能将ActionForm这个概念所抛弃。
首先,从颗粒度这个角度来说,从Struts诞生之日起,他就不是一个颗粒度特别细的一个框架,他不能像JSF那样将眼光放在画面项目上,而是着眼于整个画面来考虑问题,那么一个画面的值对应到一个VO,那他就是ActionForm,从这个方面来说,颗粒度定位于整个画面的框架,他都应该有一个ActionForm的概念。那么我们在实际的应用框架搭建中,就应该注意这个问题。
其次,将POJO即DTO直接与画面绑定不利于大规模开发,这个问题在JSF等UI框架中也比较突出。我们要回忆一下MVC的原则,就是要为项目分层,为程序员分工,这在一个大型项目中尤为重要,这样做可以极大的提高开发效率。我希望我的开发人员都是产品流水线上的一环而已,他们只需关注与自身业务相关的工作,即扭螺丝或者是焊牢一根二极管,表现在实际项目里,就是做UI的人不需要去关注DB,作DB的人不用操心画面的实现,他们各自负责看管自己的对象。
第三,在Action定义中多属性,那么没人喜欢去读这样一个乱哄哄的文件。我们将ActionForm里的属性都取出来,然后将他们都放进了Action或UI,然后还要在这些文件中写入一些动作方法,如果画面的项目少一点你还能够忍受,如果多了一点呢?我认为这不是一个优雅的办法。我宁愿去看两个功能突出的类,也不愿去看一个混乱无章的东西。
最后,关于入力项目的校验。WebWork的那一套配置属性文件式校验的确很精彩,但那仅仅是对于简单的入力项目而言,遇到比较麻烦的校验还是需要在Action中进行,既然如此,那还不如在Form里的Validate方法中进行来的实在。
基于以上观点,我始终是ActionForm这个概念的拥簇。ActionForm对于Struts来说,确实需要变化,应该让他变得更强大,而不是去把它去掉来达到一了百了的效果。一方面我们可以让他变得更动态一些,一方面我们可以简化getset方法,另一方面还可以加强其对内部对象的操作。而从更深层次来说,我是一个multilayer主义者,我更重视的是整个项目的开发效率。
众多框架孰优孰劣其实并不重要,重要的是他是否适合我们自己的项目,是否能提高我们的生产力,而不是炫耀那些时髦的技术。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/smlweb/archive/2007/08/28/1762163.aspx
近来在网上看到这样一篇文章,引起了我极大地共鸣,我个人认为自复杂表单应用领域ActionForm的确应有其存在的价值,因为我们不可能吧VO一棒子打死!ActionForm的概念应该被熟记,并且在复杂应用的领域应该再次使用,这样会让我们的项目更清晰!否则你仍然需要自己设计出一个VO来进行复杂性转换!所以本质上讲struts1和struts2 ActionForm的态度就是一种强制性加给和一种人性化定制的改进!
分享到:
相关推荐
1. **Struts架构**:Struts的核心架构包括Action、ActionForm、ActionServlet、配置文件和JSP等组件。Action是处理用户请求的业务逻辑组件,ActionForm则用于封装表单数据。ActionServlet作为控制器,负责调度请求和...
1. **Struts框架基础**:首先,论文可能会介绍Struts的基本架构,包括Action、ActionForm、ActionServlet、配置文件(struts-config.xml)等核心组件的作用和交互方式。 2. **MVC设计模式**:解释MVC模式如何将业务...
2. Struts框架:深入学习Struts的配置文件、Action类、ActionForm、拦截器(Interceptor)以及视图解析等核心概念。 3. SQL与数据库设计:设计数据库表结构,编写SQL语句进行数据操作,如增删改查。 4. 用户认证与...
论Struts 1.1框架的关键特性及其在Model 2架构中的作用。 Struts 1.1是一个基于Model 2的MVC框架,它旨在解决Web应用开发中的问题,特别是HTTP协议无状态性的挑战。Model 2架构是MVC模式的一个变种,专门针对Web...
- **struts-config.xml**:这是Struts的核心配置文件,用于定义Action、ActionForm、Forward等元素,它将URL映射到特定的Action,规定了请求处理的流程。 - **web.xml**:Web应用的部署描述符,用于配置过滤器和...
Struts和Hibernate是Java开发中常用的两个开源框架,它们在构建MVC(Model-View-Controller)架构的应用程序中发挥着关键作用。本毕业设计论文的主题是利用Struts和Hibernate来实现MVC模式,旨在展示如何整合这两个...
在这个图书馆管理系统中,可能包含如图书添加、修改、删除、查询等模块,这些功能的实现都离不开Struts的核心组件,如Action类、ActionForm、配置文件struts-config.xml等。 Action类是Struts的核心,它接收来自...
开发者可以使用ActionForm对象来处理用户请求,并通过配置文件定义请求到Action的映射。 2. **Hibernate3.0**:Hibernate是一个强大的ORM(对象关系映射)框架,允许开发人员使用面向对象的方式处理数据库操作。在...
这些组件通常在Struts1的ActionForm中定义,通过Action类处理业务逻辑并控制流程。 3. **数据访问对象(DAO)**:DAO负责与数据库的交互,执行CRUD(创建、读取、更新、删除)操作。它隔离了业务逻辑层与数据存储的...
Struts的核心组件包括ActionServlet、ActionForm、Action和ActionForward。 2. **Ajax技术**:Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在...
而采用Struts,可以通过定义ActionForm对象来处理表单数据,Action类来处理业务逻辑,最后由JSP页面仅负责显示数据,从而实现职责的明确划分。 使用Struts的一个显著优点是它可以促进专业化。页面设计师可以专注于...
1. **Struts框架详解**:介绍Struts的基本结构、工作原理以及如何集成到Web项目中,包括ActionForm、Action、ActionServlet、配置文件等关键组件的作用。 2. **MVC设计模式**:解释MVC模式在Web开发中的作用,如何...
Struts通过Action和ActionForm类实现了业务逻辑和视图的解耦,使得代码更易于维护和扩展。 Hibernate,则是一个对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。在Hibernate中,开发者可以使用...
ActionForm Bean用于在模型和视图间传递数据,系统状态Bean代表应用程序的实际状态。这些Bean的使用确保了数据的一致性和可重用性,同时模型组件应保持与视图和控制器的独立性,以增强系统的可维护性、可扩展性。 ...
论文可能详细阐述了如何利用Struts的配置文件(struts-config.xml)来定义各个Action及其对应的处理方法,以及如何设置ActionForm来接收和验证表单数据。此外,Struts的国际化和异常处理机制也可能在系统中得到了应用...
1. **模型(Model)**:在Struts中,模型通常由JavaBeans或ActionForm对象实现,负责处理业务逻辑。在这个新闻文章系统中,可能会有Article类来代表文章实体,包含文章标题、内容、作者、发布日期等属性,并提供相应...
Struts框架是Java Web开发中的一个经典模型-视图-控制器(MVC)框架,它在构建企业级应用中...同时,随着技术的发展,如Spring Boot、Spring MVC等新兴框架逐渐成为主流,但Struts的基本理念和方法论依然具有指导意义。