Smt在行动 使用饭先的框架构建Web应闭 George franciscus OOK INSID STRUTS IN ACTION ≡
Struts在行动 使用领先的Java框架构建Web应用 Ted Husted Cedric Dumoulin George Franciscus David Winterfeldt (著) Eric Liu (译)
1介绍 15 关于本书 16 隹创建了 Struts? 12 什么是应用框架? 12.1其它类型的框架 使用的技术 1.3.1超文本传输协议(HTTP)- 1.3.2公共网关接口(CGD) 1.3.3 Java servlet 1.3. 4 JavaServer Pages 1.3.5JSP标签 1.3.6 JavaBeans Struts开始于三万英尺 14.1建立简单的Suts应用 14.2跳到开始开发了 14.3.1创建 Action For 4.3.2创建 Register Action 14.3.3创建 Struts配置文件( struts-config. xml) 1434创建页面 144 再看看 144.1做了什么 144.2它如何工作 1443什么还没做
1 介绍 .........................................................................................................15 1.1 关于本书 ...............................................................................................................................16 1.1.1 谁创建了Struts? ................................................................................................................16 1.2 什么是应用框架? .................................................................................................................17 1.2.1 其它类型的框架 ...............................................................................................................17 1.3 使用的技术 ...........................................................................................................................17 1.3.1 超文本传输协议 (HTTP).................................................................................................18 1.3.2 公共网关接口(CGI)..........................................................................................................19 1.3.3 Java servlet.............................................................................................................................19 1.3.4 JavaServer Pages ...................................................................................................................19 1.3.5 JSP标签 .................................................................................................................................20 1.3.6 JavaBeans ..............................................................................................................................21 1.3.7 Model 2..................................................................................................................................23 1.4 Struts开始于三万英尺.........................................................................................................23 1.4.1 建立简单的Struts应用......................................................................................................24 1.4.2 跳到开始开发了 ...............................................................................................................24 1.4.3.1 创建ActionForm ...........................................................................................................25 1.4.3.2 创建 RegisterAction.....................................................................................................25 1.4.3.3 创建Struts 配置文件 (struts-config.xml)....................................................................26 1.4.3.4 创建页面.......................................................................................................................28 1.4.4 再看看...............................................................................................................................29 1.4.4.1 做了什么.......................................................................................................................29 1.4.4.2 它如何工作...................................................................................................................29 1.4.4.3 什么还没做...................................................................................................................32 1.5 小结 .......................................................................................................................................32
译者的话 年初为了构建一个需要快速开发的大型应用的时候,我找到了 Struts。这个框架使我得 以从杂乱的思绪中解放出来,从而结合B构建了一个清晰的系统。从此以后,让我与 Strut 结下了不解之缘,从而也对开源项目有了新的认识。而不是仅仅限于现成的商业解决方案。 我接触的第一本书就是《 Struts in Action》。这之前也只是从从 Apache的 Struts主业 和相关链接和一些文章获取信息。当然这些信息显得杂乱。是《 Struts in action》才使我对 这个强大的框架有了一个系统的理解和看法。从而用这些认识再来改进原来构建的系统。 年中,因为不开心,辞去了一家大型∏公司的技术总监职务,回家休养。一时闲下来, 还觉得浑身不舒坦,甚至原来没显现的程序员的职业病——“颈椎病”也发作了(真是奇 怪!!)。不过不能闲着,后来想反正没事,国内缺乏中文的 Struts资料和书籍,何不将 此书翻译出来,供大家参考。国内还有好多不懂英语的程序员,也并不见得就不是很好的程 序员 于是开干! 以前倒是翻译过许多资料,但第一次翻译书籍,其中艰辛难以言表。尤其是有颈椎的折 磨,每次总坐不到两三个小时。有时兴致所至忘记了休息,又只好去接受中医的“惨无人道” 的按摩治疗和难咽的中药。 最近终于将此书初稿译完,我将逐章进行校对和发布到一些论坛上去。个人精力和水平 毕竞有限,不妥之处,望各位读者能批评指正 最后,感谢我的妻子女儿。我妻子在我赋闲的日子毫无怨言,默默支持我的工作。而我 的小女儿在我告诉她我忙不能给她讲故事的时候,也从没有纠缠过我,自己阅读去了 Eric Liu lau@hotmail o. com.cI QQ28730869 13 October 2003
译者的话 年初为了构建一个需要快速开发的大型应用的时候,我找到了 Struts。这个框架使我得 以从杂乱的思绪中解放出来,从而结合 EJB 构建了一个清晰的系统。从此以后,让我与 Struts 结下了不解之缘,从而也对开源项目有了新的认识。而不是仅仅限于现成的商业解决方案。 我接触的第一本书就是《Struts in Action》。这之前也只是从从 Apache 的 Struts 主业 和相关链接和一些文章获取信息。当然这些信息显得杂乱。是《Struts in Action》才使我对 这个强大的框架有了一个系统的理解和看法。从而用这些认识再来改进原来构建的系统。 年中,因为不开心,辞去了一家大型 IT 公司的技术总监职务,回家休养。一时闲下来, 还觉得浑身不舒坦,甚至原来没显现的程序员的职业病——“颈椎病”也发作了(真是奇 怪!!)。不过不能闲着,后来想反正没事,国内缺乏中文的 Struts 资料和书籍,何不将 此书翻译出来,供大家参考。国内还有好多不懂英语的程序员,也并不见得就不是很好的程 序员。 于是开干! 以前倒是翻译过许多资料,但第一次翻译书籍,其中艰辛难以言表。尤其是有颈椎的折 磨,每次总坐不到两三个小时。有时兴致所至忘记了休息,又只好去接受中医的“惨无人道” 的按摩治疗和难咽的中药。 最近终于将此书初稿译完,我将逐章进行校对和发布到一些论坛上去。个人精力和水平 毕竟有限,不妥之处,望各位读者能批评指正。 最后,感谢我的妻子女儿。我妻子在我赋闲的日子毫无怨言,默默支持我的工作。而我 的小女儿在我告诉她我忙不能给她讲故事的时候,也从没有纠缠过我,自己阅读去了。 Eric Liu shqlau@hotmail.com cn_fbi@yahoo.com.cn QQ 28730869 13 October 2003
前 此刻你手中的是几个 Struts最重要的开发者的艰辛成果。Ted, Cedric, George,和 David 他们一起完成了一个卓越的工作,阐释了 Struts的工作原理和如何实际使用它。如果你是一 个新手,本书将使你很快入将 Struts应用到你的实际项目中。当然即使是最老道的 Struts开发 者也可以从中学到不少东西 我从上世纪90年代末开始对Web框架发生兴趣。我准备写一种语言,它可以使我能解决 在进行高级开发时的某些问题-通过它可以使我从动态分配内存中的问题中解放出来 一开始,我真正想实现的是如何使一些Wcb应用开发者的工作变得容易一点。但后来 Struts那以置信的流行说明我并不是唯一在这些问题中挣扎的人 Struts满足了通常的需要 当早期的JSP规范草案发布时(0.91和0.92),此文档中最迷人概念的是JSP使用了两种 基本设计风格的理念。 Model l设计主要表现在表单提交可以回复到创建该表单的 Servlet或 JSP页面。这种设计鼓励混合表瑰逻辑(用来创建表单)和业务逻辑(用来验证表单输入和 处理请求事务)。这种设计在那些开发者仅具单一技能(比如页面设计者懂一些编程而JAVA 开发者也知道一些HIML)时经常使用。而且在时间第一的情况下也很有用(原型必须在下 周一运行而我们还没有获得风险投资)。而经验告诉我们, Model 1设计在后来会很难进 行维护和升级。 相反, Model2设计是将表单提交给一个控制器组件。控制器组件调度相应的业务逻辑 组件来完成请求的事务。业务逻辑组件和数据库交互,并获取它在下次用户交互所需要的信 息。控制器组件将响应页面的创建委派给表现组件,表现组件只有一个目的,就是创建响应。 你可能想 Model2听起来好像更加复杂—也许甚至好想要完全扼杀简单应用。实际上,基于 Model2创建一个应用并不比用 Model 1创建同一个应用花太多的时间。但主要的优点会很 快显现出来。如果你创建了一个正确的应用,对一层的主要修改,应该基本不会影响到其它 层(如果有的话),并且你可以马上在没受影响的层重用你的逻辑。 虽然,所有这些对Web应用架构的聪明的研究正在进行,但我的专业工作让我也对方向 感兴趣。我正为一个专为长途运输行业提供信息服务的美国公司工作,并且我们正在准备将 业务扩展到欧洲。这样就产生了处理多语言和国际化问题的需要。我很快就受到了我用来实 现基本MⅤC的单一的简单 Servlet的折磨,即它没有解决包含一个语言选择控件的问题。 对国际化问题的第一次努力是我尝试使用JSP.1种的新的标记来创建“用户接口组件” 它最终导致了现在 Struts一个标记<bean: message 紧跟着,我加入到 Sun Microsystems并工作于 Tomcat servlet和 jSP container的创建(我 是 Tomcat4的基础 Catalina servlet容器的主要架构者)。这个开发的大部分工作是在 Apache 的开源社区内进行,作为 Jakarta项目的一部分一本项目由1999年Sun贡献了 servlet和JSP 参考实现源代码给 Apache起始。然而,我并不满意于那时候 Model2-面向应用设计的状态,所 以我开始想怎样来解决这个问题 虽然我已经有了一个漂亮的注意,来解决剩下的问题,但实际代码并没开始,直到在2000 年纪念日我和我的家人在 Oregon海岸过周末的时候,我将我的笔记本电脑也带了去,并应起 了我妻子的很大抱怨。后来成为 Action Form的最初最初版本就诞生在那个周末,它组建开 始解决大量有趣的问题。另外,为表现组件和业务组件定义逻辑名称的理念一以及集中在 个文件中定义这些名称的理念一非常清楚地有益于解决在开发两层之间的协调和重叠问题
前言 此刻你手中的是几个Struts最重要的开发者的艰辛成果。Ted, Cedric, George, 和 David, 他们一起完成了一个卓越的工作,阐释了Struts 的工作原理和如何实际使用它。如果你是一 个新手,本书将使你很快入将Struts应用到你的实际项目中。当然即使是最老道的Struts开发 者也可以从中学到不少东西。 我从上世纪90年代末开始对Web框架发生兴趣。我准备写一种语言,它可以使我能解决 在进行高级开发时的某些问题--通过它可以使我从动态分配内存中的问题中解放出来。 一开始,我真正想实现的是如何使一些Web应用开发者的工作变得容易一点。但后来 Struts那以置信的流行说明我并不是唯一在这些问题中挣扎的人—Struts满足了通常的需要。 当早期的JSP规范草案发布时(0.91和0.92),此文档中最迷人概念的是JSP使用了两种 基本设计风格的理念。Model 1 设计主要表现在表单提交可以回复到创建该表单的Servlet或 JSP页面。这种设计鼓励混合表现逻辑(用来创建表单)和业务逻辑(用来验证表单输入和 处理请求事务)。这种设计在那些开发者仅具单一技能(比如页面设计者懂一些编程而JAVA 开发者也知道一些HTML)时经常使用。而且在时间第一的情况下也很有用(原型必须在下 周一运行而我们还没有获得风险投资)。而经验告诉我们, Model 1 设计在后来会很难进 行维护和升级。 相反,Model 2 设计是将表单提交给一个控制器组件。控制器组件调度相应的业务逻辑 组件来完成请求的事务。业务逻辑组件和数据库交互,并获取它在下次用户交互所需要的信 息。控制器组件将响应页面的创建委派给表现组件,表现组件只有一个目的,就是创建响应。 你可能想Model 2听起来好像更加复杂—也许甚至好想要完全扼杀简单应用。实际上,基于 Model 2 创建一个应用并不比用Model 1创建同一个应用花太多的时间。但主要的优点会很 快显现出来。如果你创建了一个正确的应用,对一层的主要修改,应该基本不会影响到其它 层(如果有的话),并且你可以马上在没受影响的层重用你的逻辑。 虽然,所有这些对Web应用架构的聪明的研究正在进行,但我的专业工作让我也对方向 感兴趣。我正为一个专为长途运输行业提供信息服务的美国公司工作,并且我们正在准备将 业务扩展到欧洲。这样就产生了处理多语言和国际化问题的需要。我很快就受到了我用来实 现基本MVC的单一的简单Servlet的折磨,即它没有解决包含一个语言选择控件的问题。 对国际化问题的第一次努力是我尝试使用JSP1.1种的新的标记来创建“用户接口组件” —它最终导致了现在Struts一个标记。 紧跟着,我加入到Sun Microsystems 并工作于Tomcat servlet 和 JSP container的创建(我 是Tomcat 4的基础 Catalina servlet 容器的主要架构者)。这个开发的大部分工作是在Apache 的开源社区内进行,作为Jakarta项目的一部分—本项目由1999年Sun 贡献了servlet 和 JSP 参考实现源代码给Apache起始。然而,我并不满意于那时候Model 2-面向应用设计的状态,所 以我开始想怎样来解决这个问题。 虽然我已经有了一个漂亮的注意,来解决剩下的问题,但实际代码并没开始,直到在2000 年纪念日我和我的家人在Oregon海岸过周末的时候,我将我的笔记本电脑也带了去,并应起 了我妻子的很大抱怨。后来成为ActionForm的最初最初版本就诞生在那个周末, 它组建开 始解决大量有趣的问题。另外,为表现组件和业务组件定义逻辑名称的理念—以及集中在一 个文件中定义这些名称的理念—非常清楚地有益于解决在开发两层之间的协调和重叠问题
以及实现层间改变相互影响的隔离目标 通过我在 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