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 GA版本:
http://struts.apache.org/download.cgi#struts206
分享到:
相关推荐
在Struts2中,这里会配置Struts2的前端控制器`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`。 2. **struts.xml**:Struts2的配置文件,定义了Action、结果类型、拦截器栈等。在这里,...
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 还是有漏洞的,可以下载最新:Apache Struts 2.3.14 GA 的示例应用。经过简单测试,就看到了想要的结果。 根据官方给的信息,问题出在 a 标签,所以写个 jsp...
Struts 2是Apache软件基金会下的Jakarta项目的一部分,它继承了WebWork的核心特性并整合了Struts 1的优点,成为了一个功能更加强大且灵活的框架。 标题"struts-2.3.16.3"指的是Struts 2框架的一个特定版本,即2.3....
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher <!-- FilterDispatcher用来初始化Struts2并处理所有的HTTP请求 --> <filter-name>struts2 <url-pattern>/* ``` 2. **struts.xml...
在Struts2.3.3版本中,除了核心库如`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`、`...
这个是struts2.3.20版本的所需要的九个包 commons-fileupload-1.3.1.jar commons-io-2.2.jar commons-lang3-3.2.jar freemarker-2.3.19.jar javassist-3.11.0.GA.jar ognl-3.0.6.jar struts2-core-2.3.20.jar struts...
4. **javassist-3.11.0.GA.jar**:Javassist是一个Java字节码操作和分析框架,Struts2使用它来动态地修改或生成类,例如在运行时实现方法拦截。 5. **log4j-1.2.17.jar**:这是一个流行的日志记录框架,Struts2使用...
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...
5. **javassist-3.11.0.GA.jar**:Java字节码操作库,Struts2使用它在运行时动态创建和修改类,实现如AOP(面向切面编程)的功能,比如拦截器的动态生成。 6. **commons-lang3-3.2.jar**:Apache Commons Lang是...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域中被广泛使用。"HelloWorld"是学习任何新技术时的入门示例,Struts2也不例外。这个例子通常帮助开发者了解如何在...
2. **commons-io-2.0.1.jar**:这是Apache Commons IO库的一个版本,提供了大量与输入/输出相关的实用工具类。在Struts2中,这个库被用来处理文件上传、读写文件流、目录操作等各种IO任务。例如,用户通过表单上传...
Struts2的2.38版是其官方发布的最新版本,针对之前版本进行了优化和更新,确保了更好的稳定性和安全性。 1. **Struts2框架核心组件**: - `struts2-core-2.3.8.jar`:这是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门户平台上集成并...在实际开发过程中,需要注意版本兼容性,合理组织MVC架构,以及充分利用Struts2和Liferay提供的各种工具和库,以提高效率和可维护性。
Struts2是一个流行的Java web应用程序框架,用于构建和维护可扩展、高效且易于维护的Web应用。这个压缩包“Struts2Jar”包含了Struts2框架开发所需的核心库,但不包括Hibernate或Spring等其他框架的组件。让我们逐一...
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher <filter-name>struts2 <url-pattern>/* ``` 这样,我们就配置了Struts2的核心过滤器,它会拦截所有请求并转发到Struts2的处理机制。 为了...
Struts2.3.7是这个版本的Struts2,提供对Java Servlet 3.0的支持,并包含了许多性能优化和安全更新。 3. **xwork-core-2.3.7.jar**:XWork是Struts2的基础,它提供了一套动作和命令模式的实现。XWork库包括了Action...
5. **javassist-3.11.0.GA.jar**:Javaassist是一个用于操作字节码的库,Struts2使用它在运行时动态创建或修改类。这对于实现某些高级功能,如动态代理和AOP(面向切面编程)非常有用。 6. **commons-io-2.0.1.jar*...