【Jsp精品源码栏目提醒】:网学会员为广大网友收集整理了,搭建Struts2开发环境 - 软件工程,希望对大家有所帮助!
搭建 Struts2 开发环境Struts2 概述 在 Struts 的官方网站上,写着下面两段话: Apache Struts 2 is an elegant extensible framework for creatingenterprise-ready Java web applications. The framework is designed tostreamline the full development cycle from building to deploying tomaintaining applications over time. Apache Struts 2 was originally known as WebWork 2. After workingindependently for several years the WebWork and Struts communitiesjoined forces to create Struts2. This new version of Struts is simplerto use and closer to how Struts was always meant to be. 其大意为:Apache Struts2 是一个为企业级应用打造的优秀的、可扩展的WEB 框架,该框架旨在充分精简应用程序的开发周期,从而减少创建、发布直到应用所花费的时间。
Apache Struts2 原本就是举世闻名的 Webwork2,在各自经历几年的发展之后,Struts 和 WebWork 社区决定合二为一,也就是今天的 Struts2。
Struts 是一个基于 Model2 的 MVC 框架,为应用程序的 WEB 层提供了良好的结构严谨的实现。
Struts 发展较早,早期的 Struts1.X 已被很多 J2EE 程序员熟悉,经过多年来的发展,这支队伍变得越来越大,很多企业级应用程序都是基于Struts 开发的。
Struts2 与 Struts1.X 已经不能再放到一起比较,虽然都是对 MVC 架构模式的实现,本质却完全不同。
Struts2 的前身是 WebWork,其实现方式和功能都要优于 Struts1.X但是,Struts 先入为主,很多应用程序都基于 Struts,其生命力和普及度使得 WebWork 落于下风。
随着新思想和新架构的不断涌入,特别是WEB2.0 被大量提及,Struts1.x 显然无法跟上日新月异的变化,在很多应用上显得力不从心,最终催生了 Struts2.0。
可以说 Struts2.0 是为变而变。
很大程度上,Struts2.0 无法避开投机取巧的嫌疑。
不过,借助 Struts 的名声,加上 WebWork 构建良好的框架,二者取长补短,确实不失为一种黄金组合和一种绝佳的宣传方式。
笔者杜撰此文时,可以下载到的最新版本为 2.1.0,但他的魅力已初露尖角,应该会有很好的前途。
Struts2 的新特征 如果读者熟悉 Struts1.X,会发现 Struts2 比 Struts1.X 有了巨大的变化: 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 使用 Acti