`
zhouxing
  • 浏览: 208597 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Apache Struts 2 GA

阅读更多
Apache Struts 2 GA 版本发布了.

这是Apache Struts 2 首次发行稳定的版本, GA意味着 General Availability , 也就是官方开始推荐广泛使用了.

Struts2 GA版本的发布, 意味着核心开发力量将全部转移到Struts2, 对Struts1的支持将会淡化.

下面列出了一些Struts1和Struts2的区别和对比:

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

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

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

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

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

表达式语言:
• Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。
• Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL).

绑定值到页面(view):
• Struts 1使用标准JSP机制把对象绑定到页面中来访问。
• Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
 
类型转换:
• Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
• Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。

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

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

相关推荐

    已配置好Struts2.2.1GA的WEB-INF

    在Struts2中,这里会配置Struts2的前端控制器`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`。 2. **struts.xml**:Struts2的配置文件,定义了Action、结果类型、拦截器栈等。在这里,...

    struts2.3.12GA(HTML版)

    Last Published: 2013-03-16 Struts 1 | Struts 2 | Apache APACHE STRUTS Welcome Releases Announcements License Kickstart FAQ Website Stats Thanks! Sponsorship DOCUMENTATION Key Technologies Struts ...

    Struts2远程代码执行漏洞分析(S2-013)1

    漏洞触发:由于官方没有发补丁,所以最新版本的 Struts2 还是有漏洞的,可以下载最新:Apache Struts 2.3.14 GA 的示例应用。经过简单测试,就看到了想要的结果。 根据官方给的信息,问题出在 a 标签,所以写个 jsp...

    struts-2.3.16.3

    Struts 2是Apache软件基金会下的Jakarta项目的一部分,它继承了WebWork的核心特性并整合了Struts 1的优点,成为了一个功能更加强大且灵活的框架。 标题"struts-2.3.16.3"指的是Struts 2框架的一个特定版本,即2.3....

    徒手配置Struts2

    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher <!-- FilterDispatcher用来初始化Struts2并处理所有的HTTP请求 --> <filter-name>struts2 <url-pattern>/* ``` 2. **struts.xml...

    struts2配置文件

    除了核心库如`struts2-core-2.3.3.jar`和`xwork-core-2.3.3.jar`之外,还需要其他的依赖库,例如`commons-fileupload-1.2.2.jar`、`commons-logging-1.1.1.jar`、`freemarker-2.3.19.jar`、`ognl-3.0.5.jar`、`...

    Struts2常用的jar包

    5. **javassist-3.11.0.GA.jar**:Java字节码操作库,Struts2使用它在运行时动态创建和修改类,实现如AOP(面向切面编程)的功能,比如拦截器的动态生成。 6. **commons-lang3-3.2.jar**:Apache Commons Lang是...

    Struts2: HelloWord

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域中被广泛使用。"HelloWorld"是学习任何新技术时的入门示例,Struts2也不例外。这个例子通常帮助开发者了解如何在...

    struts2常用的13个jar包

    4. **javassist-3.11.0.GA.jar**:Javassist是一个Java字节码操作和分析框架,Struts2使用它来动态地修改或生成类,例如在运行时实现方法拦截。 5. **log4j-1.2.17.jar**:这是一个流行的日志记录框架,Struts2使用...

    struts2的所有jar包

    4. **第三方库**:除了核心组件,Struts2还集成了如commons-fileupload-1.2.1.jar(文件上传功能)、commons-logging-1.1.1.jar(日志处理)和xwork-core-2.2.1.1.jar(XWork框架,Struts2的基础)等Apache Commons...

    Struts2Jar

    Struts2是一个流行的Java web应用程序框架,用于构建和维护可扩展、高效且易于维护的Web应用。这个压缩包“Struts2Jar”包含了Struts2框架开发所需的核心库,但不包括Hibernate或Spring等其他框架的组件。让我们逐一...

    基于struts2的hello world输出

    在我们的"Hello World"示例中,我们需要创建一个继承自`org.apache.struts2.dispatcher.ng.ExecuteOperations`和实现了`com.opensymphony.xwork2.ActionSupport`接口的Action类。这个Action类会包含一个返回"success...

    最新版struts2 核心开发包

    5. **javassist-3.11.0.GA.jar**:Javaassist是一个用于操作字节码的库,Struts2使用它在运行时动态创建或修改类。这对于实现某些高级功能,如动态代理和AOP(面向切面编程)非常有用。 6. **commons-io-2.0.1.jar*...

    struts2中导入类库时需要注意的问题

    总结来说,为了成功地在Struts2中进行web开发,你需要从struts-2.2.11-all.zip中选取特定的jar包导入,并且不要忘记从示例应用程序中提取`javassist-3.7.ga.jar`。完成这些步骤后,你应该能避免因类库缺失或不完整而...

    struts2辅助jar包

    在这种情况下,"javassist-3.9.0.GA.jar"和"commons-io-2.0.1.jar"是两个关键的辅助JAR包,它们对于Struts2框架的正确运行至关重要。 1. **javassist-3.9.0.GA.jar**:这是一个Java编程工具包,全称为Java Class...

    hibernate+Struts2包

    2. Struts2:Struts2是Apache软件基金会下的一个开源MVC框架,它提供了模型-视图-控制器的架构模式,用于构建可维护、可扩展的Web应用程序。`struts2-core-2.3.15.1.jar`和`xwork-core-2.3.15.1.jar`是Struts2的核心...

    Liferay搭建struts2

    标题中的“Liferay搭建Struts2”意味着我们将讨论如何在Liferay门户平台上集成并使用Struts2框架。Liferay是一款开源的企业级Portal解决方案,而Struts2是一个流行的Java web应用程序开发框架,它基于Model-View-...

    struts2.0开发环境的搭建及HelloWorld的演示

    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher <filter-name>struts2 <url-pattern>/* ``` 这样,我们就配置了Struts2的核心过滤器,它会拦截所有请求并转发到Struts2的处理机制。 为了...

    Struts2必须的几个包(Struts2.3.7)

    5. **commons-lang3-3.1.jar**:Apache Commons Lang是Java语言工具包,提供了许多实用的辅助函数,例如字符串操作、日期和时间处理等,这些在Struts2的实现中非常有用。 6. **ognl-3.0.5.jar**:Object-Graph ...

Global site tag (gtag.js) - Google Analytics