具体来讲,Struts的优点有:
1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现.
2. 有丰富的tag可以用 ,Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。
3. 页面导航.页面导航将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
4. 提供Exception处理机制 .
5. 数据库链接池管理
6. 支持I18N
缺点:
一、 转到展示层时,需要配置forward,每一次转到展示层,相信大多数都是直接转到jsp,而涉及到转向,需要配置forward,如果有十个展示层的jsp,需要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward,注意,每次修改配置之后,要求重新部署整个项目,而tomcat这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简单不可想象。现在就是这样,几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大。
二、 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也是可以转弯实现的。
2.Hibernate的优缺点:
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
大多数开发机构经常采取创建各自独立的数据持久层。一旦底层的数据结构发生改变,那么修改应用的其余部分使之适应这种改变的代价将是十分巨大的。Hibernate适时的填补了这一空白,它为Java应用提供了一个易用的、高效率的对象关系映射框架。hibernate是个轻量级的持久性框架,功能却非常丰富。
优点:
a. Hibernate 使用 Java 反射机制而不是字节码增强程序来实现透明性。
b. Hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。
c. 它支持各种关系数据库,从一对一到多对多的各种复杂关系。
缺点:它限制您所使用的对象模型。(例如,一个持久性类不能映射到多个表),尽管如此,Hibernate 还是以其强大的发展动力减轻了这些风险。其他的开源持久性框架也有一些,不过都没有 Hibernate 这样有市场冲击力。
3. Spring框架的优缺点
它是一个开源的项目,而且目前非常活跃;它基于IoC(Inversion of Control,反向控制)和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的接口,采用IoC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transcation Managment,等等
优点
a. Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他为J2EE的 API特制的framework,Spring致力于解决剩下的问题。
b. Spring能消除在许多工程中常见的对Singleton的过多使用。根据我的经验,这是一个很大的问题,它降低了系统的可测试性和面向对象的程度。
c. 通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。曾经对某个类要寻找的是哪个魔法般的属性项或系统属性感到不解,为此不得不去读Javadoc甚至源编码?有了Spring,你仅仅需要看看类的JavaBean属性。Inversion of Control的使用(在下面讨论)帮助完成了这种简化。
d. 通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编程习惯。
e. Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring。
f. 使用Spring构建的应用程序易于单元测试。
g. Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码。
h. Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们适用于许多web应用。例如,Spring能使用AOP提供声明性事务管理而不通过EJB容器,如果你仅仅需要与单个数据库打交道,甚至不需要一个JTA实现。
i. Spring为数据存取提供了一个一致的框架,不论是使用的是JDBC还是O/R mapping产品
Spring确实使你能通过最简单可行的解决办法来解决你的问题。而这是有有很大价值的。
缺点:jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器
分享到:
相关推荐
在IT行业中,Structs、Spring和Hibernate是三个非常重要的开源框架,它们分别专注于Web开发、应用框架和对象关系映射(ORM)。这个压缩包文件"structs spring hibernate 例子"提供了一些示例代码,帮助学习者理解这...
【标题】:“鲜花网网上商城 structs+hibernate+spring+mysql项目” 【描述】:这个项目是一个基于Structs、Hibernate、Spring以及MySQL数据库的网上商城应用,旨在为初学者提供一个实践平台,帮助他们更好地理解和...
SSH,即Structs、Spring和Hibernate,是Java Web开发中常用的三大框架,它们分别负责表现层、业务层和数据访问层的功能。这个压缩包“SSH(Structs Spring Hibernate)开发包 所有jar.rar”包含了这三个框架的核心库...
本文主要讨论的是如何将Hessian RPC与RMI技术整合到Structs、Spring、Hibernate和Ibatis这四个关键的Java开发框架中,以构建一个高效、灵活的分布式应用程序。 1. **Hessian配置说明**: Hessian的配置通常涉及...
Spring、Struts和Hibernate是Java开发中非常经典的三大框架,它们共同构成了SSH(Spring、Struts、Hibernate)架构,用于构建高效、灵活的企业级应用程序。本文将深入探讨这三大框架的核心概念、工作原理以及它们...
在"spring+structs+hibernate 框架的整合demo"中,我们将探讨如何将这三个强大的工具集成到一起,实现一个完整的Web应用程序。 首先,Spring框架是整个应用的核心,它提供了IoC(Inversion of Control)和AOP...
Struts、Hibernate和Spring是Java开发中的三大框架,它们各自负责不同的职责,组合起来可以构建出高效、可维护的企业级应用程序。在这个"Myeclipse平台struts+hibernate+spring项目开发示例"中,我们可以深入理解这...
使用spring structs hibernate 实现的权限管理系统,功能挺强大的,提供人员管理、模块管理、角色管理、用户管理相关的代码。 同时,需注意,在分页中实现了动态更改每页显示行数的功能(请参考机构管理的实例)
这个"structs2 + spring + hibernate 小例子"是用于演示如何整合这三个组件来构建一个完整的后端系统。下面我们将深入探讨这三个框架的核心功能和它们之间的协作。 1. **Struts2**:Struts2是一个基于MVC(Model-...
在IT行业中,SSH(Struts、Hibernate、Spring)是一个经典的Java Web开发框架组合,用于构建高效、可维护的Web应用程序。这三本书分别涵盖了SSH框架中的每一个重要组件,旨在帮助开发者深入理解和应用这些技术。 ...
总的来说,`Structs+Spring+Hibernate`实例展示了如何利用这三个框架构建一个功能完善的电商应用,涵盖了用户交互、业务处理和数据存储的全链条。通过学习这个实例,开发者能够深入了解Java Web开发的实践技巧,提升...
标题中的"sshzhenghe.rar_spring+structs_structs+hibernate"指的是一个包含Spring、Struts和Hibernate整合的项目压缩包。这个压缩文件很可能是为了展示或分享一个基于这三个关键技术的Web应用程序开发实例。Spring...
structs+hibernate实例2
详细描述structs+hibernate+spring的整合
### Spring_Structs_Hibernate 关键知识点详解 #### 1. Hibernate 工作原理及使用原因 **原理:** - **读取并解析配置文件:** 首先,Hibernate会读取配置文件(如`hibernate.cfg.xml`),从中获取数据库连接信息...
标题“spring-structs-hibernate的联合使用”指的是在Java Web开发中,Spring框架、Struts框架和Hibernate框架的集成应用。这三个框架分别是用于控制层、表现层和持久层的主流解决方案,它们的结合可以构建出高效、...
在IT行业中,"Structs2+Spring+Hibernate"(SSH)是经典的Java Web开发框架组合,这三大框架的整合能够构建高效、灵活且易于维护的企业级应用。下面将详细讲解这三个框架以及它们如何协同工作。 Struts2是MVC(模型...
Spring与Structs的结合可以实现更高级别的解耦,使得业务逻辑和控制层更加独立,便于测试和维护。 Struts作为MVC框架,处理HTTP请求和视图展示,而Spring则负责管理和注入服务层对象。这种组合使得开发者可以利用...
《Spring+Hibernate+Struts 入门教程》 在IT领域,Spring、Hibernate和Struts是Java企业级应用开发中的三大重要框架。这本PDF教程集合了这三个框架的基础知识,旨在帮助初学者快速掌握Java Web开发的核心技术。下面...
### Spring+Hibernate+Struts 经典入门知识点详解 #### 一、基础知识介绍 - **Spring框架**: 是一种轻量级的Java应用框架,主要关注于简化企业级应用的复杂度,提供了一种灵活的方式来组织和管理应用组件。Spring的...