TURING 图灵程序设计丛书 Java系列 MANMING Struts 2 in Action Struts 2 实战 Donald Brown [美]Chad Michael Davis ScottStanlick 马召等译 人民邮电出版社 POSTS & TELECOM PRESS
译者序 我从2002年开始接触Java。虽然Java是我选修的一门课程,但是当第一次看到Java简洁语法 背后的强大功能时,我就被它深深地吸引了。而真正认识Java Web开发是在2003年。那年暑假 我找了一份不错的兼职工作,为国内某一大型企业开发后台管理系统。记得当时使用的是 WebLogic Portal7,主要的开发方式是前台JSP调用后台的EB。正好有一个从美国工作回来的“大 虾”负责带我,我从他那里第一次听说了Struts、.Spring、Hibernate等 一系列的开源技术,于是开 始了对这些技术的研究。可惜的是,毕业之后我没有选择进入那家公司工作,也就失去了向那位 “大虾”继续学习的机会,现在回想起来还蛮后悔的 时间一晃到了2007年,我已经工作了3年,工作经验的丰富和对技术的热爱让我终于决定要写 一本技术书,同时也为开源社区做一些贡献。在这3年中,我一直从Suts中受益,但是也饱受Suts 的煎熬。清晰的MVC框架 、JSP文件的逻辑命名、功能强大的SP标签都让我备感轻松,同时 FormBea即与域对象的重复、烦琐的配置文件、机械的开发方式也让我吃够了苦头。当时正好 WebWork与Struts结合的产物Struts2也开始成熟起来,在我肤浅地研究这些内容之后,就决定开始写 本关于Struts2的书,这也正是我的博客htp:blog.csdn.net/struts2产生的直接原因。从2007年7月30 日第一篇文章开始到现在,我的博客已经累计了几十篇文章,其中有些是从Sus2宫方网站直接翻 译过来的内容,有些是自己工作经验的总结,但是每一篇文章都凝聚了我对Suts2的热爱与推崇。 2008年6月11日 我收到了人民邮电出版社图灵公司编辑傅志红女士的一封来信,问我是否 愿意翻译Manning出版社久负盛名的in Action.系列的图书之一Snu2 in Action 我高兴都来不及 怎么能不愿意呢?于是在简短的过程性事务之后,我就正式开始了本书的翻译,同时也放弃了自 己写书的想法。这本书写得这么好,我为什么还要班门弄斧呢?能够翻译出来让喜欢Struts2的读 者一起分享,我已经很满足了。此后的无数个深夜,这个世界上就又多了 盏昏暗的灯和 一颗澎 湃的心。也正是经历了这本书的翻译历程,我才知道翻译一本书远比想象的要辛苦。但是毕竟我 是第一次翻译技术书籍,英语基础又不是很好,所以其中肯定会有错误或者不合适的地方,还请 大家多多谅解,多多指点。大家可以上我的博客直接评论。非常感谢大家能够阅读本书,相信本 书一定能够让大家深入了解Struts2。 本书的中文版本能够出版要非常感谢以下人员 口那位“大虾”,出于个人隐私的原因,我没有说明他是谁,但是如果“大虾”看到的话。 他肯定会知道的。如果没有他带我迈进ava的门槛,或许我现在还在门外徘徊。 口我可爱的媳妇儿,她通读了全书,找出了很多明显的错误和不合适的表述。 口我所就职的公司以及各位领导和同事,是他们给了我学习和成长的机会。 马召
前 言 2006年年中,我开始做一个新项目。由于这是一个我自己公司开发的项目,所以我很高兴可 以自己来选择所用的技术。之前,我一直在使用Suts1,这个框架让我坚信没有框架就无法工作, 但是我却不再认为这个框架是最好的选择。对于这个新项目来说,我想选用一个新的、第二代的 Web应用程序开发框架 老实说,我也想不起来当时为什么选择了Struts2。我记得也曾经考虑过使用Spring的MVC 框架,但是,肯定有些什么原因使我最终选择了Struts2。大概是因为我判断这个项目会更需要 Struts2,所以选择了它。至少,最初这个决定并未令我充满激情。但实际开发之后,我简直不能 相信这个框架的功能竟然如此强大。这个框架是对软件工程领域的一个完美贡献,把架构的组件 化和灵活性推向新的高度,并且积极主动接受其他技术的发展成果。虽然很多人喜欢比较不同的 开发框架,争辩到底哪个框架最好。但是我认为,任何一个强有力的竞争者都会很快地吸收其他 技术的长处。Struts2所遵循的“约定优于配置”的原则正好印证了上述观点。 那年底,我已经完全被Struts2吸引了。正好那个时候Manning出版社联系我,问我是否愿意 和Don Brown-一起为他们的实战系列(In Action)写一本Struts2方面的书。虽然来年的工作非常 忙,但是,正像他们说的那样,我不能拒绝这个机会。我很荣幸能够跟Do合作,而且能够向他 讨教关于Struts2的技术细节本身就是一件乐事。单凭这点我参与写作就非常值得了。 最初的计划是重写Patrick Lightbody和Jason Carreira合著的形eb形%ork In Action。你应该知道 Struts2的核心架构直接来源于WebWork。在还没有任何介绍Struts2的书籍时,很多开发人员,也 包括我,都通过那本书来学习Struts2。当我们开始写本书时,由于有高度活跃的社区的支持,Struts 2已经远远地超越了WebWork.这个核心。最终,我们写出了一本全新的关于Struts2的书。尽管如 此,由于是通过阅读We形b%ork In Action学习Struts2的,因此我对那本书满怀敬意 从那以后,时光飞逝。在接下来的一年中,我们抽出大量时间写书,修订,从审稿人和Manning 新书预读项目参与者中收集反馈,之后从头再来。到了后来,我们发现如果得不到某些帮助,将 永远也完成不了这本书。我们很幸运地找到了Scott Stanlick,他是Struts2强有力的倡导者和积极 分子,帮助我们完成了非常重要的几章。最终,我们完成了这个写作计划。 现在书写完了,就在你手里。好好享受吧。我希望我们为之付出了辛勤汗水的书能够帮你轻 松地进入Struts2的世界。请登录Manning出版社的作者在线论坛给我们反馈信息,并与整个社区 分享你的见解。 Chad Davis
致 谢 我们非常感谢在摆写这本书的过程中所有做出重大贡献的人。首先,如果没有Manning出版 社的Jackie Carter、Michael Stephens和Marjan Bace,这本书根本不会开始。其次,本书所表现出 来的连贯性和一致性要归功于开发编辑Cynthia Kane。我们也非常感谢Benjamin Berg、Dottie Marsico、Mary Piergies、Karen Tegtmeyer、Katie Tennant、Anna Welles,,以及所有Manning出版社 的其他工作人员,他们的贡献不太为人所知。 我们还要感谢那些花费了大量的时间阅读原稿,并从中挑出了所有的问题的开发人员。尤其 要感谢的是技术审稿人Wes Wannemacher,,在印刷之前,他最后审阅了一遍原稿。以下审稿人的 宝贵建议使得本书得以从初稿变为值得大家花费时间和金钱的图书,他们是:Christopher Schultz Jeff Cunningham、Rick Evans、Joseph Hoover、Riccardo Audano、Matthew Payne、Bill Fly、Nhoel Sangalang、Matt Michalak、Jason Kolter、.Patrick Steger、.Kiryl Martsinkevich、.Maggie Niemann Patrick Dennis、Horaci Macias Viel、.Tony Niemann、Peter Pavlovich、Andrew Shannon、Bas Vodde 和Wahid Sadik。 最后,我们诚挚地感谢那些参加Manning新书预读项目的读者,特别是在作者在线论坛上留 下反馈意见的读者,他们的参与极大地提高了本书的最终质量。 我们非常感谢Matthew Lindsey,他提供了文本资源的西班牙语翻译 谢谢大家 Donald Brown 这本书最初始于Struts in Action,Second Edition,我们准备在Ted Husted编写的非常畅销的第 一版基础上追加一些新的内容,由普就职于Manning出版社的天才编辑Jackie Carter负责,合著者 是值得信赖的Nick Heudecker。当书都快写完三分之二的时候,我向编辑忐忑不安地承认我已经 开始使用Struts2了。不用说,很快会过时的内容被废止了,于是开始了这个新计划。主题变了, 我们也迎来了一位大家强烈推荐的新合作者Chad Davis,他后来一次又一次证明了他的价值。为 了帮助我们尽快地出版这本书,精力充沛的Scott Stanlick也加入了进来,而且推动事情顺利进展 非常感谢我们的开发编辑和产品团队,他们的一丝不苟和无私奉献给我留下了深刻印象。 如果没有Struts和WebWork社区的辛勤工作,就不会有Struts2的今天。这是开源领域中少有 的合作产物之一。它的成功是两个社区品质的见证。由衷地感谢这个项目的创始人CigR McClanahan (Struts).Richard Oberg (WebWork 1).Jason CarreiraPatrick Lightbody (WebWork 2),感谢他们的远见卓识和对这项事业的执著推动。当开始将Web Work2的代码整合进Apach
2致谢 Struts2时,Web Work的核心开发人员Rene Gielen、Rainer Hermanns、TobyJee、Alexandru Popescu. lan Roughley,还有Jason和Patrick,花费了大量的时间成功开发了Struts2。非常感谢让人信赖的 Struts开发人员Ted Husted、Martin Cooper、.James Mitchell、Niall Pemberton、Laurie Harper、Paul Benedict和Wendy Smoak,他们在整合过程中发挥了作用。从那以后,BobLee、Musachy Barroso, Antonio Petrelli、Nils_Helge Garli、.Philip Luppens、Tom Schneider、.Matt Raible、Dave Newton. Brian Pontarelli、Wes Wannemacher和Jeromy Evans等社区贡献者继续推动着Struts2的发展。他们 开发了一系列的关键特性,例如插件系统、Portlet支持、基于约定的配置,以及很多集成插件。 最后,我个人非常感谢我的妻子也是最好的朋友Juli,以及我快乐的源泉一我的儿子 Mkoa。非常感谢我的父母培养了我持续挑战自我并且保持心态平和的性格。非常感谢BAE系统 公司的Rudy Rania、Atlassian公司的合作创始人Mike Cannon-Brooks和Scott Farquhar,.感谢他们对 开源项目的支持,以及对我参与Struts的支持。非常感谢Apache软件基金会所有伟大的志愿者 谢谢Struts开源社区。 Chad Davis 首先感谢我的凄子Mry,过去的一年中她一个人工作,独立支撑着整个家庭。我也非常感 Coskun Bayrak博士,他在几年前就不断提议要我把写作技巧与计算机知识结合起来。我也非常 感谢我的父母,他们让我相信我能够完成所有的事情。最后我非常感谢Don Brown和Scot Stanlick,他们是如此好的合作伙伴,期待着与他们见上一面。 Scott Stanlick 我要感谢以下这些人,他们帮助我获得提写本书的机会、忍耐写书的过程,并且最终完成本书, 非常感谢享有盛名的Ted Husted,他推荐我参与编写本书,非常感谢Manning出版社的编辑 Michael Stephens,是他牵线搭桥才有了这次合作 感谢Cynthia Kane和Chad Davis的帮助,让我能够使用Gmail最大的免费空间。即便是站在警 察局抓来的一排嫌疑犯里你都不会指认出的人,却可以因种种机缘巧合去认识了解,这是多么地 有意思。当然,我这么说并不是指他们有任何法律上的纠葛。 感谢邮件列表上的很多人,例如Davc(d)、Laurie、Wes,帮我解决了很多我没有说清楚的代 码问题。 非常感谢我的妻子Jamie Kay,当我为本书每天泡在办公室里写作、咒骂和编码的时候,她 总是鼓励我,并且让我在晚间和周末张弛有度。她安静地照顾着所有的一切,从来没有过一句怨 言。每次我觉得狂躁的时候,Norah Jones、Neil Young以及Sheryl Crow.总能让我理智起来。54街 的烧烤酒吧给我提供了美酒和自助烧烤作为我的夜宵。多少个夜晚,当我在书房写作时,远在天 堂的慈父让我感受到温暖的亲情。那些极好的日本橡木鼓槌在我击鼓宣泄的打鼓疗法中也能够经 久耐用。虽然我一年都没有跟那些好朋友联系了,但是他们还是很理解我。星巴克的咖啡和红牛 饮料让我坚持了下来。还有止疼药、Google、必胜客,以及为了开始使用Struts2而正在读这本书 的你。我希望你在使用Struts2的过程中能更加地顺手,并且能够开始慢慢地享受Struts2