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一个标记<bean:message>。 紧跟着,我加入到Sun Microsystems 并工作于Tomcat servlet 和 JSP container的创建(我 是Tomcat 4的基础 Catalina servlet 容器的主要架构者)。这个开发的大部分工作是在Apache 的开源社区内进行,作为Jakarta项目的一部分—本项目由1999年Sun 贡献了servlet 和 JSP 参考实现源代码给Apache起始。然而,我并不满意于那时候Model 2-面向应用设计的状态,所 以我开始想怎样来解决这个问题。 虽然我已经有了一个漂亮的注意,来解决剩下的问题,但实际代码并没开始,直到在2000 年纪念日我和我的家人在Oregon海岸过周末的时候,我将我的笔记本电脑也带了去,并应起 了我妻子的很大抱怨。后来成为ActionForm的最初最初版本就诞生在那个周末, 它组建开 始解决大量有趣的问题。另外,为表现组件和业务组件定义逻辑名称的理念—以及集中在一 个文件中定义这些名称的理念—非常清楚地有益于解决在开发两层之间的协调和重叠问题