以及实现层间改变相互影响的隔离目标 通过我在 Tomcat的工作,逐渐认识到开放源代码开发的好处,这也是使 Struts进入开源 世界的自然选择。这个选择一以及 Struts处理一些最基本的Web应用设计问题的优雅方式一 导致了它真正的令人惊讶的接受程度。成千上万的开发人员下载 Struts,克服学习曲线,通 过 STRUTSUSER邮件列表提问和接收问题,并在世界各地成功地开发了许多基于Suts的 应用 当然,并不是我自己一个人能完成所有的事情。Ted, Cedric, David,以及所有过去和现在 的 Struts项目的参与者,连同 George和 Struts开发人员社区,共同使这个框架远远超过了 我自己能够独立完成的状况。对它们,我表示最衷心的感谢。而对你,本书的读者,我希望 你会发现 Struts是你另一件有用的武器,能够值得你去花时间修习其技术和APl Portland. Oregon
以及实现层间改变相互影响的隔离目标。 通过我在Tomcat 的工作,逐渐认识到开放源代码开发的好处,这也是使Struts进入开源 世界的自然选择。这个选择—以及Struts 处理一些最基本的Web应用设计问题的优雅方式— 导致了它真正的令人惊讶的接受程度。成千上万的开发人员下载 Struts,克服学习曲线,通 过 STRUTSUSER邮件列表提问和接收问题,并在世界各地成功地开发了许多基于Struts的 应用。 当然,并不是我自己一个人能完成所有的事情。Ted,Cedric,David,以及所有过去和现在 的Struts 项目的参与者,连同George 和 Struts开发人员社区,共同使这个框架远远超过了 我自己能够独立完成的状况。对它们,我表示最衷心的感谢。而对你,本书的读者,我希望 你会发现Struts 是你另一件有用的武器,能够值得你去花时间修习其技术和API。 Enjoy! Craig McClanahan Portland, Oregon
到2000年,我们进入了Java时代。早期的宣传都已实现,并且出现了一些有趣的开发工 具和库。我已经写了好几年的Web应用程序了。像许多开发者一样,我开始时使用 JavaScript 和Perl写一些简单的应用。这是一个强大的组合,但难以维护。接下来是 ColdFusion,它更 强大,但那时它对我的客户的钱包来说还是太昂贵了。我甚至尝试了 File Maker Pro,它很有 趣,但是非常非常的专有化。 我的这些连续Web应用的主要客户是一个公共电视台。电视台的主要资金来源(现在仍然是) 年度拍卖。本地的支持者提供货物或者服务,人们通过拍卖购买它们来支持电视台。当然 我们会很快在网站上递交这些高端东西的图像:艺术品,度假服务包,汽车,签名手稿,等 等 1998年,我们使用一个 javAscript和Perl写成的应用来接受这些高端物品的“预出价”。 实际的出价在现场直播的电视拍卖会进行。此应用要做的就是设定起拍价。1999年,我们在 销售时接受在线和电话出价。每年我们都在在线拍卖上使用不同的平台,因为每一年我们都 发现已有的平台不能满足所有的需要。 因为我们已经很满意使用 Apache Httpd server,我花了一些时间来看看是否能使用初生 的 Jakarta站点,在这里我发现了 Struts。首先,我不能确保项目是不是还活动。但文档看起 来似乎是,所以我订阅了邮件列表,看是不是真的有人在。一个示例应用已经包含在文档中 我从这个开始起步,试图决定这个框架是不是我想要的。于是我进入了“ Struts应用之旅”, 它描述了这个例子如何工作的,并逐屏幕进行了说明。我将这个经历递交到列表中,在这里 其他一些订阅者慢慢纠正了我对某些问题的误解。我继续跟踪回应这个列表,紧握所能帮助 其他人,也受到其他先行者的帮助。这个列表的访问稳定增长。到年底, Struts的架构师和 领导开发者 Craig McClanahan,正在寻找帮助编写10 release版本文档的人。2000年9月,我 被推举为为一个 Struts提交者,最终我在2001年6月提交了1.0 接下来,我开始建立我的 More about struts”网页。首先,首先,它仅是一个保持我所 写的 Struts材料的地方。后来我开始添加一些连接到其它人发布的一些 Struts“扩展”的链 接,然后是逐渐开始出现的 Struts文章。我的 Struts资源页面增长很快,也更为许多人所知 所以我将它移到了 Struts的主站。如今他已经是一个为Stu世界的每个人所熟知的一个包 含许多资源链接的页面。 Struts列表是一个用用信息的宝藏,特别是因为 Craig自己也亲自来传授一些实现细节 和架构理念。但是在列表文档发现最好的信息的确是个挑战。所以我开始编写一个“精华区” 来只想那些最好的邮件链接,它最后成为一个大型的FAQ。2001年6月, GUru决定开辟一 个 Struts论坛和FAQ,所以我们将主要的 Struts FAO移到了JGuu,我还继续管理它 同时,出版商开始注意起 Struts,索稿邮件也发到了我的邮箱。经过和其他提交者商量 的结果,我们终于决定和 Manning Publication合作。象 Apache样, Manning有个长久 的质量承诺。虽然我们想尽快地完成一本 Struts书籍,但是我们也想把它写成是尽可能最好 的 Struts书
序 到2000年,我们进入了Java时代。早期的宣传都已实现,并且出现了一些有趣的开发工 具和库。我已经写了好几年的Web应用程序了。像许多开发者一样,我开始时使用JavaScript 和 Perl写一些简单的应用。这是一个强大的组合,但难以维护。接下来是ColdFusion,它更 强大,但那时它对我的客户的钱包来说还是太昂贵了。我甚至尝试了FileMaker Pro,它很有 趣,但是非常非常的专有化。 我的这些连续Web应用的主要客户是一个公共电视台。电视台的主要资金来源(现在仍然是) 年度拍卖。本地的支持者提供货物或者服务,人们通过拍卖购买它们来支持电视台。当然, 我们会很快在网站上递交这些高端东西的图像:艺术品,度假服务包,汽车,签名手稿,等 等。 1998年,我们使用一个JavaScript 和 Perl 写成的应用来接受这些高端物品的“预出价”。 实际的出价在现场直播的电视拍卖会进行。此应用要做的就是设定起拍价。1999年,我们在 销售时接受在线和电话出价。每年我们都在在线拍卖上使用不同的平台,因为每一年我们都 发现已有的平台不能满足所有的需要。 因为我们已经很满意使用Apache HTTPD server,我花了一些时间来看看是否能使用初生 的Jakarta 站点,在这里我发现了Struts。首先,我不能确保项目是不是还活动。但文档看起 来似乎是,所以我订阅了邮件列表,看是不是真的有人在。一个示例应用已经包含在文档中。 我从这个开始起步,试图决定这个框架是不是我想要的。于是我进入了“Struts应用之旅”, 它描述了这个例子如何工作的,并逐屏幕进行了说明。我将这个经历递交到列表中,在这里 其他一些订阅者慢慢纠正了我对某些问题的误解。我继续跟踪回应这个列表,紧握所能帮助 其他人,也受到其他先行者的帮助。这个列表的访问稳定增长。到年底,Struts的架构师和 领导开发者Craig McClanahan,正在寻找帮助编写1.0 release版本文档的人。2000年9月,我 被推举为为一个Struts 提交者,最终我在2001年6月提交了 1.0 。 接下来,我开始建立我的 “More About Struts”网页。首先,首先,它仅是一个保持我所 写的Struts 材料的地方。后来我开始添加一些连接到其它人发布的一些Struts “扩展” 的链 接, 然后是逐渐开始出现的Struts文章。我的Struts资源页面增长很快,也更为许多人所知, 所以我将它移到了Struts的主站。如今他已经是一个为Struts 世界的每个人所熟知的一个包 含许多资源链接的页面。 Struts列表是一个用用信息的宝藏,特别是因为Craig 自己也亲自来传授一些实现细节 和架构理念。但是在列表文档发现最好的信息的确是个挑战。所以我开始编写一个“精华区” 来只想那些最好的邮件链接,它最后成为一个大型的FAQ。2001年6月, JGuru 决定开辟一 个 Struts 论坛和 FAQ,所以我们将主要的Struts FAQ 移到了 JGuru,我还继续管理它。 同时,出版商开始注意起Struts,索稿邮件也发到了我的邮箱。经过和其他提交者商量 的结果,我们终于决定和Manning Publication合作。象 Apache一样,Manning 有一个长久 的质量承诺。虽然我们想尽快地完成一本Struts 书籍,但是我们也想把它写成是尽可能最好 的Struts书
成果就是 Struts in action。它完全是一本“团队书籍”。 David winterfeldt, Struts validator的创建者,非常乐意地撰写了 Validator一章。同样, Cedric Dumoulin, Tiles 的创建者,也编写了 Tiles一章。 George franciscus提供了关键的第一章,这有助于帮助新 手上路。我们甚至让 Craig写了前言(他说“宁肯进行编程”)。 当然,其他 Struts开发者和提交者在每个阶段都审阅书的手稿,我们也感谢他们提供了很 多有用的意见。 嗯,关于拍卖呢?我们已经进入了使用 Struts的第三个年头了。现在不是每年重写我们 的应用了,而是每年进行一些改进。 Fairport, New York
成果就是Struts in Action。 它完全是一本“团队书籍”。David Winterfeldt, Struts Validator的创建者,非常乐意地撰写了Validator 一章。同样,Cedric Dumoulin,Tiles 的创建者,也编写了Tiles 一章。 George Franciscus 提供了关键的第一章,这有助于帮助新 手上路。我们甚至让Craig写了前言 (他说“宁肯进行编程”)。 当然,其他 Struts 开发者和提交者在每个阶段都审阅书的手稿,我们也感谢他们提供了很 多有用的意见。 嗯,关于拍卖呢?我们已经进入了使用Struts的第三个年头了。 现在不是每年重写我们 的应用了,而是每年进行一些改进。 Ted Husted Fairport, New York
我们认识到许多人对使本书成为可能的支持和理解。我们希望那些我们最应该感谢的人 一那些在像这样一个项目进行时站在我们一边的家人和朋友一已经知道我们是多么的感激 他们的爱心和耐心。 当还有更多的人,他们并没有留下姓名,也为此书贡献了许多力量。 首先,是有许多志愿开发者进行了Suts的开发。数百个人的帮助才使 Struts成为今天的 样子。许许多多的人是通过了邮件列表进行了宝贵的坦率的间接贡献。其他一些人则直接贡 献了代码或者文档。比如对于1.02 release,他们就包括 Arun m. Thomas, Chris assenza, Chris Audley, Craig R. McClanahan, David Geary, dlon Gillard, Don Clasen, Ed Burns, Eric Wu, Florent Carpentier, Jeff Hutchison, Jimmy Larsson, John Rousseau, John Ueltzhoeffer, Larry McCay, Luis Arias, Marius Barduta, Martin Cooper, Matthias Kerkhoff, Mike Schachter Niall Pemberton, Oleg V Alexeev, Paul Runyan, Ralph Schaer, Rob Leland, Robert Hayden, Sean Kelly, Stanley Santiago, Wong Kok Kaio 好多 Struts开发人员也慷慨的评审了本书的手稿,并提供了很多有用的意见。 Dan talks 就提供了本书第2章的很多注解。 Richard Star对第3章的彻底评论对我们定稿 Hello world logon例子帮助甚大。 我们也感谢那些对手稿提供反馈的其他开发者,如 Martin Cooper, Vincent masool,John Yu, Jon Skeet, Max Loukianov, James Holmes, Bill Wallace, Nathan Anderson, Cody Burleson, Darryl Thompson, James F. McGovern, Steve Wilkinson,和 Shawn Bayern。我们的技术责任 编辑, Steve wilkinson和 Stephen LeClair,更应该特别感谢,他们找出了书中尽可能的小 错误。我们也非常感谢我们的组版编辑, Liz Welch,它修改了我们书中许多笔误 本书也非常感谢我们的出版商, Marjan Bace和 Manning的编辑小组。 Manning并不是 花费时间和金钱在此书上,他们应该值得我们向他们提供最好的东西的时间,但读者将 仅要我们的工作,他们要我们最好的工作。这耗费了许多的努力以及大
鸣谢 我们认识到许多人对使本书成为可能的支持和理解。我们希望那些我们最应该感谢的人 —那些在像这样一个项目进行时站在我们一边的家人和朋友—已经知道我们是多么的感激 他们的爱心和耐心。 当还有更多的人,他们并没有留下姓名,也为此书贡献了许多力量。 首先,是有许多志愿开发者进行了Struts的开发。数百个人的帮助才使Struts成为今天的 样子。许许多多的人是通过了邮件列表进行了宝贵的坦率的间接贡献。其他一些人则直接贡 献了代码或者文档。比如对于 1.02 release,他们就包括Arun M. Thomas,Chris Assenza, Chris Audley,Craig R. McClanahan,David Geary,dIon Gillard,Don Clasen,Ed Burns,Eric Wu,Florent Carpentier,Jeff Hutchison,Jimmy Larsson,John Rousseau,John Ueltzhoeffer, Larry McCay,Luis Arias,Marius Barduta,Martin Cooper,Matthias Kerkhoff,Mike Schachter, Niall Pemberton,Oleg V Alexeev,Paul Runyan,Ralph Schaer,Rob Leland,Robert Hayden, Sean Kelly,Stanley Santiago,Wong Kok Kai。 好多 Struts开发人员也慷慨的评审了本书的手稿,并提供了很多有用的意见。Dan Malks 就提供了本书第2章的很多注解。Richard Starr对第3章的彻底评论对我们定稿Hello World logon 例子帮助甚大。 我们也感谢那些对手稿提供反馈的其他开发者,如Martin Cooper,Vincent Masool,John Yu,Jon Skeet,Max Loukianov,James Holmes,Bill Wallace,Nathan Anderson,Cody Burleson, Darryl Thompson,James F. McGovern,Steve Wilkinson,和Shawn Bayern。我们的技术责任 编辑, Steve Wilkinson 和Stephen LeClair,更应该特别感谢,他们找出了书中尽可能的小 错误。我们也非常感谢我们的组版编辑, Liz Welch,它修改了我们书中许多笔误。 本书也非常感谢我们的出版商, Marjan Bace和Manning 的编辑小组。Manning 并不是 仅要我们的工作,他们要我们最好的工作。这耗费了许多的努力以及大量的时间,但读者将 花费时间和金钱在此书上,他们应该值得我们向他们提供最好的东西
关于此书 Struts框架集合了几种相关的技术,使开发者可以创建易于构建、扩展和维护的基于标 准的应用。 Struts已经是全世界开发人员不管是新手还是老手的框架选择 Struts in action一步步介绍 /Struts框架。并且书中好包含展示此书介绍的最好实践技 术的几个示例应用程序。本书旨在帮助那些需要关于如何使他们的应用运行在 Struts下面的 实际和实战技术的专业技术人员。 开发者用Suts构建Web应用一般在其应用的各部分使用几种相关的技术。一本包含这 些全信息的书才可能会满足众多需求。为了能在一本书里面包含 Struts,我们试图在本书中 包括HIML标记语言,JSP页面语法, JavaBean开发的习惯,或者类似技术的细节。嘉定读 者已经熟知这些技术,以便能跟得上我们表述的例子。并且假定读者熟知URL,文档层次,web 应用档案,其及其他创建并发布Web应用的相关概念。 我们也不包括基本的Java编程语言。关于HIML,JSP, Javabeans,和其他相关技术, 已经有大量的信息。我们假定阅读此书的读者熟知Java语法,应用开发生命周期,以及面 向对象设计概念。关于关系数据库的基础,加上DBC技术,我们建议掌握,但不是必需。 那么我们的注意力将着眼于Web应用和 Struts框架 技术之间的关系已经说明一HIML,Java,数据库,其及其他技术一是本书的焦点,也 是我们讨论最深入的范围 然而,我了那些不太精通 Struts依赖的相关技术的读者,书中也包括了基本的HITP,Java servlet,JSP,核定指标签的介绍。 Roadmap 第l张总体介绍了Web应用的开发,特别介绍了 Struts。我们会看到 Struts是如何编写和 发布的,驱动应用的背后相关技术,以及 Struts的总体架构。在最后,我们开始创建我们的 第一个 Struts应用。 第2章探索 Struts的架构。我们从 Struts架构的总揽开始,紧跟着会仔细看看控制六是如 何在整个框架中流动的。本章最后以一个坦率的关于Suts的强项和弱点的讨论结论结尾 本章旨在给开发人员关于 Struts的各个方面的真正情况的一个坚实基础。也帮助产品经理决 定是否 Struts会很好的适合他们的团队 第3章开始开发一个简单的应用。像第1章的练习一样,这是也简单的登录程序,但是包 括了Web应用的基本组成。其目的是给动手的开发人员在第2部分进入详细的细节之前一个 总体印象。为了照顾实际,我们回过头来将该例子从Stus1.02升级到 Struts 1. I release. 第4章探索 Struts框架的骨千一配置元素。我们也描述了配置web开发描述符和Ant的 build文件,来帮助构建和部署你的应用。 第5章涉及了 Struts action Form这个关键的对象可以扮演应用中的许多角色:传输对象 防火墙,AP,数据校验器,以及类型转换器。我们介绍了几个技术,来有助于你得益于调用form beans的双刃剑的 Struts
关于此书 Struts 框架集合了几种相关的技术,使开发者可以创建易于构建、扩展和维护的基于标 准的应用。Struts 已经是全世界开发人员不管是新手还是老手的框架选择。 Struts in Action 一步步介绍了Struts 框架。并且书中好包含展示此书介绍的最好实践技 术的几个示例应用程序。本书旨在帮助那些需要关于如何使他们的应用运行在Struts下面的 实际和实战技术的专业技术人员。 开发者用Struts构建Web应用一般在其应用的各部分使用几种相关的技术。一本包含这 些全信息的书才可能会满足众多需求。为了能在一本书里面包含 Struts,我们试图在本书中 包括HTML 标记语言, JSP页面语法,JavaBean 开发的习惯,或者类似技术的细节。嘉定读 者已经熟知这些技术,以便能跟得上我们表述的例子。并且假定读者熟知URL,文档层次, web 应用档案,其及其他创建并发布Web应用的相关概念。 我们也不包括基本的Java编程语言。关于 HTML,JSP,JavaBeans,和其他相关技术, 已经有大量的信息。我们假定阅读此书的读者熟知 Java 语法,应用开发生命周期,以及面 向对象设计概念。关于关系数据库的基础,加上JDBC技术,我们建议掌握,但不是必需。 那么我们的注意力将着眼于Web应用和Struts框架。 技术之间的关系已经说明—HTML,Java,数据库,其及其他技术—是本书的焦点,也 是我们讨论最深入的范围。 然而,我了那些不太精通Struts 依赖的相关技术的读者,书中也包括了基本的HTTP,Java servlet,JSP,核定指标签的介绍。 Roadmap 第1张总体介绍了Web应用的开发,特别介绍了Struts。我们会看到Struts 是如何编写和 发布的,驱动应用的背后相关技术,以及Struts 的总体架构。在最后,我们开始创建我们的 第一个Struts应用。 第2章探索Struts的架构。我们从Struts 架构的总揽开始,紧跟着会仔细看看控制六是如 何在整个框架中流动的。本章最后以一个坦率的关于Struts的强项和弱点的讨论结论结尾。 本章旨在给开发人员关于Struts的各个方面的真正情况的一个坚实基础。也帮助产品经理决 定是否Struts会很好的适合他们的团队。 第3章开始开发一个简单的应用。像第1章的练习一样,这是也简单的登录程序,但是包 括了Web应用的基本组成。其目的是给动手的开发人员在第2部分进入详细的细节之前一个 总体印象。为了照顾实际,我们回过头来将该例子从Struts 1.02升级到Struts 1.1 release。 第4章探索Struts 框架的骨干—配置元素。我们也描述了配置web 开发描述符和Ant的 build 文件,来帮助构建和部署你的应用。 第5章涉及了Struts ActionForm。这个关键的对象可以扮演应用中的许多角色:传输对象, 防火墙, API,数据校验器,以及类型转换器。我们介绍了几个技术,来有助于你得益于调用form beans的双刃剑的Struts