`
gaozzsoft
  • 浏览: 424823 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Struts 1.X 的缺点

阅读更多
Struts优缺点
优点:
Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。
除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。
关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
缺点:
Taglib是Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。
Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。



Struts项目实施经验
前段时间,我们基于Struts架构(结合Tiles),开发了一个WEB应用。以下是我们在项目过程中积累的一些经验和吸取的教训,望对各位有所帮助。
1、 基于Struts架构的项目开发,首先需要有一个很好的整体规划,整个系统中包括哪几个模块,每个模块各需要多少FormBean和ActionBean等,而且最好有专人负责Struts-config.xml的管理。开发基于Struts的项目的难点在于配置管理,尤其是对Struts-config.xml的管理。
2、 如果你的项目非常紧,并且项目组中又没有富有经验的Struts开发人员,建议不要冒然采用Struts。Struts的掌握需要一个过程,对于一个熟练的JSP程序员,自学大概需要半个月左右的时间。如果结合titls,则需要更长的时间。
3、 如果你在网页中大量运用taglib,那么你的美工将做出部分牺牲。当你结合Tiles,功能增强的同时,这种牺牲尤为明显。当然,你对功能和美观的取舍由你自己决定。
4、 Taglib是一个好东西,但灵活运用它却需要一个过程,如果你不想在Taglib上花太多的时间,那么只需理解与FORM有关的几个标记,其它的标记就放着吧,以后再看,先去研究ActionServlet和Struts-config.xml,你会觉得很有成就感。
5、 Struts的诞生时间虽不长,但与之相关的工具却越来越多,如果你是用Jbuilder作为开发工具,那我可以为你推荐几款优秀的open tools,极大的提高开发效率。
6、 Struts是否只适合于大型项目呢?No!Struts适合于各种大小的项目,当然,对于大型项目,它所体现出来的优势更加明显。

总结
Struts是一种优秀的J2EE MVC架构方式。它利用taglib获得可重用代码和抽象 Java 代码,利用ActionServlet配合Struts-config.xml实现对整个系统导航。增强了开发人员对系统的整体把握,提高了系统的可维护性和可扩充性。

=====================================================================
Struts框架为开放者提供了一个统一的标准框架,通过使用Struts作为基础,开发者能够更专注于应用程序的商业逻辑。本文剖析了Struts优缺点。
Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。

Struts开放源码框架的创建是为了使开发者在构建基于Java Servlet和JavaServer Pages(JSP)技术的Web应用时更加容易。Struts框架为开放者提供了一个统一的标准框架,通过使用Struts作为基础,开发者能够更专注于应用程序的商业逻辑。Struts框架本身是使用Java Servlet和JavaServer Pages技术的一种Model-View-Controller(MVC)实现。

具体来讲,Struts的优点有:

1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现.

2. 有丰富的tag可以用 ,Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。

3. 页面导航.页面导航将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。

4. 提供Exception处理机制 .

5. 数据库链接池管理

6. 支持I18N

缺点:

一、 转到展示层时,需要配置forward,每一次转到展示层,相信大多数都是直接转到jsp,而涉及到转向,需要配置forward,如果有十个展示层的jsp,需要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward,注意,每次修改配置之后,要求重新部署整个项目,而tomcate这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简单不可想象。现在就是这样,几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大。

二、 Struts 的Action必需是thread-safe方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。

三、 测试不方便. Struts的每个Action都同Web层耦合在一起,这样它的测试依赖于Web容器,单元测试也很难实现。不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试。

四、 类型的转换. Struts的FormBean把所有的数据都作为String类型,它可以使用工具Commons-Beanutils进行类型转化。但它的转化都是在Class级别,而且转化的类型是不可配置的。类型转化时的错误信息返回给用户也是非常困难的。

五、 对Servlet的依赖性过强. Struts处理Action时必需要依赖ServletRequest 和ServletResponse,所有它摆脱不了Servlet容器。

六、 前端表达式语言方面.Struts集成了JSTL,所以它主要使用JSTL的表达式语言来获取数据。可是JSTL的表达式语言在Collection和索引属性方面处理显得很弱。

七、 对Action执行的控制困难. Struts创建一个Action,如果想控制它的执行顺序将会非常困难。甚至你要重新去写Servlet来实现你的这个功能需求。

八、 对Action 执行前和后的处理. Struts处理Action的时候是基于class的hierarchies,很难在action处理前和后进行操作。

九、 对事件支持不够. 在struts中,实际是一个表单Form对应一个Action类(或DispatchAction),换一句话说:在Struts中实际是一个表单只能对应一个事件,struts这种事件方式称为application event,application event和component event相比是一种粗粒度的事件。

Struts重要的表单对象ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用Struts就不太可能,当然通过结合JavaScript也是可以转弯实现的




分享到:
评论

相关推荐

    对struts1.x与struts2.x的区别的总结

    Struts1.x与Struts2.x是两种非常流行的Java Web应用程序框架,它们都由Apache软件基金会开发,旨在简化MVC(Model-View-Controller)架构的实现。然而,两者在设计哲学、功能特性以及实现方式上存在显著差异。以下是...

    Struts2与Struts1.x的深度比较

    在本文中,我们将深入探讨这两者之间的差异,以便开发者能够更好地理解它们各自的优缺点,以及为什么Struts2被视为Struts1.x的进化版本。 1. **Action** - **Struts1.x** 的Action类负责处理请求,通常需要手动将...

    struts 1.x学习笔记

    ### Struts 1.x 学习笔记 #### 一、MVC 概述 MVC(Model-View-Controller)模式是一种广泛应用于软件工程中的设计模式,尤其在Web应用程序开发中非常常见。它将应用程序分为三个核心部分: 1. **模型(Model)**...

    struts1.x面试题大全.pdf

    Struts1.x面试题大全.pdf Struts 是一个基于 Java 语言的 MVC 框架,广泛应用于 Web 应用程序开发中。下面是 Struts 的一些重要知识点: Struts 的优点 1. 业界标准:Struts 是一个广泛应用的开源软件,有很多...

    Java面试题专题之SSH框架-ssm框架面试题.docx

    - **配置方式**:Struts1.x的配置文件是struts-config.xml,而Struts2.x使用struts.xml或struts.properties,配置更灵活,支持注解配置。 - **表达式语言**:Struts2.x支持OGNL(Object-Graph Navigation Language...

    struts2使用手册

    Struts2作为一款流行的Web应用框架,是基于MVC(Model-View-Controller)设计模式的增强版本,它继承了Struts1.x的一些特性,并在此基础上进行了大量的改进与优化。Struts2能够很好地解决Struts1.x中存在的问题,...

    日文struts学习ppt

    - **Apache Struts Action Framework (Struts 1.x系列)**:这是传统的Struts版本,目前仍然在维护中,最新版本为Struts 1.3。 - **Apache Shale Framework (Struts 2.0)**:这是对传统Struts的一个重大改进和扩展,...

    Struts三种开发方法案例

    总结起来,Struts 1.x的三种开发方法各有优缺点。全手工适合于对框架有深厚理解且喜欢精细控制的开发者;半手工半工具适合希望提高开发速度但又不想完全依赖工具的团队;全工具自动化则适用于快速原型开发和初学者,...

    STRUTS2.0学习资料

    然而,Struts 1.x 有一个明显的缺点,即需要编写大量代码,可能导致“类爆炸”现象。Struts 2.0 解决了这个问题,通过 Action 类和配置文件减少了手动编码的需求,提高了开发效率。同时,Struts 2.0 也改进了单元...

    struts-scripting-1.0.1

    6. **版本兼容性**:Struts Scripting 1.0.1是针对Struts 1.x版本设计的,不适用于后来的Struts 2框架。随着Struts 1逐渐被淘汰,这个扩展的使用也逐渐减少。 7. **替代方案**:随着Java世界的发展,例如Spring MVC...

    SSH_struts1.2jar包

    SSH(Struts + Spring + Hibernate)是Java Web开发中一种常见的技术栈,它结合了三个主要框架:Struts 1.x作为MVC框架,Spring作为应用框架,Hibernate作为ORM工具。Struts 1.2是Struts框架的一个较早版本,尽管...

    手把手教你Struts2.0

    Struts 2.0是在Struts 1.x的基础上进行了改进,以解决原有版本的一些局限性,如代码量过多、单元测试困难等问题。这个框架提供了一种更加灵活和强大的方式来组织和控制Web应用的行为。 1. **MVC设计模式**: - ...

    java多种分页代码整理

    在Java开发中,常用的分页实现方式包括但不限于:Struts 1.x框架下的分页处理、基于JSP的分页实现等。这些不同的实现方法各有优缺点,开发者可以根据项目的具体需求来选择合适的方案。 ### 二、Struts 1.x框架下的...

    Java框架面试题总结.pdf

    Struts1.x是Struts框架的早期版本,Struts 2是Struts框架的最新版本。Struts 2相比Struts1.x具有许多改进,包括性能的提高、配置的简化等。 12. Struts的常用标签库及用法 Struts框架提供了多种标签库,包括Html...

    Java框架面试题总结[定义].pdf

    Struts1.x和Struts 2的主要区别: 1. Struts 2使用了新的架构模型,提供了更好的性能和可扩展性。 2. Struts 2使用了新的配置文件格式,提供了更好的配置灵活性。 12. Struts的常用标签库及用法 Struts框架提供了...

    个人spring&struts学习笔记

    通过阅读 spring_notebook.docx 和 struts2.x_selfStudy.docx 这两个文档,你可以深入理解 Spring 和 Struts2 的具体使用方法和最佳实践,为自己的 Java Web 开发技能树增添重要的一环。同时,结合实际项目练习,将...

Global site tag (gtag.js) - Google Analytics