`

Struts2 优点收集整理

阅读更多
Struts2比Struts1已经有了很大的进步,优点很多,其中主要是:
  • 增强页面数据处理功能(OGNL、valueStack)。
  • 简化捕获表单数据对象过程 (类型转换)
  • 提供灵活丰富功能和插件, 易于使用和扩展 (拦截器、插件支持、Action生命周期、校检);
  • 提高线程安全性(单例—原型);
  • 提高可测性(不依赖servlet、struts,提供依赖注入);


  • 表达式语言:

• Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。
• Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL).
【((EntCustomer)jack.getCustomer()).getTrustId()----jack.customer.trustId】
** 不需关注对象类型,不需进行类型转换
** 表达方式更简短和直观


  • 绑定值到页面(view):

• Struts 1使用标准JSP机制把对象绑定到页面中来访问。
• Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。

  • 插件支持:

• Struts2是基于插件开发的框架,能简单快速的使用大量成熟实用的插件和视图

  • 依赖注入:

• Struts2提供依赖注入,并能很好的和spring ioc整合。

  • Struts2 AOP-拦截器:

• Struts2提供强大的、可插拔的拦截器以及拦截器栈,
个人觉得Struts1是基于servlet开发,Struts2是基于Filter开发,相对于现在的企业来说Struts1的技术成熟,便于维护,而且现在的许多程序员使用SSH框架时,还是多选用struts1来开发~~ 当然Struts2安全性比Struts1要高~~

  • Action生命周期控制:

• Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
• Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。

  • 线程安全:

• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
• Struts2 Actions是原型模式,对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)

  • Struts框架依赖:

• Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。

  • Servlet 依赖:

• Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
• Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。

  • 捕获输入[表单数据封装对象:]:

• Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。
• Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过 web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种 ModelDriven 特性简化了taglib对POJO输入对象的引用。

  • 可测性:

• 测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。
• Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。

  • 类型转换:

• Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
• Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。

  • 校验:

• Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
• Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性
分享到:
评论

相关推荐

    struts2学习收集

    Struts2是Apache软件基金会的一个开源项目,它是Struts1的升级版,继承了Struts1的优点并解决了其存在的问题。Struts2的核心是Action类,它处理HTTP请求并调用业务逻辑,然后将结果返回到视图。框架提供了拦截器...

    struts1.0和struts2

    Struts2是基于WebWork框架的升级版,它吸取了Struts1的优点并进行了诸多改进,提高了框架的灵活性和可测试性。 在Action类的设计上,Struts1要求Action类继承自一个抽象基类,这导致了使用抽象类编程而不是接口,...

    Struts1及14. Struts2学习笔记

    Struts2是Struts1的升级版,它吸取了其他优秀框架的优点,如Spring、WebWork等,提供更强大的功能和更灵活的配置。Struts2的核心是FilterDispatcher,它处理所有请求并根据配置的拦截器链进行处理。Struts2支持OGNL...

    struts代码

    Struts2不仅继承了Struts1的优点,还引入了更多的特性,如类型转换、文件上传/下载、拦截器、动态方法调用等,使得其功能更加强大,使用更加灵活。 ### 多文件上传实现步骤 #### 第一步:导入必要的库 为了实现...

    struts1.x和struts2.0电子书

    Struts2是Struts1的升级版,它吸取了许多其他框架的优点,如WebWork,提供了更灵活的架构和更丰富的功能。 1. **拦截器(Interceptor)**: Struts2引入了拦截器,这是一个强大的功能,允许开发者插入自定义的处理...

    收集的几篇论文关于STRUTS

    2. **STRUTS 2的增强功能**:Struts 2继承了Struts 1的优点,并增加了许多新特性,如更强大的拦截器(Interceptor)机制,支持AJAX,以及与Spring框架的紧密集成。此外,Struts 2的配置方式更为灵活,可以使用XML或...

    struts详细文档讲解及实例

    2. **ActionServlet**:Struts的核心,处理请求转发和响应,管理Action实例。 3. **ActionMapper**:解析请求URL,确定应调用哪个Action。 4. **ActionForm**:负责数据收集和验证。 5. **Action**:执行实际的业务...

    jsp.rar_JSP 登陆 注册_java jsp_jsp 登陆_struts2管理系统_登陆

    **Struts2** 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,用于简化企业级应用的开发。Struts2提供了强大的动作调度、拦截器、结果映射等功能,使得开发登陆和注册模块变得更加简洁。在Struts2中...

    Struts+Hibernate教程2

    整合Struts和Hibernate可以充分利用两者的优点,简化开发过程。通常步骤如下: - **配置Hibernate SessionFactory**:在Struts的初始化阶段创建SessionFactory,供整个应用共享。 - **Action中的Hibernate操作**:...

    struts资料.rar

    Struts 2是其后续版本,是在Struts 1的基础上进行了重大改进的框架,它吸收了WebWork框架的优点,引入了更多现代的Web开发概念,比如拦截器(Interceptor)和模板技术。Struts 2的Action类可以更加灵活地处理请求,...

    struts实例

    - Struts 2引入了拦截器(Interceptor),增强了可扩展性和功能,比如验证、事务管理等。 - 但Struts框架整体已逐渐被Spring MVC和Play等更现代的框架取代,因其更灵活、更高效。 5. **学习和实践Struts**: - ...

    struts

    在Struts框架中,"模型"(Model)通常由业务逻辑组件构成,如实体对象和数据访问对象(DAO),负责处理业务逻辑和数据管理。"视图"(View)是用户界面,负责呈现数据,通常使用JSP(JavaServer Pages)或FreeMarker...

    介绍j2ee企业级应用的图书+详细介绍了如何整合struts+hibernate+spring的整合

    本资源包聚焦于J2EE(Java 2 Platform, Enterprise Edition)平台的应用,以及Struts、Hibernate和Spring这三大框架的整合,旨在帮助开发者理解和实践现代Java企业级应用的开发。 首先,J2EE是Oracle公司提供的一个...

    Struts入门

    2. 强大的配置管理:struts-config.xml 文件可以配置 Action 映射,实现请求到业务逻辑的映射。 3. 支持多种视图技术:如 JSP、JSF、Velocity 模板等,可以与标记库、JavaScript 和样式表结合,创建丰富的用户界面。...

    STRUTS和WEBWORK在VALIDATE的区别

    WebWork,后来发展成为Struts2,是一个更现代的框架,它吸取了STRUTS的优点并进行了改进。WebWork的验证机制更为灵活,它引入了拦截器(Interceptor)的概念。在WebWork中,验证逻辑可以放在Action类的方法上,使用...

    struts知识大全

    - Struts1之后,Struts2出现,它吸取了Struts1和其他框架的优点,如Spring、Tiles等,提供了更灵活的拦截器模型和更丰富的插件支持。 6. **Struts与Spring的整合** - Struts与Spring的整合可以更好地实现依赖注入...

    struts技术实例

    Struts2继承了Struts1的优点,同时引入了许多新的特性,如更强大的表达式语言OGNL,更灵活的拦截器机制,以及对AJAX的支持等。 总的来说,Struts技术作为Java Web开发中的经典框架,为开发者提供了强大的工具来构建...

Global site tag (gtag.js) - Google Analytics