原文
http://developer.51cto.com/art/200906/126965.htm
http://www.blogjava.net/lzhidj/archive/2008/07/08/213445.html
正常使用struts2.1.6,至少需要如下6 个jar包:
struts2-core-2.1.6.jar
freemarker-2.3.13.jar
commons-logging-1.0.4.jar
ognl-2.6.11.jar
xwork-2.1.2.jar
commons-fileupload-1.2.1.jar
如果要使用Struts2的注释功能,在Struts2.0.14中只要引用了struts2-core-2.1.6.jar文件即可,而在 struts2.1.6中还需要引用struts2-convention-plugin-2.1.6.jar文件,而且注释类的包也变了(又增加了一些新的注释类),Struts2.0.14中的注释类在org.apache.struts2.config包中,而struts2.1.6的注释类在 org.apache.struts2.convention.annotation包中。除此之外,有些注释的属性名也变了,如Result注释在 struts2.0.14中有一个value属性,表示一个要转入的URL,而Struts2.1.6的Result注释中使用location属性代替了value属性(不再有value属性了),但它们的使用方法相同。
Struts2的环境要求
Apache Struts2的环境需求如下:
Servlet API 2.4
JSP API 2.0
Java 5
需要提醒的是,在Struts中会用到Annotation,所以请将JDK版本升级到1.5.
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一起使用。
分享到:
相关推荐
在开发租房网站的过程中,学生将学习如何创建Action类、配置struts.xml、设计数据库模型、编写DAO和Service层代码、实现页面交互以及使用Struts 2提供的各种功能来优化用户体验。这将帮助他们掌握Web应用开发的基本...
此资源是使用Struts2开发租房系统1-5章课件的第二部分,需要与其他两部分一起下载后才能解压。
然而,在使用Struts 2标签时,需要注意一些重要的事项。 首先,在使用Struts 2标签之前,需要在web.xml文件中配置Struts 2的核心Filter。这是因为Struts 2的核心Filter是Struts 2框架的入口点,负责处理所有的请求...
标题中的"使用Struts2框架来实现前台与后台的交互"指的是通过Struts2框架协调前端用户界面与后端业务逻辑进行数据交换。在传统的Web开发中,前端HTML页面通常通过HTTP请求与服务器上的后台Java代码进行通信。Struts2...
这些Action可以使用Struts2的注解或XML配置来指定。 4. **GWT客户端**:在GWT的客户端代码中,你可以创建GWT服务接口(继承自`RemoteServiceServlet`),并使用GWT的`GWT.create()`方法实例化它。这样,你就可以在...
本文将详细介绍如何使用Struts2进行快速开发,并讲解其核心概念和配置步骤。 首先,要开始使用Struts2,你需要从Apache官方网站(http://struts.apache.org/download.cgi#struts2014)下载最新版本的Struts2框架。...
本教程将深入讲解Struts2官方例子3,主要关注如何使用Struts2提供的标签。 一、Struts2标签库概述 Struts2的标签库是基于JSP标准标签库(JSTL)的扩展,提供了丰富的标签来处理表单、验证、国际化等功能。这些标签...
这里,我们使用了`defaultStack`拦截器,确保上传的文件通过了Struts2的安全检查。返回结果类型设置为`stream`,并指定响应内容类型为`application/json`,因为CKEditor期待一个JSON格式的响应来判断上传是否成功。 ...
1. 登录界面first.jsp:使用Struts2标签库,包含DB.java的数据库连接方法 2. 实体Bean类:Student.java 3. LoginAction类:用于业务逻辑处理,包括表单验证和数据库查询 4. validate()方法:执行表单内容验证 5. ...
本教程将详细讲解如何使用Struts2技术来实现一个基本的登录功能,并与数据库进行连接。 首先,我们需要在项目中引入Struts2的相关依赖。这通常包括Struts2的核心库、相应的插件以及数据库驱动。确保在pom.xml(如果...
在这个项目中,我们将深入探讨如何使用Struts2框架来实现一个简单的留言板系统,涵盖用户登录、注册、发布主题、浏览主题、编辑主题以及发表评论等功能。 首先,我们需要搭建Struts2的基础环境。这包括在项目中引入...
为了提高性能,可以使用Struts2的缓存机制、减少不必要的视图渲染、优化Action设计以及利用静态资源缓存等方法。 总结来说,Struts2是一个强大而灵活的Java Web开发框架,它简化了MVC模式的实现,提供了丰富的特性...
**ACCP7使用Struts2开发租房系统之二** 在北大青鸟的ACCP7课程中,第二学年的Java编程教学重点聚焦于企业级应用框架的使用,特别是Struts2框架。Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建...
综上所述,这个"DWZ的demo工程(后台java实现,使用struts2)"涵盖了前端与后端的整合、数据库操作、CRUD业务逻辑以及分页功能的实现,为开发者提供了一个实践DWZ和Struts2结合的实例。通过学习和分析这个DEMO,...
根据提供的文件信息,我们将深入探讨使用Struts2框架时必须配备的JAR包及其相关知识点。 ### Struts2简介 Struts2是一个开源的Web应用框架,它继承了Struts1的优点,并在此基础上进行了很多改进。Struts2采用了MVC...
在hello.jsp中,可以使用Struts2的OGNL表达式来获取Action中的属性值。 6. **运行和测试**: 在MyEclipse中配置好Tomcat服务器,然后右键点击项目选择“Run As” -> "Run on Server"。如果配置正确,访问`...
在这个“使用Struts2开发Java Web应用程序”的压缩包中,我们可以期待学习到如何利用Struts2来构建高效、可维护的Web项目。 首先,Struts2的核心是Action类,它是业务逻辑处理的中心。开发者需要创建Action类,并...
Eclipse使用struts2标签库tld文件
4. **Struts2的标签库**:掌握如何在JSP页面中使用Struts2标签,例如表单标签、数据绑定和错误处理。 5. **数据验证**:学习使用Struts2的内置验证框架,或者自定义验证规则,确保用户输入的有效性。 6. **Session...
Struts2支持JSR303/JSR349 Bean Validation,可以在Action类中添加校验注解,或者使用Struts2的Validator插件进行更复杂的验证。例如,对于用户名和密码: ```java public class RegisterForm { @NotEmpty(message...