您的位置:首页 > 编程语言 > Java开发

Struts 和 Tiles 辅助基于组件的开发(2)

2007-09-07 15:45 337 查看
Struts 和 Tiles 辅助基于组件的开发(2)

安装 Struts 和 Tiles

在带有 J2SE 1.4 SDK、Ant 1.4.1、Tomcat 4.0.3 和 Struts 1.1-b1 的 Linux 机器上,下列指导信息已经经过了测试。如果因这些软件包的版本不同而遇到困难,您可能需要使用上面所指定的版本,以便开始了解 Struts 和 Tiles 的设置和开发。

如果您没有 J2SE 1.4 SDK(Java 2 Platfrom,标准版 1.4 软件开发工具箱),请从 http://java.sun.com/j2se/1.4/download.html 获取它,然后遵循该软件包中的指导信息来安装它。您需要 SDK 而不只是 JRE,但是您可以选择获取 Forte/SDK 组合。

确保您的环境变量 J***A_HOME 设置为 J2SE 1.4 SDK 的安装目录。

如果没有 Ant 1.4,请从 http://jakarta.apache.org/builds/jakarta-ant/release/v1.4.1/bin/ 获取二进制分发版,然后将它解压缩。对于 Ant 1.4 以及安装指导信息中所要求的所有其它包,请确保获取的都是二进制分发版,而不是源代码;否则,您将不得不在使用它们之前编译这些包。同样,将 Ant 的 bin 目录添加到您的路径中。

请从 http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.3/bin/ 获取 Tomcat 4.0.3 二进制分发版,然后将它解压缩。文件名应该与 jakarta-tomcat-4.0.3-LE-jdk14.tar.gz 相似。为了便于稍后在这些指导信息中引用此名称,让我们暂且任意地将安装目录(至并且包括 Tomcat 目录)的路径称为 TOMCAT_HOME。在 UNIX 系统上,该路径类似于 /home/wchao/jakarta-tomcat-4.0.3-LE-jdk14,在 Windows 系统上类似于 c:/jakarta-tomcat-4.0.3-LE-jdk14。

请从 http://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b1/ 获取 Struts 1.1-b1 beta 测试发行版,然后将它解压缩(不在 TOMCAT_HOME 中)。我们称该目录为 STRUTS_INSTALL。在 UNIX 系统上,该目录类似于 /home/wchao/jakarta-struts-1.1-b1,在 Windows 系统上类似于 c:/jakarta-struts-1.1-b1。

请下载 struts-tiles-examples.tgz ,然后将它解压缩。它将创建三个目录:ex1、ex2 和 ex3。我们分别称这些目录为 EX1_INSTALL、EX2_INSTALL 和 EX3_INSTALL。

转至 TOMCAT_HOME/bin 目录。

通过输入 ./startup.sh (如果在运行 UNIX)或 ./startup.bat (如果在运行 Windows)来启动 Tomcat 服务器。

将 Web 浏览器指向 http://localhost:8080/examples 来验证 Tomcat 是否已启动并正确运行。缺省情况下,Tomcat 附带了 Examples 应用程序。如果 Examples 不工作,则 Tomcat 发生故障;请参阅 Tomcat 文档来解决问题。

Hello, World:首次尝试

要研究我们第一个示例,请遵循下列步骤:

转至 EX1_INSTALL 目录。

编辑 build.xml 文件,为 tomcat.install.dir 填写适当值。尽管该值可以是绝对路径,也可以是相对路径;但如果您不了解 Ant 是如何工作的,或许最好使用绝对路径。

输入 ant deploy 。这将把第一个示例应用程序构建到 WAR 文件中,以备部署,然后将它部署至 Tomcat。如果得到一个指出无法找到 Ant 的错误,请参阅 “安装 Struts 和 Tiles” 一节中的第 3 步,并确保您的路径环境变量包含 Ant。

将 Web 浏览器指向 http://localhost:8080/ex1。您应该会看到“Hello, World”页面。

示例 1 Web 应用程序非常简单,它演示了常见的 Web 应用程序功能。几乎所有应用程序(也包括这个最简单的应用程序)都要求所有页***有一致的用户界面。通常,这意味着所有页面都有公共的徽标、顶部栏、上部或左侧导航栏、主体和页脚。在示例 1 中,我有意对每一页面中的公共项进行硬编码,以便说明这一点。Web 应用程序开发的新手一般会通过将现有代码复制粘贴到新文档中来添加新的功能页面。很容易预见这种方法难以应付将来的变化。随着每一次增加新内容,更改诸如菜单、徽标等公共页面元素的过程花的时间会更长,更容易出错。很明显,复制粘贴方法对于任何具有大量页面的应用程序是一个糟糕的模型。

敏锐的读者会认识到 JSP 技术提供了包括来自其它 servlet 和页面中的内容的功能。我们为什么不可以仅仅使用 <jsp:include/> 标记来合并公共元素呢?这肯定会使那些元素更易于更改。如果您需要更改菜单,只要更改包含菜单的文件。所有其它页面只需使用 <jsp:include/> 标记就可以得到菜单中的内容,这样这些页面可以自动获得对菜单的更改。但是,当需要更改实际布局或需要重新组织文件和目录时,这种方法有不足之处。当决定更改以页面为中心模型下的布局时,必须对每个单个页面进行更改,因为即使对公共元素的访问已做了集中化处理,但仍然是由每个页面中的 HTML 代码来描述布局本身(有哪些是元素及它们的位置)。同样地,当决定更改包含了某个公共元素内容的文件的文件名或位置时,必须逐个更改使用该元素的文件。什么原因呢?因为每个文件根据固定的物理文件名,而不是逻辑对象名来查找每个公共元素。因此,必须更新每个对物理文件名的引用。Tiles 视图组件可以解决这些问题。

如果更进一步地研究 index.jsp 和 form1.jsp(这两个 JSP 文件构成该应用程序),会发现另一个缺点:错误处理相当笨拙。错误处理代码是在 form1.jsp 中,其中我必须重复显示代码,并添加代码以插入用户在前一表单屏幕(index.jsp)中输入的值。如果用户概要信息域曾更改过,或者如果输入表单的显示曾更改过,就必须更新这两个地方中的代码。我可以将 form1.jsp 的错误处理部分与 index.jsp 中的初始表单显示结合在一起,但在初始表单装入时,我仍将需要做额外的工作以把域值设置成空字符串,并且我仍将需要有一个物理文件名来表示用户概要信息的最终静态显示,这意味着发生更改时,该应用程序结构仍是很脆弱的。Struts 表单自动化可以解决这种笨拙的表单处理缺陷。

下表 1 总结了由示例 1 应用程序演示的基于 JSP、以页面为中心的 Web 应用程序模型的优缺点。

表 1. 基于 JSP 方法的概述

优点 说明
入门容易。 只要设置 Tomcat,然后就可以开始编写代码。不需用核心文件来保持同步,也不需要冗长的库初始配置。由每个单独的 JSP 页面或 servlet 来指定连接。
缺点 说明
在应用程序的不同部分中重用表示很困难。 一定程度上,可以使用 <jsp:include/> 标记来解决一部分重用,但它们在管理更改方面不能很好地工作。
公共输入和数据处理任务枯燥且重复。 错误处理是普通 JSP 页面的常见问题。而且,必须手工填入表单值及手工检索请求对象中的那些值,这是一件既耗时又枯燥的工作。
业务逻辑和表示紧密耦合在一起,从而将两者的代码混合在一起。 如果研究一下 index.jsp 和 form1.jsp,就会发现 Java 代码是与 HTML 代码混在一起的。代码很难看,易于出错,而且要做到使 Java 编码或用户界面开发分离开非常困难。最终不得不同时了解 HTML 和 Java 编码对页面的作用。
没有对应用程序流或行为的集中描述。 除非逐个查看页面,否则根本无法了解应用程序的整体印象以及操作流是怎样运作的。随着项目越来越大,容易造成错误、失败和令人迷惑的地方。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: