gpt4 book ai didi

java web 应用程序装饰/包含问题

转载 作者:行者123 更新时间:2023-11-30 05:17:28 25 4
gpt4 key购买 nike

背景:我们的系统是在 2002-2003 年期间使用基于 Java 的较旧 CMS 编写的。我们希望使用 tomcat、stripes 和 sitemesh 继续推进我们的新功能。我们有导航、布局、“pods”、js、css 等,我们从旧的 CMS 中取出这些内容并将其放入一些新应用程序中,以便我们拥有一致的外观和感觉。

我们现在需要某种解决方案来消除所有正在发生的代码重复。我们的应用程序目前在同一个虚拟机上运行,​​但这可能会改变。我们需要一种方法让所有的 tomcat 实例访问一些通用元素(这些元素可能/可能不需要做一些服务器端的事情)。

到目前为止,我们想出的最好的方法是制作一个相当标准的 sitemesh 装饰器,它使用 c:import 来获取所需的内容,然后将其正确插入。此解决方案有一些网络开销,可能会使其陷入困境,并且引入一个失败点。我们也研究了 <%@ include file="/something.jsp"%> 但这似乎只是与上下文相关的。我们可以使用 c:import 并将其指向 localhost,这似乎是迄今为止最好的解决方案。

是否有其他模板/装饰框架(Tiles?)可以使这变得更简单?我们还缺少什么?

最佳答案

我不太确定你想在这里做什么。我的解释是:您有许多资源想要在多个应用程序中重用。您不希望在所有应用程序中重复这些文件,因为这会导致很难保持应用程序之间的一致性。

如果这是您的问题,我建议您将公共(public)资源保存在 jar 文件中。这给您带来了几个优点:

  1. 您的资源位于本地 - 无网络开销
  2. 您可以控制资源的更新。

第 2 个示例:将常用页面布局保存在 page-layouts-1.x.jar 中。您继续对页面布局进行小版本发布,这不会影响使用它的应用程序 - 它们是直接替代品。有一天,您决定完全重新设计您的应用程序并发布 page-layouts-2.0.jar。这需要对使用它的应用程序进行一些重写。现在,如果应用程序捆绑页面布局,而不是将它们保存在服务器上的共享类加载器中,那么迁移到 2.0 布局就不是一件全有或全无的事情。您可以一次迁移一个应用程序以使用 2.0 布局,而其他应用程序仍使用 1.x 布局。

我们使用 JSF 和 Facelets 非常成功地做到了这一点。

您可能想看看Weblets 。我不知道 SiteMesh 或 Tiles 是否获得了从类路径提供资源的直接支持,但我认为您可以调整它们来做到这一点。

希望对你有帮助

关于java web 应用程序装饰/包含问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/282332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com