【问题标题】:java web app decorating/includes issuesjava web 应用程序装饰/包含问题
【发布时间】:2010-09-21 21:25:01
【问题描述】:

背景:我们有一个系统,它是在 2002-2003 年期间使用基于 Java 的旧 CMS 编写的。我们希望继续使用我们的新产品,使用 tomcat、stripes 和 sitemesh。我们已经将导航、布局、“pod”、js、css 等从旧的 CMS 中移出到我们的一些新应用中,因此我们具有一致的外观和感觉。

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

到目前为止,我们想出的最好的方法是制作一个相当标准的 sitemesh 装饰器,它使用 c:import 来获取它需要的东西,并将其插入。这个解决方案有一些网络开销,可能会使其陷入困境并且引入故障点。我们也看过 ,但这似乎只是与上下文相关的。我们可以使用 c:import 并将其指向 localhost,这似乎是迄今为止最好的解决方案。

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

【问题讨论】:

    标签: java jsp jakarta-ee stripes sitemesh


    【解决方案1】:

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

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

    1. 您的资源是本地的 - 没有网络开销
    2. 您可以控制资源的更新。

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

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

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

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      我们已经使用 Sitemesh 多年,对此我的感受很复杂。

      我更喜欢编写标准的 JSP 标记文件(.tag 或 .tagx)而不是使用 applydecorator。我认为随着标签文件的出现,applydecorator 标签实际上已经过时了,但是太多的 Sitemesh 用户没有注意到。

      几乎我们所有的 Sitemesh 使用都是这种类型。我们有一些通用的页面模板,我们的 JSP 页面将明确地称为布局。 “使用标准布局,这里是导航菜单,这里是页面正文。”标记文件与此功能完全相同,但它们是标准化的,受任何 J2EE Web 工具支持,并且内置于容器而不是其他依赖项。

      为了真正修饰页面,JSP 页面本身根本不引用 Sitemesh,我认为这在高层次上是有意义的,但我仍然不喜欢重新解析整个页面。

      第二个问题真的不是 Sitemesh 的错;考虑到它必须使用的 Servlet API,我不知道它还能做什么。但这确实让我想知道基于 DOM 的替代基于流的 Servlet API 是否有价值。换句话说,与其让 servlet 将其输出写入流,不如将节点添加到树中会怎样?这将强制执行格式良好的输出,并降低像 Sitemesh 那样进行结构转换的成本,或者将输出动态编码为不同的格式,如 XHTML、HTML 或 JSON。

      【讨论】:

        猜你喜欢
        • 2011-04-20
        • 1970-01-01
        • 2010-09-18
        • 2016-03-29
        • 1970-01-01
        • 2014-05-12
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多