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

上传人:b****5 文档编号:7898595 上传时间:2023-01-27 格式:DOCX 页数:12 大小:31.93KB
下载 相关 举报
教学管理系统设计与实现外文资料翻译.docx_第1页
第1页 / 共12页
教学管理系统设计与实现外文资料翻译.docx_第2页
第2页 / 共12页
教学管理系统设计与实现外文资料翻译.docx_第3页
第3页 / 共12页
教学管理系统设计与实现外文资料翻译.docx_第4页
第4页 / 共12页
教学管理系统设计与实现外文资料翻译.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

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

《教学管理系统设计与实现外文资料翻译.docx》由会员分享,可在线阅读,更多相关《教学管理系统设计与实现外文资料翻译.docx(12页珍藏版)》请在冰豆网上搜索。

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

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

 

题目名称:

StrutsAndTilesAidComponent-based

Development

 

译文题目:

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

原文题目:

StrutsandTilesaidcomponent-baseddevelopment

原文出处:

ThinkinginJava,3rded.Revision4.0

 

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

1994年,当时主流的采用Web应用程序的开发才刚开始。

由于Web的不成熟,只有较少的工具能帮助开发人员构建Web软件。

结果,在特定解决方案中的应用程序混合了HTML代码与应用程序逻辑。

很显然,UI设计的更改和业务逻辑的更新在大型应用程序中既困难又昂贵,因为紧耦合的表示和逻辑将这两种元素搅和在一起,进而导致错误和缓慢的进展。

而且,混合的代码要求部分开发人员具备UI设计知识,或者要求开发人员与图形设计人员之间有紧密的工作关系,这常常会造成时间上的浪费。

JSP技术和标记的引入稍微改善了这种更改问题,因为能够将逻辑和显示分离。

UI设计人员能够对显示进行卓有成效的工作,同时开发人员能够专注于逻辑。

然而,这种方法仍存在一些缺陷。

尤其是某些操作(还有公共操作)的开发仍很困难。

验证表单就是典型的例子。

正如很多人所知,表单验证的过程类似于这样:

显示表单;等待用户填写然后提交数据。

检查各个域值是否有效;如果有错误,则重新显示表单。

处理用户输入的数据,可能将其存储在一个数据库中。

在新页面上向用户显示处理的结果或下一步(可能是另一个表单)。

如果在这一过程中只使用JSP页面,那么在需要再次更改代码时,您会发现,按照可管理性这条思路,将控制从一个页面“路由”至另一个页面很难。

您想把第4步和第3步置于同一个页面吗?

如果使用多个单独的JSP页面,那么如何跟踪哪个页面链接至其它页面,以及在要更改一个页面的文件名或位置时该怎么做呢?

而且,在第2步检测到某个域中的错误时,如何重新显示带有一条错误消息的原始表单,但还要保留用户已填入的值呢?

Struts,一种开放源码“模型-视图-控制器”框架,通过帮助解决所有这些问题,从而使开发人员的工作更为轻松。

本文并不深入讨论MVC平台。

有关这方面的信息,请参阅MalcolmDavis所写的标题为”Struts,anopen-sourceMVCimplementation”的developerWorks文章。

您正在阅读的这篇文章讨论自Malcolm的文章发表以来对Struts所做的更改,包括Tiles库。

至于代码的安装过程,本文仅涉及JakartaTomcat4.0(Catalina)最小安装所需的步骤。

如果您没有使用Tomcat,请查阅手册以了解您的应用程序服务器。

Struts和Tiles的背景知识

CraigMcClanahan是ApacheTomcat项目的技术主管,他创立Struts项目以满足对这方面的渴望。

它作为“模型-视图-控制器”框架首选的并经过正式认可的开放源码实现,已经越来越流行了。

它以与交付产品一起分发的形式受到来自Sun和IBM的支持。

因为Craig积极参与Tomcat和Struts的开发工作,所以Struts将继续与JSP和Servlet规范的参考实现高度兼容,进而与所有J2EE应用程序服务器高度兼容。

MalcolmDavis的有关Struts的developerWorks文章涵盖了整个Struts0.9的功能;为了简短起见,我将只讨论对Struts0.9的更改以及他未涉及的Struts主题。

目前的Struts发行版本是1.0.2,但自2002年3月19日起有一个标记为1.1-b1的beta测试版可供使用。

因为beta测试版表示编码工作已经完成,在这种情况下只进行错误修正,所以极有可能1.1的最终版本不久就将面市,而在Struts邮件列表上已经有这种呼声。

因此,任何利用Struts的新项目很可能都将1.1代码作为基础,而这就是我将讨论的内容。

自版本0.9以来对Struts框架的有用添加包括经改进的表单验证功能、可以通过XML声明来指定表单元素和可以动态地定义bean特性。

然而,最重要的添加可能是将Tiles模板库合并到Struts分发版中。

您是否曾希望用一种更简便的方法创建一组页面(或可能是整个应用程序),并且每个页面上的用户界面保持一致,有相同的导航栏、页眉和页脚等等?

在含有较多内容的页面内显示多个类portlet的矩形内容的方法又如何?

在Tiles框架的帮助下,您可以完成这两项任务和其它更多任务。

通过定义屏幕和一组可嵌入在JSP页面中的标记的核心XML文件来插入静态和动态内容,Tiles框架允许您构建组件化的视图,并按您的希望来组装它们,从而有助于提高灵活性、可重用性、一致性和可维护性。

Struts和Tiles之间交互良好,因为这两个项目的开发人员已经认识到这两者具有互补性,所以决定让这两者共同协作。

开发人员可以指定Tiles页面定义作为Struts操作的目标视图(按照Struts的说法是一个forward)。

因为Struts和Tiles都遵循JSP标记库规范,所以可以在JSP页面中将Struts标记和Tiles标记相互混合在一起。

您可能渴望尝试Tiles框架,并确切地了解它可以做些什么。

如果您希望在自己安装本文的示例前先了解这些示例的运行情况,可以看看它们在带有嵌入式Tomcat的JBoss服务器上是怎样运行的。

Struts和Tiles是用于Web开发的辅助工具,所以您需要设置一个Web容器对它们进行实验;将Tomcat设置为您的容器,然后设置Struts和Tiles包,我会在下一节中循序渐进地讲述这一过程。

这些指导信息还向您展示了如何安装本文的样本代码。

一旦完成了这一切,您就准备好继续本文。

示例1应用程序没有利用Struts和Tiles;它演示了以页面为中心的方法。

通过将它与示例2比较,您会看到Struts和Tiles将如何极大地提高您的Web开发的结构化程度和可管理性。

最后,示例3演示了将功能添加到一个使用Struts和Tiles的、并且已经启动且正在运行的Web应用程序中是多么地简单。

安装Struts和Tiles

在带有J2SE1.4SDK、Ant1.4.1、Tomcat4.0.3和Struts1.1-b1的Linux机器上,下列指导信息已经经过了测试。

如果因这些软件包的版本不同而遇到困难,您可能需要使用上面所指定的版本,以便开始了解Struts和Tiles的设置和开发。

转至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是如何工作的,或许最好使用绝对路径。

输入antdeploy。

这将把第一个示例应用程序构建到WAR文件中,以备部署,然后将它部署至Tomcat。

如果得到一个指出无法找到Ant的错误,请参阅“安装Struts和Tiles”一节中的第3步,并确保您的路径环境变量包含Ant。

将Web浏览器指向http:

//localhost:

8080/ex1。

您应该会看到“Hello,World”页面。

示例1Web应用程序非常简单,它演示了常见的Web应用程序功能。

几乎所有应用程序(也包括这个最简单的应用程序)都要求所有页面具有一致的用户界面。

通常,这意味着所有页面都有公共的徽标、顶部栏、上部或左侧导航栏、主体和页脚。

在示例1中,我有意对每一页面中的公共项进行硬编码,以便说明这一点。

Web应用程序开发的新手一般会通过将现有代码复制粘贴到新文档中来添加新的功能页面。

很容易预见这种方法难以应付将来的变化。

随着每一次增加新内容,更改诸如菜单、徽标等公共页面元素的过程花的时间会更长,更容易出错。

很明显,复制粘贴方法对于任何具有大量页面的应用程序是一个糟糕的模型。

敏锐的读者会认识到JSP技术提供了包括来自其它servlet和页面中的内容的功能。

我们为什么不可以仅仅使用

include/>标记来合并公共元素呢?

这肯定会使那些元素更易于更改。

如果您需要更改菜单,只要更改包含菜单的文件。

所有其它页面只需使用

include/>标记就可以得到菜单中的内容,这样这些页面可以自动获得对菜单的更改。

但是,当需要更改实际布局或需要重新组织文件和目录时,这种方法有不足之处。

当决定更改以页面为中心模型下的布局时,必须对每个单个页面进行更改,因为即使对公共元素的访问已做了集中化处理,但仍然是由每个页面中的HTML代码来描述布局本身(有哪些是元素及它们的位置)。

同样地,当决定更改包含了某个公共元素内容的文件的文件名或位置时,必须逐个更改使用该元素的文件。

什么原因呢?

因为每个文件根据固定的物理文件名,而不是逻辑对象名来查找每个公共元素。

因此,必须更新每个对物理文件名的引用。

Tiles视图组件可以解决这些问题。

如果更进一步地研究index.jsp和form1.jsp(这两个JSP文件构成该应用程序),会发现另一个缺点:

错误处理相当笨拙。

错误处理代码是在form1.jsp中,其中我必须重复显示代码,并添加代码以插入用户在前一表单屏幕(index.jsp)中输入的值。

如果用户概要信息域曾更改过,或者如果输入表单的显示曾更改过,就必须更新这两个地方中的代码。

我可以将form1.jsp的错误处理部分与index.jsp中的初始表单显示结合在一起,但在初始表单装入时,我仍将需要做额外的工作以把域值设置成空字符串,并且我仍将需要有一个物理文件名来表示用户概要信息的最终静态显示,这意味着发生更改时,该应用程序结构仍是很脆弱的。

Struts表单自动化可以解决这种笨拙的表单处理缺陷。

Hello,World:

经改进的新的应用程序

现在,让我们研究刚才看到的Web应用程序示例中的Struts和Tiles版本。

请执行下列步骤:

转至EX2_INSTALL目录。

编辑build.xml文件,为struts.install.dir和tomcat.install.dir填写适当的值。

输入antdeploy。

这将把第二个示例应用程序构建到WAR文件中以备部署,然后将它部署至Tomcat。

如果看到关于无法复制文件的错误,请检查第2步以确保正确设置了struts.install.dir和tomcat.install.dir。

将Web浏览器指向http:

//localhost:

8080/ex2。

您应该会看到“Hello,World”页面。

如果您已看过EX2_INSTALL目录,您很可能会说:

“这里要做些什么呢?

有好多文件。

”与大多数强调更有序和结构化程度更高的技术一样,对于Struts和Tiles,在一开始需要在管理文件上花些工夫。

对于只有少许页面的小项目,这一额外开销可能微不足道。

然而,随着项目变大,Struts和Tiles方法逐渐会显示其优越性。

让我们一点点地体会吧!

这里我不想讨论EX2_INSTALL/src/WEB-INF/web.xml;尽管这个文件实质上与其示例1中相对应的文件不同,而且大多数行都是样板,但理解这些设置对于着手开发并不太重要。

在EX2_INSTALL/src/WEB-INF/struts-config.xml中,自先前有关Struts的文章以来重要的更改有在节中DynaActionForm的使用及在节中tile作为目标的使用。

在Struts的以前版本中,您必须为每个所使用的表单bean定义一个Java类。

仅当不同的HTML表单共享域时,才可以在这些表单之间共享表单bean。

总之,每个表单bean需要有一个Java类是一个非常麻烦的要求。

现在,您可以在struts-config.xml文件中指定表单bean的特性,而且是迅速地!

不必有保存Java类的单独文件,就能自动创建这种bean。

象处理Hashtable对象一样,用值的强类型对象来处理动态表单bean。

至于操作映射,一旦确定将Tiles库合并到Struts分发版之后,那么指定一个tile作为目标,就完全是增加一项逻辑而已。

您会在概要信息表单的操作映射中看到tile目标(tile.profileInput和tile.profileOutput)。

在input属性和path属性中指定tile。

注:

可以指定tile目标弥补了我在分析以页面为中心的模型中提到的更改文件名和位置中的缺陷:

tile目标是虚拟名称或逻辑名称,而不是物理名称。

标记中指定tile。

您可以将定义命名为任何希望的名称,而且name属性不必是与path属性匹配的子字符串。

我为第一个定义选择了名称rootLayout,以表明它是应用程序中的页面要遵循的基本布局。

注:

路径是/tiles-layout/rootLayout.jsp。

如果查看EX2_INSTALL/src/web下的/tiles-layout/rootLayout.jsp,您会看到这种布局是多么的简单整齐。

用户界面的设计人员会“爱上它”。

还请注意:

它不包含任何代码,所以用户界面设计人员在进行更改时不必担心破坏什么。

rootLayout.jsp中的

insert/>标记对应于tiles-defs.xml中rootLayout定义内的标记。

注:

每个

insertattribute="x"/>标记都有一个表示逻辑名称的属性。

每个逻辑名称映射至通过在tiles-defs.xml内的中使用标记指定的名称和值。

通过在rootLayout.jsp页面中使用逻辑名称,而非物理名称,并通过在tiles-defs.xml中统一物理名称,我们就可以更改文件名,并使项目文件系统的组织易于管理。

真正节省时间和适应性方面最显著的增强方面体现在布局的继承,这是Struts的另一个特性。

在tiles-defs.xml中,“Pagedefinitions”栏下面的节有两个页面:

tile.profileInput和tile.profileOutput。

这些名称是任意的,如果您不喜欢tile.前缀,可以不使用它(但是您使用的名称必须与struts-config.xml文件中指定的目标相匹配)。

这些名称应该与struts-config.xml中标记中的path属性匹配。

这些名称还应该与struts-config.xml中标记中的input属性匹配。

在开发用户界面时,标记中的extends属性是体现开发灵活性的地方。

通过指定主布局并扩展它,您不仅能灵活更改象topBanner、topMenu、panel1、panel2这样的公共元素及其它组件,还能随意地将不同元素放在页面上及更改它们的位置。

例如,您可以添加panel4(一个tile)以在页面左侧的panel2下显示本地天气。

只要天气代码不需要用户的任何输入或与页面上的其它组件交互,您就可以添加panel4而不必对应用程序业务逻辑做任何更改,甚至不必更改除rootLayout.jsp以外的JSP页面。

Struts和Tiles更复杂的使用

篇幅所限,不允许我再深入讨论Struts和Tiles包其它一些实用的方面,但我真的想简要地谈一下,这样您可以对Struts和Tiles可以做些什么有所了解。

如果有足够的需求,可能这些内容会是将来文章的主题。

您会在本文的两个示例中注意到,我编码了名、姓、喜欢的颜色和出生日期等基本验证。

我所采用的这类简单验证实际上可由Struts通过使用它的格式验证来执行,这样节省了花在编码Java语句的时间。

例如,检查是否是空字符串、检查字符串是否与日期相匹配或检查是否与其它某些正则表达式匹配等,这都是可行的。

您会发现将格式验证用作第一级检查会是十分方便的,在检查是否符合更复杂的业务逻辑规则之前,程序可用第一级检查来消除一些明显错误。

Struts提供了一个验证器包,可以通过WEB-INF目录中的validator.xml描述符来配置该包。

在这两个示例中我没有包含该验证器包;如果您想试一下,它包含在Struts1.1-b1包中。

Struts和Tiles包的另一个有用特性是与容器管理的安全性相集成。

很多人都在使用诸如IBMWebSphere或JBoss之类的应用程序服务器。

这些服务器通过处理安全性中所涉及的许多日常任务使认证和授权更便捷,让您摆脱必须对它们进行的编码。

Struts允许您根据用户角色有条件地向不同用户显示bean数据的不同位,这可以通过自动查询容器来决定。

同样地,Tiles框架允许您根据用户角色有条件地向不同用户显示不同的视图组件,这也是通过自动查询容器来决定的。

我在自己的应用程序中使用这些特性向管理员、常规用户或guest用户显示不同的菜单。

最后要说明,我在示例中没有谈到国际化,但对于那些构建将来最终要以多种语言发布的大型应用程序的人来说,这实际是一个重要方面。

Struts让您创建消息资源特性文件,这些文件指定标签、标题和其它输出的文本。

如果您用几种不同语言的输出填入消息资源特性文件的话,只要简单更改语言设置就能将所有窗口构件和硬编码的文本更改成适当语言,甚至在应用程序运行中也可以更改。

未来的方向

Struts和Tiles将走向何方呢?

刚出现的两个更改必定会使Struts和Tiles更加有用。

第一个更改是工作流管理系统。

您很可能处理过许多多步骤的业务过程;目前,在Web应用程序中对它们进行编码可以是一个主要的麻烦,因为您必须协调不同的步骤,而每一步骤都是Java类中的一个单独方法或是一个单独的servlet或JSP页面。

商业市场中的工具通过使开发人员能对多步骤的业务过程进行建模,然后自动生成Java代码作为进一步开发的基础,来帮助管理这些过程。

Struts工作流管理系统将提供类似的功能,使开发人员能够编写业务过程的脚本,这些过程在Web应用程序中跨多个页面,并指定这些页面如何通过核心的基于规则的系统进行交互。

另一个同样有望即将出现的更改是将Struts标记合并到JSP标准标记库(JSPStandardTagLibrary)中,这个库是Jakarta项目,它试图产生一个有用的定制标记集合,从而简化并加快用JSP页面编写Web应用程序的开发。

其中的意义在于:

Web应用程序的开发将比过去任何时候都更容易,因为您可以通过使用定制标记的标准机制得到一个在此基础上做进一步开发的预先编写好的代码库。

而且,JSPSTL标准中这个项目的合并甚至确保了Struts和Tiles功能更为广泛的分发和可用,这意味具有这种技能的开发人员在众多项目中大有作为,而且公司更加容易获得开发Web应用程序的熟练人才。

StrutsandTilesaidcomponent-baseddevelopment

In1994,whenmainstreamadoptionofWebapplicationdevelopmenthadonlyjustbegun.BecauseoftheimmaturityoftheWeb,developershadfewtoolstohelpthembuildWebsoftware.Asaresult,applicationsmixedHTMLcodewithapplicationlogicinadhocsolutions.Understandably,UIdesignchangesandbusinesslogicupdateswerebothdifficultandexpensiveinlargeapplicationsbecausethetightlycoupledpresentationandlogicobfuscatedbothelements,leadingtoerrorsandslowprogress.Also,themixedcodenecessitatedknowledgeofUIdesignonthepartofdevelopersoracloseworkingrelationshipbetweendeveloperandgraphicdesignerthatoftenmadeforinefficientuseoftime.

TheintroductionofJSPtechnologyandtagsamelioratedthechangeproblemsomewhatbecauselogicanddisplaycouldbeseparated.UIdesignerscouldproductivelyworkondisplaywhiledeveloperscouldfocusonlogic.However,thisapproachstillsufferedshortcomings.Notably,certainoperations--commonones,too--werestillhardtodevelop.Thevalidatingformistheclassicexample.Asmanyofyouknow,theprocessofformvalidationgoessomethinglikethis:

Displayform;wa

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

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

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