ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:31.93KB ,
资源ID:7898595      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7898595.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(教学管理系统设计与实现外文资料翻译.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

教学管理系统设计与实现外文资料翻译.docx

1、教学管理系统设计与实现外文资料翻译题目名称:Struts And Tiles Aid Component-based Development 译文题目:Struts 和 Tiles 辅助基于组件的开发原文题目:Struts and Tiles aid component-based development原文出处:Thinking in Java, 3rd ed. Revision 4.0 Struts 和 Tiles 辅助基于组件的开发1994 年,当时主流的采用 Web 应用程序的开发才刚开始。由于 Web 的不成熟,只有较少的工具能帮助开发人员构建 Web 软件。结果,在特定解决方案中的

2、应用程序混合了 HTML 代码与应用程序逻辑。很显然,UI 设计的更改和业务逻辑的更新在大型应用程序中既困难又昂贵,因为紧耦合的表示和逻辑将这两种元素搅和在一起,进而导致错误和缓慢的进展。而且,混合的代码要求部分开发人员具备 UI 设计知识,或者要求开发人员与图形设计人员之间有紧密的工作关系,这常常会造成时间上的浪费。JSP 技术和标记的引入稍微改善了这种更改问题,因为能够将逻辑和显示分离。UI 设计人员能够对显示进行卓有成效的工作,同时开发人员能够专注于逻辑。然而,这种方法仍存在一些缺陷。尤其是某些操作(还有公共操作)的开发仍很困难。验证表单就是典型的例子。正如很多人所知,表单验证的过程类似

3、于这样:显示表单;等待用户填写然后提交数据。检查各个域值是否有效;如果有错误,则重新显示表单。处理用户输入的数据,可能将其存储在一个数据库中。在新页面上向用户显示处理的结果或下一步(可能是另一个表单)。如果在这一过程中只使用 JSP 页面,那么在需要再次更改代码时,您会发现,按照可管理性这条思路,将控制从一个页面“路由”至另一个页面很难。您想把第 4 步和第 3 步置于同一个页面吗?如果使用多个单独的 JSP 页面,那么如何跟踪哪个页面链接至其它页面,以及在要更改一个页面的文件名或位置时该怎么做呢?而且,在第 2 步检测到某个域中的错误时,如何重新显示带有一条错误消息的原始表单,但还要保留用户

4、已填入的值呢?Struts,一种开放源码“模型-视图-控制器”框架,通过帮助解决所有这些问题,从而使开发人员的工作更为轻松。本文并不深入讨论 MVC 平台。有关这方面的信息,请参阅 Malcolm Davis 所写的标题为”Struts,an open-source MVC implementation”的 developerWorks文章。您正在阅读的这篇文章讨论自 Malcolm 的文章发表以来对 Struts 所做的更改,包括 Tiles 库。至于代码的安装过程,本文仅涉及 Jakarta Tomcat 4.0(Catalina)最小安装所需的步骤。如果您没有使用 Tomcat,请查阅手

5、册以了解您的应用程序服务器。 Struts 和 Tiles 的背景知识Craig McClanahan 是 Apache Tomcat项目的技术主管,他创立 Struts 项目以满足对这方面的渴望。它作为“模型-视图-控制器”框架首选的并经过正式认可的开放源码实现,已经越来越流行了。它以与交付产品一起分发的形式受到来自 Sun 和 IBM 的支持。因为 Craig 积极参与 Tomcat 和 Struts 的开发工作,所以 Struts 将继续与 JSP 和Servlet规范的参考实现高度兼容,进而与所有 J2EE 应用程序服务器高度兼容。Malcolm Davis 的有关Struts的dev

6、eloperWorks文章涵盖了整个 Struts 0.9 的功能;为了简短起见,我将只讨论对 Struts 0.9 的更改以及他未涉及的 Struts 主题。目前的 Struts 发行版本是 1.0.2,但自 2002 年 3 月 19 日起有一个标记为 1.1-b1 的 beta 测试版可供使用。因为 beta 测试版表示编码工作已经完成,在这种情况下只进行错误修正,所以极有可能 1.1 的最终版本不久就将面市,而在 Struts 邮件列表上已经有这种呼声。因此,任何利用 Struts 的新项目很可能都将 1.1 代码作为基础,而这就是我将讨论的内容。 自版本0.9以来对Struts框架的

7、有用添加包括经改进的表单验证功能、可以通过 XML 声明来指定表单元素和可以动态地定义 bean 特性。然而,最重要的添加可能是将 Tiles 模板库合并到 Struts 分发版中。您是否曾希望用一种更简便的方法创建一组页面(或可能是整个应用程序),并且每个页面上的用户界面保持一致,有相同的导航栏、页眉和页脚等等?在含有较多内容的页面内显示多个类 portlet 的矩形内容的方法又如何?在 Tiles 框架的帮助下,您可以完成这两项任务和其它更多任务。通过定义屏幕和一组可嵌入在 JSP 页面中的标记的核心 XML 文件来插入静态和动态内容,Tiles框架允许您构建组件化的视图,并按您的希望来组

8、装它们,从而有助于提高灵活性、可重用性、一致性和可维护性。Struts 和 Tiles 之间交互良好,因为这两个项目的开发人员已经认识到这两者具有互补性,所以决定让这两者共同协作。开发人员可以指定 Tiles 页面定义作为Struts操作的目标视图(按照Struts的说法是一个forward)。因为 Struts 和 Tiles 都遵循 JSP 标记库规范,所以可以在 JSP 页面中将 Struts 标记和 Tiles 标记相互混合在一起。 您可能渴望尝试 Tiles 框架,并确切地了解它可以做些什么。如果您希望在自己安装本文的示例前先了解这些示例的运行情况,可以看看它们在带有嵌入式 Tomc

9、at 的 JBoss 服务器上是怎样运行的。Struts 和 Tiles 是用于 Web 开发的辅助工具,所以您需要设置一个 Web 容器对它们进行实验;将 Tomcat 设置为您的容器,然后设置 Struts 和 Tiles 包,我会在下一节中循序渐进地讲述这一过程。这些指导信息还向您展示了如何安装本文的样本代码。一旦完成了这一切,您就准备好继续本文。示例 1 应用程序没有利用 Struts 和 Tiles;它演示了以页面为中心的方法。通过将它与示例 2 比较,您会看到 Struts 和 Tiles 将如何极大地提高您的 Web 开发的结构化程度和可管理性。最后,示例 3 演示了将功能添加到

10、一个使用 Struts 和 Tiles 的、并且已经启动且正在运行的 Web 应用程序中是多么地简单。安装 Struts 和 Tiles在带有 J2SE 1.4 SDK、Ant 1.4.1、Tomcat 4.0.3 和 Struts 1.1-b1 的 Linux 机器上,下列指导信息已经经过了测试。如果因这些软件包的版本不同而遇到困难,您可能需要使用上面所指定的版本,以便开始了解 Struts 和 Tiles 的设置和开发。转至 TOMCAT_HOME/bin 目录。通过输入 ./startup.sh (如果在运行 UNIX)或 ./startup.bat (如果在运行 Windows)来启动

11、 Tomcat 服务器。将 Web 浏览器指向 http:/localhost:8080/examples 来验证 Tomcat 是否已启动并正确运行。缺省情况下,Tomcat 附带了 Examples 应用程序。如果 Examples 不工作,则 Tomcat 发生故障;请参阅 Tomcat 文档来解决问题。Hello, World:首次尝试要研究我们第一个示例,请遵循下列步骤:转至 EX1_INSTALL 目录。编辑 build.xml 文件,为 tomcat.install.dir 填写适当值。尽管该值可以是绝对路径,也可以是相对路径;但如果您不了解 Ant 是如何工作的,或许最好使用绝

12、对路径。输入 ant deploy 。这将把第一个示例应用程序构建到 WAR 文件中,以备部署,然后将它部署至 Tomcat。如果得到一个指出无法找到 Ant 的错误,请参阅 “安装 Struts 和 Tiles”一节中的第 3 步,并确保您的路径环境变量包含 Ant。将 Web 浏览器指向 http:/localhost:8080/ex1。您应该会看到“Hello, World”页面。示例 1 Web 应用程序非常简单,它演示了常见的 Web 应用程序功能。几乎所有应用程序(也包括这个最简单的应用程序)都要求所有页面具有一致的用户界面。通常,这意味着所有页面都有公共的徽标、顶部栏、上部或左侧

13、导航栏、主体和页脚。在示例 1 中,我有意对每一页面中的公共项进行硬编码,以便说明这一点。Web 应用程序开发的新手一般会通过将现有代码复制粘贴到新文档中来添加新的功能页面。很容易预见这种方法难以应付将来的变化。随着每一次增加新内容,更改诸如菜单、徽标等公共页面元素的过程花的时间会更长,更容易出错。很明显,复制粘贴方法对于任何具有大量页面的应用程序是一个糟糕的模型。敏锐的读者会认识到 JSP 技术提供了包括来自其它 servlet 和页面中的内容的功能。我们为什么不可以仅仅使用 标记来合并公共元素呢?这肯定会使那些元素更易于更改。如果您需要更改菜单,只要更改包含菜单的文件。所有其它页面只需使用

14、 标记就可以得到菜单中的内容,这样这些页面可以自动获得对菜单的更改。但是,当需要更改实际布局或需要重新组织文件和目录时,这种方法有不足之处。当决定更改以页面为中心模型下的布局时,必须对每个单个页面进行更改,因为即使对公共元素的访问已做了集中化处理,但仍然是由每个页面中的 HTML 代码来描述布局本身(有哪些是元素及它们的位置)。同样地,当决定更改包含了某个公共元素内容的文件的文件名或位置时,必须逐个更改使用该元素的文件。什么原因呢?因为每个文件根据固定的物理文件名,而不是逻辑对象名来查找每个公共元素。因此,必须更新每个对物理文件名的引用。Tiles 视图组件可以解决这些问题。如果更进一步地研究

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

16、结构仍是很脆弱的。Struts 表单自动化可以解决这种笨拙的表单处理缺陷。Hello, World:经改进的新的应用程序现在,让我们研究刚才看到的 Web 应用程序示例中的 Struts 和 Tiles 版本。请执行下列步骤:转至 EX2_INSTALL 目录。 编辑 build.xml 文件,为 struts.install.dir 和 tomcat.install.dir 填写适当的值。 输入 ant deploy 。这将把第二个示例应用程序构建到 WAR 文件中以备部署,然后将它部署至 Tomcat。如果看到关于无法复制文件的错误,请检查第 2 步以确保正确设置了 struts.inst

17、all.dir 和 tomcat.install.dir 。 将 Web 浏览器指向 http:/localhost:8080/ex2。您应该会看到“Hello, World”页面。 如果您已看过 EX2_INSTALL 目录,您很可能会说:“这里要做些什么呢?有好多文件。”与大多数强调更有序和结构化程度更高的技术一样,对于 Struts 和 Tiles,在一开始需要在管理文件上花些工夫。对于只有少许页面的小项目,这一额外开销可能微不足道。然而,随着项目变大,Struts 和 Tiles 方法逐渐会显示其优越性。让我们一点点地体会吧!这里我不想讨论 EX2_INSTALL/src/WEB-IN

18、F/web.xml;尽管这个文件实质上与其示例 1 中相对应的文件不同,而且大多数行都是样板,但理解这些设置对于着手开发并不太重要。在 EX2_INSTALL/src/WEB-INF/struts-config.xml 中,自先前有关 Struts 的文章以来重要的更改有在 节中 DynaActionForm 的使用及在 节中 tile 作为目标的使用。在 Struts 的以前版本中,您必须为每个所使用的表单 bean 定义一个 Java 类。仅当不同的 HTML 表单共享域时,才可以在这些表单之间共享表单 bean。总之,每个表单 bean 需要有一个 Java 类是一个非常麻烦的要求。现在

19、,您可以在 struts-config.xml 文件中指定表单 bean 的特性,而且是迅速地!不必有保存 Java 类的单独文件,就能自动创建这种 bean。象处理 Hashtable 对象一样,用值的强类型对象来处理动态表单 bean。至于操作映射,一旦确定将 Tiles 库合并到 Struts 分发版之后,那么指定一个 tile 作为目标,就完全是增加一项逻辑而已。您会在概要信息表单的操作映射中看到 tile 目标(tile.profileInput 和 tile.profileOutput)。在 input 属性和 path 属性中指定 tile。注:可以指定 tile 目标弥补了我在

20、分析以页面为中心的模型中提到的更改文件名和位置中的缺陷:tile 目标是虚拟名称或逻辑名称,而不是物理名称。 在 标记中指定 tile。您可以将定义命名为任何希望的名称,而且 name 属性不必是与 path 属性匹配的子字符串。我为第一个定义选择了名称 rootLayout ,以表明它是应用程序中的页面要遵循的基本布局。注:路径是 /tiles-layout/rootLayout.jsp。如果查看 EX2_INSTALL/src/web 下的 /tiles-layout/rootLayout.jsp,您会看到这种布局是多么的简单整齐。用户界面的设计人员会“爱上它”。还请注意:它不包含任何代码

21、,所以用户界面设计人员在进行更改时不必担心破坏什么。 rootLayout.jsp 中的 标记对应于 tiles-defs.xml 中 rootLayout 定义内的 标记。注:每个 标记都有一个表示逻辑名称的属性。每个逻辑名称映射至通过在 tiles-defs.xml 内的 中使用 标记指定的名称和值。通过在 rootLayout.jsp 页面中使用逻辑名称,而非物理名称,并通过在 tiles-defs.xml 中统一物理名称,我们就可以更改文件名,并使项目文件系统的组织易于管理。 真正节省时间和适应性方面最显著的增强方面体现在布局的继承,这是 Struts 的另一个特性。在 tiles-d

22、efs.xml 中,“Page definitions”栏下面的节有两个页面:tile.profileInput 和 tile.profileOutput。这些名称是任意的,如果您不喜欢 tile. 前缀,可以不使用它(但是您使用的名称必须与 struts-config.xml 文件中指定的目标相匹配)。这些名称应该与 struts-config.xml 中 标记中的 path 属性匹配。这些名称还应该与 struts-config.xml 中 标记中的 input 属性匹配。在开发用户界面时, 标记中的 extends 属性是体现开发灵活性的地方。通过指定主布局并扩展它,您不仅能灵活更改象

23、topBanner 、 topMenu 、 panel1 、 panel2 这样的公共元素及其它组件, 还能随意地将不同元素放在页面上及更改它们的位置。例如,您可以添加 panel4 (一个 tile)以在页面左侧的 panel2 下显示本地天气。只要天气代码不需要用户的任何输入或与页面上的其它组件交互,您就可以添加 panel4 而不必对应用程序业务逻辑做任何更改,甚至不必更改除 rootLayout.jsp 以外的 JSP 页面。 Struts 和 Tiles 更复杂的使用篇幅所限,不允许我再深入讨论 Struts 和 Tiles 包其它一些实用的方面,但我真的想简要地谈一下,这样您可以对

24、 Struts 和 Tiles 可以做些什么有所了解。如果有足够的需求,可能这些内容会是将来文章的主题。您会在本文的两个示例中注意到,我编码了名、姓、喜欢的颜色和出生日期等基本验证。我所采用的这类简单验证实际上可由 Struts 通过使用它的格式验证来执行,这样节省了花在编码 Java 语句的时间。例如,检查是否是空字符串、检查字符串是否与日期相匹配或检查是否与其它某些正则表达式匹配等,这都是可行的。您会发现将格式验证用作第一级检查会是十分方便的,在检查是否符合更复杂的业务逻辑规则之前,程序可用第一级检查来消除一些明显错误。Struts 提供了一个验证器包,可以通过 WEB-INF 目录中的

25、validator.xml 描述符来配置该包。在这两个示例中我没有包含该验证器包;如果您想试一下,它包含在 Struts 1.1-b1 包中。Struts 和 Tiles 包的另一个有用特性是与容器管理的安全性相集成。很多人都在使用诸如 IBM WebSphere 或 JBoss 之类的应用程序服务器。这些服务器通过处理安全性中所涉及的许多日常任务使认证和授权更便捷,让您摆脱必须对它们进行的编码。Struts 允许您根据用户角色有条件地向不同用户显示 bean 数据的不同位,这可以通过自动查询容器来决定。同样地,Tiles 框架允许您根据用户角色有条件地向不同用户显示不同的视图组件,这也是通过

26、自动查询容器来决定的。我在自己的应用程序中使用这些特性向管理员、常规用户或 guest 用户显示不同的菜单。最后要说明,我在示例中没有谈到国际化,但对于那些构建将来最终要以多种语言发布的大型应用程序的人来说,这实际是一个重要方面。Struts 让您创建消息资源特性文件,这些文件指定标签、标题和其它输出的文本。如果您用几种不同语言的输出填入消息资源特性文件的话,只要简单更改语言设置就能将所有窗口构件和硬编码的文本更改成适当语言,甚至在应用程序运行中也可以更改。未来的方向Struts 和 Tiles 将走向何方呢?刚出现的两个更改必定会使 Struts 和 Tiles 更加有用。第一个更改是工作流

27、管理系统。您很可能处理过许多多步骤的业务过程;目前,在 Web 应用程序中对它们进行编码可以是一个主要的麻烦,因为您必须协调不同的步骤,而每一步骤都是 Java 类中的一个单独方法或是一个单独的 servlet 或 JSP 页面。商业市场中的工具通过使开发人员能对多步骤的业务过程进行建模,然后自动生成 Java 代码作为进一步开发的基础,来帮助管理这些过程。Struts 工作流管理系统将提供类似的功能,使开发人员能够编写业务过程的脚本,这些过程在 Web 应用程序中跨多个页面,并指定这些页面如何通过核心的基于规则的系统进行交互。另一个同样有望即将出现的更改是将 Struts 标记合并到 JSP

28、 标准标记库(JSP Standard Tag Library)中,这个库是 Jakarta 项目,它试图产生一个有用的定制标记集合,从而简化并加快用 JSP 页面编写 Web 应用程序的开发。其中的意义在于:Web 应用程序的开发将比过去任何时候都更容易,因为您可以通过使用定制标记的标准机制得到一个在此基础上做进一步开发的预先编写好的代码库。而且,JSP STL 标准中这个项目的合并甚至确保了 Struts 和 Tiles 功能更为广泛的分发和可用,这意味具有这种技能的开发人员在众多项目中大有作为,而且公司更加容易获得开发 Web 应用程序的熟练人才。Struts and Tiles aid

29、 component-based developmentIn 1994, when mainstream adoption of Web application development had only just begun. Because of the immaturity of the Web, developers had few tools to help them build Web software. As a result, applications mixed HTML code with application logic in ad hoc solutions. Unde

30、rstandably, UI design changes and business logic updates were both difficult and expensive in large applications because the tightly coupled presentation and logic obfuscated both elements, leading to errors and slow progress. Also, the mixed code necessitated knowledge of UI design on the part of d

31、evelopers or a close working relationship between developer and graphic designer that often made for inefficient use of time.The introduction of JSP technology and tags ameliorated the change problem somewhat because logic and display could be separated. UI designers could productively work on displ

32、ay while developers could focus on logic. However, this approach still suffered shortcomings. Notably, certain operations - common ones, too - were still hard to develop. The validating form is the classic example. As many of you know, the process of form validation goes something like this:Display form; wa

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1