1、 摘要
本文主要讲述了 Struts (以 Struts1.0.2 为例)的工作原理,安装以及配置方面的问题。然后结合一个实例,详细讨论了 Struts 在实际开发过程中的应用,最后提供一些在开发过程中积累的经验,供大家参考。
2 、关键词
Struts 、 MVC 、 J2EE 、 Tiles 、 Framework
3 、 Framework
Framework 即架构(框架),这里指软件的架构方式,为什么要提 Framework 呢?请允许我从 J2EE 讲起。
J2EE 体系包括 JSP 、 Servlet 、 EJB 、 WEB SERVICE 等多项技术。这些技术的出现给电子商务时代的 WEB 应用开发提供了一个非常有竞争力的选择。怎样把这些技术组合起来,形成一个适应项目需要的稳定架构是项目开发过程中一个非常重要的步骤。
此步骤一般主要由架构设计师完成,设计师将根据项目需求,对 J2EE 体系中的各处技术进行筛选取舍,并考虑到开发过程中的角色分工、后期的运行维护,以及系统扩展性等诸多因素,建立系统的架构。
一个成功的软件需要有一个成功的架构,但软件架构的建立是一个复杂而又持续改进的过程,软件开发者们不可能对每个不同的项目做不同的架构,而总是尽量重用以前的架构,或开发出尽量通用的架构方案, Struts 就是其中之一, Struts 是流行的基于 J2EE 的架构方案,其他常用的基于 J2EE 的架构方案还有 Turbine 、 RealMothods 等。
4 、 Struts 的起源
Struts 最早是作为 Apache Jakarta 项目的组成部分问世运做。项目的创立者希望通过对该项目的研究,改进和提高 Java Server Pages (JSPs) 、 Servlet 、标签库以及面向对象的技术水准。当前最高发行版本为 Struts1.0.2 ,可以到 http://jakata.apache.org/Struts 下载。
Struts 这个名字来源于在建筑和旧式飞机中使用的支持金属架。它的目的是为了帮助你减少在运用 MVC 设计模型来开发 Web 应用的时间。你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用 Servlets 和 JSP 的优点来建立可扩展的应用, Struts 是一个不错的选择。
5 、 Struts 工作原理
MVC 即 Model-View-Controller 的缩写,是一种常用的设计模式。 MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。
Struts 是 MVC 的一种实现,它将 Servlet 和 JSP 标记(属于 J2EE 规范)用作实现的一部分。 Struts 继承了 MVC 的各项特性,并根据 J2EE 的特点,做了相应的变化与扩展。
控制: 大家可以看到有一个 XML 文件 Struts-config.xml ,与之相关联的是 Controller ,在 Struts 中,承担 MVC 中 Controller 角色的是一个 Servlet ,叫 ActionServlet 。 ActionServlet 是一个通用的控制组件。这个控制组件提供了处理所有发送到 Struts 的 HTTP 请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是 Action 类的子类)。另外控制组件也负责用相应的请求参数填充 Action From (通常称之为 FromBean ) , 并传给动作类(通常称之为 ActionBean )。动作类实现核心商业逻辑,它可以访问 java bean 或调用 EJB 。最后动作类把控制权传给后续的 JSP 文件,后者生成视图。所有这些控制逻辑利用 Struts-config.xml 文件来配置。
视图: 主要由 JSP 生成页面完成视图, Struts 提供丰富的 JSP 标签库: Html , Bean , Logic , Template 等,这有利于分开表现逻辑和程序逻辑。
模型: 模型以一个或多个 java bean 的形式存在。这些 bean 分为三类: Action Form 、 Action 、 JavaBean or EJB 。 Action Form 通常称之为 FormBean ,封装了来自于 Client 的用户请求信息,如表单信息。 Action 通常称之为 ActionBean ,获取从 ActionSevlet 传来的 FormBean ,取出 FormBean 中的相关信息,并做出相关的处理,一般是调用 Java Bean 或 EJB 等。
流程: 在 Struts 中,用户的请求一般以 *.do 作为请求服务名,所有的 *.do 请求均被指向 ActionSevlet , ActionSevlet 根据 Struts-config.xml 中的配置信息,将用户请求封装成一个指定名称的 FormBean ,并将此 FormBean 传至指定名称的 ActionBean ,由 ActionBean 完成相应的业务操作,如文件操作,数据库操作等。每一个 *.do 均有对应的 FormBean 名称和 ActionBean 名称,这些在 Struts-config.xml 中配置。
核心: Struts 的核心是 ActionSevlet , ActionSevlet 的核心是 Struts-config.xml 。这在后面还会详细讨论。
6 、 Struts 安装
Struts 的安装比较简单,下面的以 Tomcat 4.0.4 为例,讲述安装过程。
首先请到 http://jakarta.apache.org/Struts 下载 Struts ,建议使用 release 版,现在最高版本为 1.0.2 ,下载后得到的是一个 ZIP 文件。
将 ZIP 包解开,可以看到这个目录: lib 和 webapps , webapps 下有一些 WAR 文件。
假设你的 Tomcat 装在 c:\Tomcat 下,则将那些 WAR 文件拷贝到 C:\Tomcat\webapps ,重新启动 Tomcat 即可。
打开浏览器,在地址栏中输入: http://localhost:8080/Struts-example/index.jsp ,若能见到“ powered by Struts ”的深蓝色图标,即说明成功了。这是 Struts 自带的一个例子,附有详细的说明文档,可以做为初学者的入门教程。
另外, Struts 还提供了一系统实用对象: XML 处理、通过 Java reflection APIs 自动处理 JavaBeans 属性、国际化的提示和消息等。