免费在线版本
(非印刷免费在线版)
InfoQ 中文站出品
本书由 InfoQ 中文站免费发放,如果您从其他渠道获取本
书,请注册 InfoQ 中文站以支持作者和出版商,
并免费下载更多 InfoQ 企业软件开发系列图书。
本书主页为
http://infoq.com/cn/minibooks/starting-struts2
InfoQ 中文站:时刻关注企业软件开发领域的变化与创新
深入浅出 Struts 2
Starting Struts 2
作者:Ian Roughley
翻译:李剑
© 2008 C4Media Inc.
版权所有
C4Media 是 InfoQ.com 这一企业软件开发社区的出版商
本书属于 InfoQ 企业软件开发系列图书
如果您打算订购InfoQ的图书,请联系 books@c4media.com
未经出版者预先的书面许可,不得以任何方式复制或者抄袭本书的任何
部分,本书任何部分不得用于再印刷,存储于可重复使用的系统,或者
以任何方式进行电子、机械、复印和录制等形式传播。
本书提到的公司产品或者使用到的商标为产品公司所有。
如果读者要了解具体的商标和注册信息,应该联系相应的公司。
英文版责任编辑:Diana Plesa
英文版封面设计:Dixie Press
英文版美术编辑:Dixie Press
中文版翻译:李剑
中文站审校:张凯峰 霍泰稳
中文版责任编辑:霍泰稳
中文版美术编辑:吴志民
欢迎共同参与InfoQ中文站的内容建设工作,包括原创投稿和翻译等,
请联系 editors@cn.infoq.com。
10 9 8 7 6 5 3 2 1
作者致谢
如果没有 Webwork、XWork 和 Struts2 所有开发人员不懈的努
力,这本书将永远无法面世。在我从一个开源项目的使用者变成一
个开源项目的开发人员的过程中,Patrick Lightbody 和 Jason Carreira
对我的帮助将永远铭刻我心。
同时,我也应该感谢这几位技术评审人员——Don Brown,
Philip Luppens 和 Rene Gielen,是他们为本书内容的不断扩充提出了
最终的调整方案。还有 Jim Krygowski 和 James Walker,他们从繁忙
的工作日程安排中特意抽出时间,站在 Struts2 以外的视角上,对本
书的内容及连贯性提出了中肯的意见。如果没有他们的帮助,本书
势必失色不少。我还要感谢 Floyd Marinescu,他对我给予了充分的
信任,并为我提供了网络版和印刷版的写作机会。
我还要谢谢我才华横溢的妻子 LeAnn (也就是 STR Worldwide),
她一直支持着我的工作,并且长久以来一直对书稿进行评审和非技
术层面的分析,这是我的无价之宝。
目 录
简介...................................................................... 1
WEB世界中,STRUTS2 身处何方....................... 4
SERVLETS...........................................................................................5
JSP和SCRIPTLET开发 ........................................................................5
基于ACTION的框架.............................................................................6
基于组件的框架 .................................................................................6
伟大的均衡器——AJAX......................................................................7
核心组件............................................................... 8
配置 ...................................................................................................9
ACTIONS ...........................................................................................14
INTERCEPTORS(拦截器) ...............................................................18
值栈与 OGNL ..................................................................................22
结果类型..........................................................................................23
结果和视图技术 ...............................................................................24
架构目标............................................................. 29
概念分离..........................................................................................29
松耦合..............................................................................................30
易测试性..........................................................................................31
模块化..............................................................................................34
惯例重于配置...................................................................................37
提高效率技巧 ..................................................... 39
重用 ACTION 的配置 .........................................................................39
在配置中使用模式匹配调配符 .........................................................40
使用替代的URI映射方法..................................................................41
了解拦截器的功能 ...........................................................................44
使用提供的拦截器栈........................................................................46
利用返回类型...................................................................................47
利用数据转换...................................................................................48
利用列表数据项支持........................................................................50
在ACTION中暴露领域模型................................................................52
尽可能使用声明式验证 ....................................................................53
把CRUD操作放到同一个ACTION中..................................................56
在可能的地方使用注释.................................................................... 59
视图技术选项 .................................................................................. 63
了解框架提供的标签库及其特性 ..................................................... 64
自定义UI 主题 ................................................................................. 70
为通用的输出创建全局结果 ............................................................ 71
声明式异常处理............................................................................... 71
国际化 ............................................................................................. 73
其他技术集成 ......................................................77
页面修饰和布局............................................................................... 77
业务服务/依赖注入.......................................................................... 80
数据库 ............................................................................................. 83
安全................................................................................................. 84
AJAX ................................................................................................ 85
关于作者 .............................................................87
参考资料 .............................................................88
InfoQ 中文站:时刻关注企业软件开发领域的变化与创新
InfoQ 中文站 Java 社区
关注企业 Java 社区的变化与创新
http://www.infoq.com/cn/java
1
简介
自从 1997 年第一个 Servlet 规范发布以来,我们在用 Java 开发
Web 应用这条路上已经走了很远很远。在过去的时间里,我们学会
了很多,也曾经不止一次地对开发 Web 应用的方式做出过改进。
Apache Struts 的产生就是一个伟大的跨越,它的价值远远超过了我
们目光所能及的极限。
Apache Struts 在 2000 年 5 月由 Craig McClanahan 发起,并于
2001 年 7 月发布了 1.0 版本。从技术的角度上来讲,它是在开发
Web 程序上的一次跨越性的进步,但更重要的是,它在最恰当的时
候出现在了人们的眼前。
到那时为止,Web 开发已经度过了漫长的岁月,很多大型项目都
已经完工进入了维护期,在这个过程中,代码的可重用性与可维护性
也给开发人员好好的上了几课。.com 的兴起也引发了对 Web 应用开
发更好的解决方案的诉求——当 Apache Struts 在 2000 年出现的时候,
Web 项目的数量仍然显著地增长着,而且毫无终止之势。Struts 一出
现便大受欢迎,更成为了以后几年内 web 开发的实际标准。
Struts21是Struts的下一代产品。而最初提案Struts Ti所设想的发展
方向,在Struts的现有代码的基础上是很难完成的。在发起提案的时
候,Patrick Lightbody把多个不同的Web框架的领导者邀请到了一起,
希望大家能够达成共识,协力完成一个通用框架。虽然最终由于各种
原 因 ,Patrick Lightbody 的 愿 望 未 能 实 现 , 但 是WebWork 和
1 http://struts.apache.org/2.x
更多精彩内容:http://www.infoq.com/cn