您所在的位置:开发 > 教程 > 使用多个Struts配置文件(6)

使用多个Struts配置文件(6)

2006-11-14 11:15 Brett McLaughlin Sr. 51CTO.com 我要评论(0) 字号:T | T
一键收藏,随时查看,分享好友!

把大的配置文件分成更小的、更具可管理性的部分,可以让Struts应用程序更容易组织和维护。在这份教程中,McLaughlin介绍了如何把Apache Struts设置成使用多个配置文件。本教程回顾了Struts的配置,逐步介绍了分而治之的配置策略的执行,并介绍了一些额外的配置清理选项。

AD:

使用多个消息资源束

这是另外一个 Struts 101 配置任务。在许多 Struts 书籍中都会找到它,包括 参考资料 中列出的 Struts Cookbook。同样,在许多书籍中都会有它,因为它是一个非常好的想法。

在 struts-config.xml 文件中已经看到过 message-resources 元素:

<message-resources parameter="BankingMessageResources" null="false"/>

但是,不太有人知道:在 struts-config.xml 中这些元素可以放置不止一个。 例如,下面是非常合法的配置片断:

<message-resources parameter="BankingMessageResources" null="false"/>
<message-resources parameter="BankingHelpResources" key="help"/>
<message-resources parameter="BankingGuestUserResources" key="guest"/>

这里面的第一个元素(没有 key 属性)成为默认的资源集。所以所有的 JSP 和 servet 都可以通过 servlet 上下文访问这组资源。但是,通常是应用程序中的大块部分才需要资源。例如,前面的代码示例中包含的一组资源只针对应用程序的帮助部分(消息、图标、出错、字段标签等等),而且另一组资源特定于访客(没有登录的用户)。在核心应用程序、系统的帮助部分和访客屏幕之间,没有太多共享的信息。所以不必把所有这些资源混合到一个文件中,可以把它们分解到三个独立的文件中。

但是,比起使用三个(或多个)struts-config.xml 文件,这略有不同。在多个 stuts-config.xml 的情况下,多个文件实际上合并成一组配置数据。在多个资源束的情况下,多个文件没有 合并。相反,如果 JSP 页面想使用非默认的资源集,就必须指出要使用哪个资源(在这个示例中是 BankingMessageResources 包)。要做到这一点,需要使用 message 标记,它是 bean 标记库的一部分。

所以,假设:

◆把 bean 标记库与前缀 bean 关联。
◆在 BankingHelpResources 包中有一个属性的键是 help.label.seeAlso。

要引用这个属性,应当在 JSP 中使用以下行:

<bean:message bundle="help" key="help.label.seeAlso" />

额外的属性 bundle 允许指定要使用的非默认包,剩下的标记正常操作,就像访问默认包中的键一样。

您可能还注意到:即使有多个包,示例也只使用了一个特定于包的前缀:与帮助有关的资源在 BankingHelpResources 中,但是键仍然用 help 作为前缀,就像在 help.label.seeAlso 中那样。一开始这看起来可能是多余的,为什么在这个键只在特定于 help 的包中才可用的时候还用 help 做前缀呢?

回答是:一切为了文档:

◆这样会让键的目的更加清晰:其他程序员就不必猜想这个键是做什么的(如果键只是 label.seeAlso,可能就不那么清楚了)。
◆如果包的名称本身不太有说明性(可能有一些没有读过这份教程的初级程序员把它改成了BankingExtraResources),那么标签仍然可以帮助识别出键的目的。
◆如果想把资源从 BankingHelpResources 转移到另一个文件,那么键仍然会保留清晰性。

应当一直采用清楚的命名方式,不管您认为变量或键的上下文或使用方式让它们的目的有多么清楚。

结束语

尽管我是一个程序员(不管是因为业务还是因为选择),但是我在配置、设置、部署和管理应用程序上,要花费比实际编码更多的时间。我并非特别关心这个(实话实说,我一点儿也不喜欢它),但是它是生活的现实。因此,像这份教程所示的解决方案会让我的生活更轻松。只需花一点儿时间把 Struts 应用程序的配置文件分解,但结果绝对物有所值。不会有单点故障:不会只有一个文件,不会只有一个程序员能理解这个文件,也不会只有一个服务器保存这个文件;分解了可能的故障点,降低了出现严重错误的机会。

而且,就像我前面说过的,至少多睡几夜好觉也是值得的。

下载

Demo: Struts Online Banking application

关于作者

Brett McLaughlin 从 Logo 时代(还记得那个小三角吗?)就从事计算工作。最近几年,他已经成为 Java 技术和 XML 社区最著名的作者和程序员之一。他为 Nextel Communications 工作过,实现了复杂的企业系统;在 Lutris Technologies 工作时,实际编写了应用服务器;最近是在 O'Reilly Media, Inc. 工作,在这里他继续编写和编辑这方面的图书。他的最新大作 Java 1.5 Tiger: A Developer's Notebook 是关于最新版本 Java 技术的第一本书,他的经典作品 Java and XML 一直是在 Java 语言中使用 XML 技术方面的权威作品之一。

(责任编辑 火凤凰 sunsj@51cto.com  TEL:(010)68476636-8007)


内容导航

分享到:

网友评论TOP5

查看所有评论(

提交评论

  1. 专题:JVM编程语言,你的选择?
  2. 宅男程序员给老婆课程之11:域模型

文章排行

本月本周24小时

热点专题

更多>>

读书

数据挖掘:概念与技术
本书第1版曾被KDnuggets的读者评选为最受欢迎的数据挖掘专著,是一本可读性极佳的教材。它从数据库角度全面系统地介绍了数据挖掘

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 移动互联网生活门户 灵客风LinkPhone